dl4j MultiLayerNetwork 没有采用 NeuralNetConfiguration 的构造函数(版本 0.9.1)

dl4j MultiLayerNetwork does not have a constructor that take NeuralNetConfiguration (version 0.9.1)

我正在尝试在 Scala 中编写一个简单的 Classifier 示例并查看 dl4j 示例创建一个 NeuralNetConfiguration 实例(使用构建器)然后作为MultiLayerNetwork class 构造函数的参数。但是查看源码,MultiLayerNetwork并没有任何以NeuralNetConfiguration为例的构造函数。看起来这些示例不是最新的。有谁知道在上一个 dl4j 版本中如何做到这一点?

我设法找到了解决方法,但我不确定这是正确的方法:

val conf = new NeuralNetConfiguration.Builder()
   .seed(seed) 
   .iterations(iterations) 
   .learningRate(1e-6f) 
   .optimizationAlgo(OptimizationAlgorithm.CONJUGATE_GRADIENT) 
   .l1(1e-1).regularization(true).l2(2e-4)
   .useDropConnect(true)
   .layer(hiddenLayer)
   .layer(outputLayer)
   .build()
val confs: util.List[NeuralNetConfiguration] = new util.LinkedList();
confs.add(conf)
val builder = new MultiLayerConfiguration.Builder()
builder.setConfs(confs)
val model: MultiLayerNetwork = new MultiLayerNetwork(builder.build())

MultiLayerNetwork class 将 MultiLayerConfiguration class 的实例作为参数。你可以看看javadocs。您可以按如下方式创建 MultiLayerConfiguration 实例;

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder();

实际上,当您调用 MultiLayerConfigurationgetConf 时,它 returns NeuralNetConfiguration。当您查看文档时,您会看到 MultiLayerConfiguration.Builder 嵌套在 MultiLayerConfiguration 的 class 中,而 MultiLayerConfiguration.Builder 的 subclass 是 NeuralNetConfiguration.ListBuilder。更多信息,您可以阅读this.

编辑我

当您在 Scala 中使用 DL4J 时,只需删除类型符号即可。例如;

val conf = new NeuralNetConfiguration.Builder()
val multiLayerNetwork = new MultiLayerNetwork(conf)

这应该有效。如有任何问题,请告诉我,希望对您有所帮助!

您需要仔细阅读这些示例。 NeuralNetConfiguration() 是您的基本参数,然后您列出您的层(仔细查看任何示例)并像这样完成构建器。这将为您提供 MultiLayerConfiguration。