为什么 LSTM 不能减少损失
Why the LSTM can't reduce the loss
我正在使用 lstm 训练模型来预测股票价格,我使用了这样的多对一模式:
O
|
O O O O
| | | |
O O O O
我用keras框架搭建了网络,但是神经网络好像不太容易搭建...
这是我的 python 的 lstm NN 源代码:
def lstm_rls(num_in,num_out=1, batch_size=128, step=1,dim=1):
model = Sequential()
model.add(LSTM(
1024,
input_shape=(step, num_in),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
512,
return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1))
model.add(Activation('linear'))
model.compile(loss='mse', optimizer='rmsprop')
return model
我训练了大约 512 个 epoch,但损失总是在 7
左右
Epoch 1/512
3968/3968 [==============================] - 4s 978us/step - loss: 48.6274
Epoch 2/512
3968/3968 [==============================] - 1s 220us/step - loss: 11.1913
Epoch 3/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.8059
Epoch 4/512
3968/3968 [==============================] - 1s 220us/step - loss: 6.7905
Epoch 5/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.8151
Epoch 6/512
3968/3968 [==============================] - 1s 219us/step - loss: 6.7907
Epoch 7/512
3968/3968 [==============================] - 1s 220us/step - loss: 6.8060
Epoch 8/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.7824
...
...
...
Epoch 509/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7807
Epoch 510/512
3968/3968 [==============================] - 1s 223us/step - loss: 6.8199
Epoch 511/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7726
Epoch 512/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7715
我遇到了你的图像字幕问题(我有四个 Gpu tesla k20)。训练 LSTM 需要很长时间(大约几天)。我认为你的问题很自然。我使用的一种方法是增加批量大小。另一方面,批量大小的增加与性能和内存使用量有关。
今天我看了一节关于调试技巧的讲座。它说您可以分析代码的一种方法是:
验证目标函数是否在小训练集上减少,而不是第一次全部减少。
我正在使用 lstm 训练模型来预测股票价格,我使用了这样的多对一模式:
O
|
O O O O
| | | |
O O O O
我用keras框架搭建了网络,但是神经网络好像不太容易搭建...
这是我的 python 的 lstm NN 源代码:
def lstm_rls(num_in,num_out=1, batch_size=128, step=1,dim=1):
model = Sequential()
model.add(LSTM(
1024,
input_shape=(step, num_in),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
512,
return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1))
model.add(Activation('linear'))
model.compile(loss='mse', optimizer='rmsprop')
return model
我训练了大约 512 个 epoch,但损失总是在 7
左右Epoch 1/512
3968/3968 [==============================] - 4s 978us/step - loss: 48.6274
Epoch 2/512
3968/3968 [==============================] - 1s 220us/step - loss: 11.1913
Epoch 3/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.8059
Epoch 4/512
3968/3968 [==============================] - 1s 220us/step - loss: 6.7905
Epoch 5/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.8151
Epoch 6/512
3968/3968 [==============================] - 1s 219us/step - loss: 6.7907
Epoch 7/512
3968/3968 [==============================] - 1s 220us/step - loss: 6.8060
Epoch 8/512
3968/3968 [==============================] - 1s 221us/step - loss: 6.7824
... ... ...
Epoch 509/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7807
Epoch 510/512
3968/3968 [==============================] - 1s 223us/step - loss: 6.8199
Epoch 511/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7726
Epoch 512/512
3968/3968 [==============================] - 1s 222us/step - loss: 6.7715
我遇到了你的图像字幕问题(我有四个 Gpu tesla k20)。训练 LSTM 需要很长时间(大约几天)。我认为你的问题很自然。我使用的一种方法是增加批量大小。另一方面,批量大小的增加与性能和内存使用量有关。
今天我看了一节关于调试技巧的讲座。它说您可以分析代码的一种方法是: 验证目标函数是否在小训练集上减少,而不是第一次全部减少。