【问题标题】:Why does prediction using nn.predict in deepnet package in R return constant value?为什么在 R 的 deepnet 包中使用 nn.predict 进行预测会返回常量值?
【发布时间】:2015-08-17 12:35:58
【问题描述】:

我与The CIFAR-10 dataset 合作。这是我准备数据的方式:

library(R.matlab)
A1 <- readMat("data_batch_1.mat")
A2 <- readMat("data_batch_2.mat")
A3 <- readMat("data_batch_3.mat")
A4 <- readMat("data_batch_4.mat")
A5 <- readMat("data_batch_5.mat")
meta <- readMat("batches.meta.mat")
test <- readMat("test_batch.mat")
A <- rbind(A1$data, A2$data, A3$data, A4$data, A5$data)
Gtrain <- 0.21*A[,1:1024] + 0.71*A[,1025:2048] +0.07*A[,2049:3072]
ytrain <- c(A1$labels, A2$labels, A3$labels, A4$labels, A5$labels)
Gtest <- 0.21*test$data[,1:1024] + 0.71*test$data[,1025:2048]     +0.07*test$data[,2049:3072]
ytest <- test$labels
x_train <- Gtrain[ytrain %in% c(7,9),]
y_train <- ytrain[ytrain %in% c(7,9)]==7
x_test <- Gtest[ytest %in% c(7,9),]
y_test <- ytest[ytest %in% c(7,9)]==7

我训练深度神经网络:

library(deepnet)
dnn <- dbn.dnn.train(x_train, y_train, hidden = rep(10,2),numepochs = 3)

我做出预测

prednn <- nn.predict(dnn, x_test)

它返回一个填充了一个值的向量(在这种情况下为 0.4603409,但对于不同的参数,它总是在 0.5 左右)。怎么了?

【问题讨论】:

标签: r neural-network deep-learning


【解决方案1】:

基于this answer to similar question也许考虑这种方法: neuralnet prediction returns the same values for all predictions

当您使用神经网络得到奇怪的结果时,首先要考虑的原因是归一化。您的数据必须进行归一化,否则,是的,训练会导致 NN 偏斜,这将始终产生相同的结果,这是一种常见症状。

查看您的数据集,有值 >>1,这意味着 NN 对它们的处理基本相同。其原因是传统上使用的响应函数(几乎)在 0 左右的某个范围之外是恒定的。

始终在将数据输入神经网络之前对其进行规范化。

【讨论】:

    猜你喜欢
    • 2019-05-28
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多