Jar*_*ers 5 python lstm keras tensorflow
这是我的 RNN:
def make_cpu_regressor():
regressor = Sequential()
regressor.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units=50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units=1))
regressor.compile(optimizer='adam', loss='mean_squared_error')
regressor.fit(X_train, y_train, epochs=100, batch_size=32)
regressor.save('model-cpu.h5')
return regressor
Run Code Online (Sandbox Code Playgroud)
我创建了第二个,只有一个区别,我使用了CuDNNLSTM
代替LSTM
,其他一切都相同。使用 NN 的CuDNNLSTM
训练速度要快得多,但在预测上存在显着差异:
为什么预测会有如此大的差异?
当我修改CuDNNLSTM
为单位 150 和 200 epochs(蓝线)时,结果要好得多:
编辑:这是 CuDNNLSTM 版本的代码:
def make_gpu_regressor():
regressor = Sequential()
regressor.add(CuDNNLSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
regressor.add(Dropout(0.2))
regressor.add(CuDNNLSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(CuDNNLSTM(units=50, return_sequences=True))
regressor.add(Dropout(0.2))
regressor.add(CuDNNLSTM(units=50))
regressor.add(Dropout(0.2))
regressor.add(Dense(units=1))
regressor.compile(optimizer='adam', loss='mean_squared_error')
regressor.fit(x=X_train, y=y_train, epochs=100, batch_size=32)
regressor.save('model_gpu.h5')
return regressor
regressor_gpu = make_gpu_regressor()
regressor_cpu = make_cpu_regressor()
predicted_stock_price_gpu = regressor_gpu.predict(X_test)
predicted_stock_price_gpu = sc.inverse_transform(predicted_stock_price_gpu)
predicted_stock_price_cpu = regressor_cpu.predict(X_test)
predicted_stock_price_cpu = sc.inverse_transform(predicted_stock_price_cpu)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1293 次 |
最近记录: |