Ошибка org.deeplearning4j.exception.dl4jinvalidinputexception, потому что NIN не соответствует длине последовательностиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка org.deeplearning4j.exception.dl4jinvalidinputexception, потому что NIN не соответствует длине последовательности

Сообщение 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")


Подробнее здесь: https://stackoverflow.com/questions/794 ... in-does-no
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»