Ich habe versucht, ein wiederkehrendes Netzwerk zu implementieren, um die Summe einer Folge von Zahlen zu berechnen. Ich plane, um zu versuchen, es mit variabler Länge Sequenzen zu machen akzeptieren, aber die Eingabelänge festgelegt ist damit beginnen bei 5.Berechnung der Sequenzsumme - Wiederholtes Netzwerk
Beispiel:
[1,2,3,4,5] = 15
Das Problem, das ich begegnet bin, ist, dass, sobald sie konvergiert, oder zumindest der Verlust stabilisiert sich, für jede Eingabe, die ich ihm gebe, gibt es die gleiche Ausgabe.
Beispiel
[3,4,5,1,1] = 134.59681
[400,1,1,1,1] = 134.59681
[32,42,55,1,1] = 134.59681
[100,1,2,1,1] = 134.59681
Bisher habe ich verschiedene Schichtgrößen versucht, verschiedene Aktivierungsfunktionen und Lernrate. Aber alle führen zu ähnlichem Verhalten. Selbst wenn sich die Werte, die sie als Ausgabe geben, ändern (also statt 134. kann es -12 oder was auch immer sein), ist es für jeden Eingang dasselbe.
Ich nehme an, dass es möglich ist, dieses Problem mit einem rekurrenten neuronalen Netzwerk zu lösen, das lineare Aktivierungen verwendet.
Warum konvergiert das Netzwerk zu einem "festen" Wert?
sample_size = 512
X = np.random.randint(1, 50, size=(sample_size, 5))
Y = [[np.sum(x)] for x in X]
X = np.reshape(X, (-1, 5, 1))
net = tflearn.input_data(shape=[None, 5, 1])
net = tflearn.lstm(net, 32, dropout=0.9)
net = tflearn.fully_connected(net, 1, activation='linear')
regression = tflearn.regression(net, optimizer='adam', loss='mean_square', learning_rate=1.)
m = tflearn.DNN(regression, tensorboard_dir='tnsbrd-logs/')
m.fit(X, Y, n_epoch=2000, show_metric=True, snapshot_epoch=False)
@ dandan78 Vielen Dank für bearbeiten. Erste gepostete Frage auf crossvalidated, wo TFLearn nicht ein Tag war, also habe ich es in Titel geschrieben. – ericwenn