私は、一連の数値の合計を計算するために反復ネットワークを実装しようとしています。私は、入力の長さが固定されてオフに開始するが、それは可変長シーケンスを受け入れるようにしようする予定5.シーケンスの合計を計算する - 反復ネットワーク
例:
[1,2,3,4,5] = 15
私が遭遇しています問題は、それが、あるいは少なくとも収束したら、損失は安定していますが、どの入力に対しても同じ出力が得られます。
例
[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
これまでのところ私は、異なる層の大きさ、異なる活性化関数と学習率を試してみました。しかし、それらはすべて同様の挙動をもたらす。それらが出力として与える値が変更されたとしても(134の代わりに-12など)、どの入力に対しても同じです。
私は線形活性化を使用してリカレントニューラルネットワークでこの問題を解決することが可能であると想定しています。
なぜネットワークは「固定」値に収束しますか? simple_rnn代わりのLSTM層を用い
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)
:
コードは次のようになります。最初に、TFLearnがタグではないcrossvalidatedの質問を投稿したので、タイトルに入れました。 – ericwenn