(1)输入数据处理。
从Tushare上爬取1991.7.1到2020.8.31 7127条数据,然后划分成6627条 和500条分别组成训练集和测试集。具体时间跨度为10天,每天的数据有8个特征,分别为收盘价,开盘价,最高点位,最低点位,昨日收盘点,涨跌点,涨跌幅(%),成交量(手)成交额(千元),将10天的数据编为一组,即使用前10天的数据预测第11天的收盘价
本层输出格式为(None,10,8)None为组的个数不限制
并且对爬取的数据进行归一化处理,使其投影到(0,1)的范围内,目的是改变特征数据分布,让反向传播更加容易,
防止越到后面的特征数据分布越在0附近,这会导致梯度消失,网络收敛。
scaler = MinMaxScaler(feature_range=(0, 1))
scaler.fit(list_data1)
list_data1 = scaler.transform(list_data1)
(2) CNN主要由两部分组成:卷积层和池层。 卷积层计算:输入数据成功通过卷积层、池层在CNN中,对输入数据进行特征提取获得输出值。每个卷积层包含卷积核的完备性,其计算公式如公式所示:
L代表卷积层的输出 tanh是激励函数,x是输入数据,k是卷积核的权重,b是卷积核的偏移
卷积层的参数为 filters=32, # 卷积层神经元(卷积核)数目, kernel_size=1, # 感受野大小
activation=tf.nn.tanh,input_shape =(None,10,8)
通过1×1卷积操作提取出输入张量的重要特征,对数据进行升维操作。函数tanh,加入非线性激励。 1*1的卷积在前一层的学习表示上添加了非线性激励,提升网络的表达能力
本层输出格式为(None,10, 32)
在卷积运算之后,卷积层提取出数据的特征,但是提取出来的特征维数很高,所以为了解决这一问题,降低培训成本,在网络中,在卷积后加入一个池层图层以减少特征尺寸。