1
我一直在試圖實現一個經常性網絡來計算一系列數字的總和。我打算試圖使它接受可變長度的序列,但可以開始輸入長度固定爲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或其他),對於任何輸入都是相同的。
我假設使用線性激活可以用循環神經網絡來解決這個問題。
爲什麼網絡收斂到「固定」值?
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感謝編輯。首先發布了關於交叉驗證的問題,TFLearn不是一個標籤,所以我把它放在標題中。 – ericwenn