细碎的想法
· 这个 stock_data_list 里面的这个 test_X 和 test_y 里面 有个 (876, 30, 1) 的 array 是什么?为什么会是这样的数据
876 指的是这里一个股票会分为867个批次一次性计算
· rnn 的 gpu训练模式怎么开启,怎么确定是gpu训练,老子fine-tune一个 bert 跑了 1天都跑不完
· 数据处理
· 如果没有选择特定的股票,先筛选 500 个股票
· 然后是 normalize (主要是计算 percentage,涨多少和跌多少)
· 然后是分训练、验证集
· 然后分 epoch
· input_size 和 num_steps(这个应该是序列长度) 的关系
· epoch 和 num_steps 的关系,没什么关系,epoch 是 训练轮次, num_step 是序列长度
· 怎么使用这个模型?
可以这么用,直接加载训练完的模型之后,调用 sess run 的方法,注意run的方法要写对
def predict(self):# TODO process test data# session run neutral network# get result and calculate the lossimport pandas as pdimport numpy as npraw_df = pd.read_csv(os.path.join("data", "%s.csv" % 'SP500'))raw_seq = raw_df['Close'].tolist()seq = np.array(raw_seq)seq = [np.array(raw_seq[i * self.input_size: (i + 1) * self.input_size])for i in range(len(raw_seq) // 1)]seq = [seq[0] / seq[0][0] - 1.0] + [curr / seq[i][-1] - 1.0 for i, curr in enumerate(seq[1:])]i = -1k = i - 30test_data = np.array([seq[k:i]])test_data_y = np.array([seq[i]])print(raw_seq[k:i])print(raw_seq[i])test_data_feed = {self.inputs: test_data,self.targets: test_data_y,self.keep_prob: 1.0}print('test data', test_data)print('test data y ', test_data_y)final_pred, final_loss = self.sess.run([self.pred, self.loss], test_data_feed)print('final result' ,final_pred, final_loss)
· 一般 tensorflow 网络 编程习惯
· 配置
· 读入模型
· 读入数据
· train & validate
· predict
· 能不能把量,这个变量加上去
· 用 xgboost 方法看看哪个好用?
· 这个模型在训练的时候,在本数据集表现得很好,但是在测试集上面表现得几乎没有 predict 的能力原因一:训练的数据源的问题,数据源没有足够的预测能力
~~训练过拟合 - ~~
· 为什么图画出来是能够避开下跌的位置,但是预测得不好
这个图型对不上很可能是这个_flatten方法被我改了
但是这里有个结论,如果考虑量价因素,能够成功地预测到大涨和大跌
