일련의 숫자 합계를 계산하기 위해 순환 네트워크를 구현하려고했습니다. 나는 입력의 길이가 고정되어 시작을하지만 가변 길이 시퀀스를 받아 만들려고 계획 5.시퀀스 합계 계산 - 반복 네트워크
예 :
[1,2,3,4,5] = 15
I가 발생한 오전 문제는이, 또는 적어도 수렴하면 손실은 안정화됩니다. 모든 입력에 대해 동일한 출력을 제공합니다.
예
[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 또는 그와 같은 값이 될 수 있습니다.), 모든 입력에 대해 동일하게 적용됩니다.
선형 활성화를 사용하여 반복적 인 신경망으로이 문제를 해결할 수 있다고 가정합니다.
왜 네트워크가 "고정 된"값으로 수렴됩니까? 대신 lstm 층의 simple_rnn 사용는
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