Есть ли способ остановить ухудшение нейронной сети? - PullRequest
0 голосов
/ 08 ноября 2019

Я видел, смогу ли я реализовать новый способ обучения нейронной сети с удвоением числа за меньшее время. И я решил это. Есть счетчик поколений. Все идет ко дну, сеть тренируется за 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

.
...