为什么在R中的deepnet包中使用nn.predict进行预测会返回常量值?

时间:2015-06-03 10:40:44

标签: r neural-network deep-learning

我与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)。有什么问题?

1 个答案:

答案 0 :(得分:0)

根据对类似问题的回答,可以考虑这种方法: neuralnet prediction returns the same values for all predictions

  

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

     

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

     

在将数据输入神经网络之前,始终将数据标准化。