-
代码文件夹**有3个文件夹,分别是data,logs和results。
第一个data文件夹下存放气象数据mete.xls、粮食温度数据grainterm_1.xlsx、和由这两个数据文件处理过后的.npy文件,即为神经网络的输入数据,数据的.npy文件由create_handle_data.py脚本运行而产生的,其中.npy文件中的数据格式在 Section 5 中会详细介绍。data中的.npy文件总共有17个,有5个训练集数据、5个交叉验证集数据、5个测试集数据、1个全局输入数据和1个全局注意力机制输入数据。17个数据文件中训练集、交叉验证集和测试集数据格式是一致的,都分别有1个局部输入数据、1个外部输入数据、1个全局输入索引、1个全局注意力机制输入索引和1个验证用的标签。data中还有一个scalers文件夹,其中存放的是标准归一化函数器。为了保证训练效果,需要先对数据进行归一化处理,映射到归一化标签的,但最后预测的标签是需要逆变换到原始标签的。因此,需要保存一个标准归一化函数器使得最后预测的标签和原始标签数量级一致,而scalers中的函数器由运行脚本create_pkl.py得以保存。
第二个logs文件夹下存放的第一个文件GeoMAN-12-6-2-256-0.30-0.001,表示隐藏层神经元数为256的网络训练出来的模型参数结果;第二个文件是GeoMAN-12-6-2-128-0.30-0.001,表示隐藏层有256个神经元的网络训练出来的模型参数。两个文件夹结构一致,文件夹中有一个events文件,其保存的是神经网络的计算图结构,即神经网络可视化的结构图。还有一个文件夹saved_models,其中保存的是训练好以后的模型的参数结果。
第三个results文件夹中保存的是训练好的隐藏层有128神经元的模型最终的测试结果,其中一个是由Predict_model.py产生的预测结果(PREDICT);另一个是Test_model_training.py脚本产生的数据集误差(MATRIC)。
-
目前还没有介绍的脚本文件有base_model.py,N_network.py,Training_model.py,utils.py。
其中base_model创建了一个基础神经网络类,是为了构建GeoMAN完整网络准备的。因此,N_network创建的就是GeoMAN的完整网络,包括结构及其需要操作的功能函数。Training_model.py就是用来训练模型的脚本,而utils是以上代码所需要使用的一些零散函数的集合文件。
-
- OS:Windows 10
- IDE:PyCharm
- Tensorflow 1.x
- CPU or GPU
-
- tensorflow
- numpy
- pandas
- pickle
- json
- xlrd
- sklearn
- 其中脚本会调用utils.py中handle_data函数将处理好的数据保存为.npy数据文件。
- 其中脚本会调用utils.py中split_labels函数将处理好的label数据归一化处理并保存其标准归一化函数器为pkl文件。
-
- 在Pycharm中运行Training_model.py脚本进行模型训练
- 在代码目录下使用命令:python Training_model.py运行脚本进行模型训练
-
- 在Pycharm中运行Test_model_training.py脚本对训练好的模型进行性能测试
- 在代码目录下使用命令:python Test_model_training.py运行脚本进行模型性能测试
-
- 在Pycharm中运行Predict_model.py脚本对训练好的模型进行预测测试
- 在代码目录下使用命令:python Predict_model.py运行脚本进行预测测试
-
局部输入因素有26个类型,即按照要求的109号布号点附近的粮食温度。
由于RNN编码器encoder要求连续12个时间序列输入,因此可以将现有数据按照时间选择连续12天的时间序列,进行数据扩充和数据增强,帮助监督学习训练模型,这种数据增强方法同时使用在外部输入数据、测试预测标签和全局注意力机制输入数据中。
因此,最后局部输入格式为(?, 12, 26),其中?表示数据增强以后能使用的数据组合对的数量。
-
全局输入因素为200个布号点种剩下的174个布号点。
因此,索引所保存的就是剩下174个布号点在表格数据中的列索引。
-
同全局输入数据索引,索引内容与其一致。
-
外部输入因素有8个类型,即按照要求的不同气象因素数据。
由于RNN编码器decoder要求连续6个时间序列输入,因此可以将现有数据按照时间选择连续6天的时间序列,进行数据扩充和数据增强。
因此,最后外部输入格式为(?, 6, 8),其中?表示数据增强以后能使用的数据组合对的数量。
-
标签输入只有1种类型,即预测标签。
因此,最后外部输入格式为(?, 6, 1),其中?表示数据增强以后能使用的数据组合对的数量。
-
全局输入数据根据全局输入索引取数据,共有174个全局输入数据因素。
因此,最后全局输入格式为(?, 174, 12),其中?表示数据增强以后能使用的数据组合对的数量。
-
全局注意力机制输入数据根据全局注意力机制输入索引取数据,因为全局注意力机制希望获得不同传感器之间的关系,而对于每个传感器,其局部输入影响其数值。因此对于每个传感器,需要将局部输入包含进来,这里,将每个布号点传感器附近的26个布号点作为局部输入。
因此,最后全局注意力机制输入格式为(?, 174, 26, 12),其中?表示数据增强以后能使用的数据组合对的数量。
若需要改变训练数据,自定义训练和测试数据,可以依照 Section 5 介绍的格式进行数据组织和修改create_handle_data.py脚本中的数据处理代码,最后重新运行以生成自定义的.npy数据文件。
-
- 均方根误差是预测值与真实值偏差的平方与观测次数n比值的平方根,在实际测量中,观测次数n总是有限的,真值只能用最可信赖(最佳)值来代替。标准误差 对一组测量中的特大或特小误差反映非常敏感,所以,标准误差能够很好地反映出测量的精密度。这正是标准误差在工程测量中广泛被采用的原因。因此,标准差是用来衡量一组数自身的离散程度,而均方根误差是用来衡量观测值同真值之间的偏差,它们的研究对象和研究目的不同,但是计算过程类似。
-
-
- 全局特征数: 174
- 局部特征数:26
- 被使用的时间序列长度:12
- 编码器的隐藏层数:128
- 解码器个数:1
- 外部输入特征数:8
- 被预测的时间序列长度:6
- 解码器的隐藏层数:128
- 解码器输出的个数:1
-
- 学习率:0.001
- lammda:0.001
- 避免梯度爆炸的系数:2.5
- dropout比率:0.3
- stacked_layer数:2
- 注意力机制flag:2
- 是否需要外部输入网络的参数:True