我与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)。有什么问题?
答案 0 :(得分:0)
根据对类似问题的回答,可以考虑这种方法: neuralnet prediction returns the same values for all predictions
当您使用神经网络获得奇怪结果时,首先要考虑的是归一化。你的数据必须标准化,否则,是的,训练会导致NN偏斜,这会产生相同的结果,这是一种常见的症状。
查看您的数据集,有值>&gt; 1,这意味着它们全部由NN处理,基本相同。其原因在于传统上使用的响应函数(几乎)在0左右的某个范围之外是恒定的。
在将数据输入神经网络之前,始终将数据标准化。