预先感谢您的任何帮助。我正在尝试实现一个深度学习神经网络来预测许多变量(一种多元非线性回归)。作为第一步,我正在查看 R 中的 Darch 包并处理中的代码片段
http://cran.r-project.org/web/packages/darch/darch.pdf
当我从 p 10 运行以下代码时,它似乎在“异或”上进行训练,然后生成的神经网络似乎无法学习该函数。它要么将 (1,0) 模式或 (0,1) 模式学习为真,但不能同时学习两者,有时还学习 (1,1) 模式,这应该是假的。我的理解是,这类网络应该能够学习几乎任何功能,包括对于初学者的“排他或”:这不是由原始反向传播工作解决的吗,该网络在微调中使用它。我想我可能会遗漏一些东西,所以非常感谢任何建议或帮助?(我什至将 epoch 增加到 10,000,但无济于事。)
# Generating the datasets
inputs <- matrix(c(0,0,0,1,1,0,1,1),ncol=2,byrow=TRUE)
outputs <- matrix(c(0,1,1,0),nrow=4)
# Generating the darch
darch <- newDArch(c(2,4,1),batchSize=2)
# Pre-Train the darch
darch <- preTrainDArch(darch,inputs,maxEpoch=100)
# Prepare the layers for backpropagation training for
# backpropagation training the layer functions must be
# set to the unit functions which calculates the also
# derivatives of the function result.
layers <- getLayers(darch)
for(i in length(layers):1){
layers[[i]][[2]] <- sigmoidUnitDerivative
}
setLayers(darch) <- layers
rm(layers)
# Setting and running the Fine-Tune function
setFineTuneFunction(darch) <- backpropagation
darch <- fineTuneDArch(darch,inputs,outputs,maxEpoch=100)
# Running the darch
darch <- darch <- getExecuteFunction(darch)(darch,inputs)
outputs <- getExecOutputs(darch)
cat(outputs[[length(outputs)]])
## End(Not run)
#### Example results
> cat(outputs[[length(outputs)]])
0.02520016 0.8923063 0.1264799 0.9803244
## Different run
> cat(outputs[[length(outputs)]])
0.02702418 0.1061477 0.9833059 0.9813462