Я хочу научить NN некоторым временным рядом с двумя функциями, используя Deeplearning4j в Котлине. Я использую один слой LSTM, временной ряд длиной 5, и я выбрал размеры партии 16, поэтому форма обучающих данных составляет [16, 5, 2]. Для вывода я выбираю [1, 5, 2], так как я заинтересован только одним значением. Это код для инициализации: < /p>
@Test
fun testRandomLearning() {
// Create NN
val batchSize = 16
val sequenceLength = 5
val numFeatures = 2
val config = NeuralNetConfiguration.Builder()
.seed(seed.toLong())
.activation(Activation.RELU)
.weightInit(org.deeplearning4j.nn.weights.WeightInit.VAR_SCALING_NORMAL_FAN_AVG)
.updater(org.nd4j.linalg.learning.config.Adam(0.001))
.list()
.layer(0, LSTM.Builder()
.nIn(numFeatures)
.nOut(64)
.activation(Activation.TANH)
.build()
)
.layer(1, RnnOutputLayer.Builder()
.nIn(64)
.nOut(1)
.activation(Activation.IDENTITY)
.lossFunction(LossFunctions.LossFunction.MSE)
.build()
)
.build()
val model = MultiLayerNetwork(config).apply {
init()
setListeners(ScoreIterationListener(1000))
}
val numBatches = 10
// Create random training data
val dataList = (0 until numBatches).map {
val features: INDArray = Nd4j.rand(*longArrayOf(batchSize.toLong(), sequenceLength.toLong(), numFeatures.toLong()))
val labels: INDArray = Nd4j.rand(*longArrayOf(batchSize.toLong(), 1L))
org.nd4j.common.primitives.Pair(features, labels)
}
val iterator: DataSetIterator = INDArrayDataSetIterator(dataList, batchSize)
model.fit(iterator) // 2 epochs
model.fit(iterator)
// Check model
val input = Nd4j.rand(*longArrayOf(1, sequenceLength.toLong(), numFeatures.toLong()))
val output = model.output(input) //
Однако model.output (input), ввод, ввод, что одно из учебных данных, за исключением размера пакета, вызывает исключение, которое я не понимаю: < /p>
org.deeplearning4j.exception.DL4JInvalidInputException: Received input with size(1) = 5 (input array shape = [1, 5, 2]); input.size(1) must match layer nIn size (nIn = 2)
at org.deeplearning4j.nn.layers.recurrent.LSTMHelpers.activateHelper(LSTMHelpers.java:171)
< /code>
input.size(1) - длина последовательности, и в соответствии с этим сообщением оно должно соответствовать значению, передаваемому NIN в слое, но NIN должно быть количеством функций, которые явно 2. У меня есть некоторое более глубокое недопонимание здесь?
Используемые версии: < /p>
implementation("org.deeplearning4j:deeplearning4j-core:1.0.0-M2.1")
implementation("org.nd4j:nd4j-native-platform:1.0.0-M2.1")
Подробнее здесь: https://stackoverflow.com/questions/794 ... in-does-no
Ошибка org.deeplearning4j.exception.dl4jinvalidinputexception, потому что NIN не соответствует длине последовательности ⇐ JAVA
Программисты JAVA общаются здесь
1738308032
Anonymous
Я хочу научить NN некоторым временным рядом с двумя функциями, используя Deeplearning4j в Котлине. Я использую один слой LSTM, временной ряд длиной 5, и я выбрал размеры партии 16, поэтому форма обучающих данных составляет [16, 5, 2]. Для вывода я выбираю [1, 5, 2], так как я заинтересован только одним значением. Это код для инициализации: < /p>
@Test
fun testRandomLearning() {
// Create NN
val batchSize = 16
val sequenceLength = 5
val numFeatures = 2
val config = NeuralNetConfiguration.Builder()
.seed(seed.toLong())
.activation(Activation.RELU)
.weightInit(org.deeplearning4j.nn.weights.WeightInit.VAR_SCALING_NORMAL_FAN_AVG)
.updater(org.nd4j.linalg.learning.config.Adam(0.001))
.list()
.layer(0, LSTM.Builder()
.nIn(numFeatures)
.nOut(64)
.activation(Activation.TANH)
.build()
)
.layer(1, RnnOutputLayer.Builder()
.nIn(64)
.nOut(1)
.activation(Activation.IDENTITY)
.lossFunction(LossFunctions.LossFunction.MSE)
.build()
)
.build()
val model = MultiLayerNetwork(config).apply {
init()
setListeners(ScoreIterationListener(1000))
}
val numBatches = 10
// Create random training data
val dataList = (0 until numBatches).map {
val features: INDArray = Nd4j.rand(*longArrayOf(batchSize.toLong(), sequenceLength.toLong(), numFeatures.toLong()))
val labels: INDArray = Nd4j.rand(*longArrayOf(batchSize.toLong(), 1L))
org.nd4j.common.primitives.Pair(features, labels)
}
val iterator: DataSetIterator = INDArrayDataSetIterator(dataList, batchSize)
model.fit(iterator) // 2 epochs
model.fit(iterator)
// Check model
val input = Nd4j.rand(*longArrayOf(1, sequenceLength.toLong(), numFeatures.toLong()))
val output = model.output(input) //
Однако model.output (input), ввод, ввод, что одно из учебных данных, за исключением размера пакета, вызывает исключение, которое я не понимаю: < /p>
org.deeplearning4j.exception.DL4JInvalidInputException: Received input with size(1) = 5 (input array shape = [1, 5, 2]); input.size(1) must match layer nIn size (nIn = 2)
at org.deeplearning4j.nn.layers.recurrent.LSTMHelpers.activateHelper(LSTMHelpers.java:171)
< /code>
input.size(1) - длина последовательности, и в соответствии с этим сообщением оно должно соответствовать значению, передаваемому NIN в слое, но NIN должно быть количеством функций, которые явно 2. У меня есть некоторое более глубокое недопонимание здесь?
Используемые версии: < /p>
implementation("org.deeplearning4j:deeplearning4j-core:1.0.0-M2.1")
implementation("org.nd4j:nd4j-native-platform:1.0.0-M2.1")
Подробнее здесь: [url]https://stackoverflow.com/questions/79402025/error-org-deeplearning4j-exception-dl4jinvalidinputexception-because-nin-does-no[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия