TensorFlow学习之LSTM用于股票价格预测

LSTM用于股票价格预测笔记,侵删。
原地址:https://blog.csdn.net/mylove0414/article/details/55805974
GitHub地址:https://github.com/LouisScorpio/datamining/tree/master/tensorflow-program/rnn/stock_predict

1. np.newaxis

np.newaxis的作用就是在其所在位置增加一个一维,如:

x1 = np.array([1, 2, 3, 4, 5])
# the shape of x1 is (5,)
x1_new = x1[:, np.newaxis]
# now, the shape of x1_new is (5, 1)
# array([[1],
#        [2],
#        [3],
#        [4],
#        [5]])
x1_new = x1[np.newaxis,:]
# now, the shape of x1_new is (1, 5)
# array([[1, 2, 3, 4, 5]])

2.array中的np.reshape(a,[-1,10])

数组中新的shape应该 要与原来的配套,如原来是一个10*10的数组,则转成三维,可以是2*2*25。

# a是一个10*10的array
np.reshape(a,[-1,2,25])

会自动转成2*2*25的数组,根据其他两个值计算-1位置的值。

3.TensorFlow中的saver

saver的作用是将训练好的模型的参数保存下来,以便继续用于训练或者测试。

#定义saver
saver=tf.train.Saver(tf.global_variables())

#存储saver
saver.save(sess,'checkpoints/Lstm/',global_step=i)

#读取saver存储的参数
saver.restore(sess, module_file)

此代码在第一次运行时,应该将train_lstm中的读取saver的部分注释掉。否则会因为找不到saver而报错。

4. 误差计算

在计算误差时,需要将预测的数据和Y逆标准化,再计算误差。

5.LSTM结构tensorboard示意图

TensorFlow学习之LSTM用于股票价格预测_第1张图片

6.程序流程图

TensorFlow学习之LSTM用于股票价格预测_第2张图片

认为有错的地方

get_test_data()方法中

test_x.append((normalized_test_data[(i+1)*time_step:,:7]).tolist())
test_y.extend((normalized_test_data[(i+1)*time_step:,7]).tolist())

应该换成

test_x.append((normalized_test_data[-time_step:,:7]).tolist())
test_y.extend((normalized_test_data[-time_step:,7]).tolist())

否则当size只有1时,无法取到最后的一个time_step的值。

可能有错的地方:
这个项目说是预测,但是始终用的同一期的数据预测股票,时间序列预测的基本原则是要用过去的预测未来的,但是代码里没有体现数据在时间上的滞后,不知道是不是我没有看到。

如有错误,欢迎指正~

你可能感兴趣的:(LSTM)