【发布时间】:2018-08-29 16:06:39
【问题描述】:
在过去的几天里,我开始使用 deeplearning4j 库,但遇到了一个问题。
我的测试和输入数据由 25 个二进制值组成。训练集包含 40 行。网络有 4 个输出值。我的目标是训练网络尽可能少地出错。
我尝试了不同的配置(也是 deeplearning4j 示例中介绍的配置),但我仍然无法将我的网络配置为具有令人满意的准确度水平。更重要的是分类真的很奇怪 - 例如网络的输出值就像 [0.31, 0.12, 0.24, 0.33]。
在我看来,正确的值应该是 [0, 0, 0, 1] 等。
我的神经网络配置:
private static final int SEED = 123;
private static final int ITERATIONS = 1;
private static final int NUMBER_OF_INPUT_NODES = 25;
private static final int NUMBER_OF_OUTPUT_NODES = 4;
private static final int EPOCHS = 10;
public static MultiLayerNetwork getNeuralNetwork() {
StatsStorage storage = configureUI();
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder().seed(SEED).iterations(ITERATIONS).learningRate(1e-1)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.weightInit(WeightInit.RELU).updater(Updater.ADADELTA).list()
.layer(0, new DenseLayer.Builder().nIn(NUMBER_OF_INPUT_NODES).nOut(60)
.activation(Activation.RELU).build())
.layer(1, new DenseLayer.Builder().nIn(60).nOut(50)
.activation(Activation.RELU).build())
.layer(2, new DenseLayer.Builder().nIn(50).nOut(50)
.activation(Activation.RELU).build())
.layer(3, new OutputLayer.Builder(LossFunctions.LossFunction.MCXENT).nIn(50).nOut(NUMBER_OF_OUTPUT_NODES)
.activation(Activation.SOFTMAX).build()).backprop(true).build();
MultiLayerNetwork network = new MultiLayerNetwork(conf);
network.init();
network.setListeners(new StatsListener(storage), new ScoreIterationListener(1));
DataSetIterator iterator = new ListDataSetIterator(createTrainingSet());
for (int i = 0; i < EPOCHS; i++) {
network.fit(iterator);
}
return network;
}
如果有任何帮助,我将不胜感激。 问候,
【问题讨论】:
-
欢迎加入 Gitter 上的 DL4J 开发支持社区:gitter.im/deeplearning4j/deeplearning4j
标签: java neural-network deeplearning4j