dl4j MultiLayerNetwork не имеет конструктора, который принимает NeuralNetConfiguration (версия 0.9.1)

Я пытаюсь написать простую Classifier пример в Scala и глядя на dl4j примеры NeuralNetConfiguration экземпляр создается (используя конструктор), а затем передается в качестве аргумента MultiLayerNetwork конструктор класса. Тем не менее, глядя на исходный код, 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())

2 ответа

Решение

Вы должны следовать за примерами ближе. NeuralNetConfiguration() - это ваши базовые параметры, затем вы перечисляете свои слои (посмотрите на любой из примеров) и завершаете построение таким образом. Это даст вам многослойную конфигурацию.

MultiLayerNetwork класс берет пример MultiLayerConfiguration класс в качестве параметра. Вы можете взглянуть на Javadocs. Вы можете создать MultiLayerConfiguration пример следующим образом;

MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder();

На самом деле, когда вы звоните getConf из MultiLayerConfiguration, это возвращает NeuralNetConfiguration, Когда вы смотрите на документы, вы видите, что MultiLayerConfiguration.Builder это вложенный класс MultiLayerConfiguration и подкласс MultiLayerConfiguration.Builder является NeuralNetConfiguration.ListBuilder, Для получения дополнительной информации вы можете прочитать это.

РЕДАКТИРОВАТЬ Я

Когда вы используете DL4J в Scala, просто удалите обозначения типов. Например;

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

Это должно работать. Пожалуйста, дайте мне знать по любым вопросам, я надеюсь, что это поможет!

Другие вопросы по тегам