Я видел, смогу ли я реализовать новый способ обучения нейронной сети с удвоением числа за меньшее время. И я решил это. Есть счетчик поколений. Все идет ко дну, сеть тренируется за 50 эпох. Когда счетчик достигает нуля, он готов к тестированию. Затем я установил счетчик генерации на 10. К моему удивлению, он обучился мгновенно. Итак, я сразу установил счетчик генерации на 1000. Он также мгновенно тренировался. Но я был потрясен, увидев, что его результаты были на самом деле хуже, чем когда счетчик был только 10.
Я перепробовал все, что мог подумать. Единственное, о чем я мог думать, это каждый раз, когда он тренирует другое поколение, которое сбрасывает.
const trainingGenerations = 10
const epochsPerGeneration = 50
const input = tf.tensor2d([1, 2, 3, 4, 5], [5, 1])
const output = tf.tensor2d([2, 4, 6, 8, 10], [5, 1])
let model = tf.sequential()
model.add(tf.layers.dense({units: 1, inputShape: [1]}))
model.add(tf.layers.dense({units: 64, inputShape: [1]}))
model.add(tf.layers.dense({units: 1, inputShape: [64]}))
model.compile({loss: "meanSquaredError", optimizer: "sgd"})
for (let i = 0; i < trainingGenerations; i++) {
model.fit(input, output, {epochs: epochsPerGeneration, shuffle: true})
}
aInput = 6
aOutput = model.predict(tf.tensor1d([parseFloat(aInput)])).dataSync()[0]
alert(aOutput)
Мой вопрос: почему становится хуже и как я могу это исправить? Ожидаемый результат состоял в том, что это предупредит число 12 или кое-что близко к этому. Фактический результат состоит в том, что при 1000 поколениях он записывает что-то вроде 10 или 9, а при десяти поколениях он записывает 11,5 или 11,9
.