【发布时间】:2019-08-14 20:19:23
【问题描述】:
我正在尝试了解 LSTM 单元。我已经阅读了几篇文章,现在正在尝试使用 tensorflow 编写自己的代码。
我从这个tutorial 发现了这段代码。于是我复制了lstm.py文件和数据文件sp500.csv。下面的代码是我写的。
一切正常。每次我运行模型时,我都会得到非常不同的预测。我知道因为这个模型非常基础(试图仅使用收盘价来预测股票价格),所以这是可以预料的。我也相信在后台 tensorflow 使用一些随机化过程来启动变量。
我希望每次都运行模型并获得相同的结果。所以我读到要做到这一点,我需要使用 set_random_seed。
我在下面的代码中添加了这个,但是当我重新运行我的代码时,我得到了非常不同的预测。我应该如何使用 set_random_seed,为什么参数是 1234?
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, LSTM, Dropout, Activation
import lstm, time
import tensorflow as tf
def RunML():
tf.set_random_seed(1234)
X_train, y_train, X_test, y_test = lstm.load_data('sp500.csv', 50, True)
model = Sequential()
model.add(LSTM(50,
input_shape=(50, 1),
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(
100,
return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1))
model.add(Activation('linear'))
start = time.time()
model.compile(loss='mse', optimizer='rmsprop')
print ('compilation time : ', time.time() - start)
#Step 3 Train the model
model.fit(
X_train,
y_train,
batch_size=512,
nb_epoch=1,
validation_split=0.05)
predictions = lstm.predict_sequences_multiple(model, X_test, 50, 50)
lstm.plot_results_multiple(predictions, y_test, 50)
【问题讨论】:
标签: python tensorflow machine-learning lstm