Ich möchte ein neuronales Netzwerk mit der Funktion sine() trainieren.Train Neuronales Netzwerk mit Sinus-Funktion
Derzeit verwende ich diesen Code und die (cerebrum gem):
require 'cerebrum'
input = Array.new
300.times do |i|
inputH = Hash.new
inputH[:input]=[i]
sinus = Math::sin(i)
inputH[:output] = [sinus]
input.push(inputH)
end
network = Cerebrum.new
network.train(input, {
error_threshold: 0.00005,
iterations: 40000,
log: true,
log_period: 1000,
learning_rate: 0.3
})
res = Array.new
300.times do |i|
result = network.run([i])
res.push(result[0])
end
puts "#{res}"
Aber es funktioniert nicht, wenn ich das trainierte Netz laufen bekomme ich einige seltsame Ausgangswerte (anstatt einen Teil des Sinus des Erhaltens Kurve).
Also, was mache ich falsch?
Als beiseite fällt mir ein, dass Sie erwarten, dass Math :: sin mit Grad arbeiten - es funktioniert nicht im Radianten, die viel größere Einheiten sind. Wenn Sie nur eine einzige vorhergesagte Sinuswelle sehen möchten, können Sie 'sinus = Math :: sin (i.to_f/50)' oder so verwenden –