代码功能:对山东某地区历史温度数据进行BP神经网络训练,通过前三小时温度数据,预测第四小时温度值。
数据来源:2016年4月份山东某地区温度数据,共30*24小时。1日到20日(20*24小时)数据为训练数据集,21到30日(10*24小时)数据为测试数据集。
1.定义神经网络结构及参数
选用典型的三层神经网路(输入层+一层隐含层+输出层),节点数设置为3-7-1,详细参数见程序:
d=3#输入节点个数
l=1#输出节点个数
q=2*d+1#隐层个数,采用经验公式2d+1
train_num=480#训练数据个数
test_num=240#测试数据个数
eta=0.5#学习率
error=0.002#精度
2.初始化权值和阈值
输入层到隐含层的权值为w1,矩阵大小为d*q;隐含层到输出层的权值为w2,矩阵大小为q*l;隐含层阈值为b1,输出层阈值为b2。
w1= tf.Variable(tf.random_normal([d, q], stddev=1, seed=1))#seed设定随机种子,保证每次初始化相同数据
b1=tf.Variable(tf.constant(0.0,shape=[q]))
w2= tf.Variable(tf.random_normal([q, l], stddev=1, seed=1))
b2=tf.Variable(tf.constant(0.0,shape=[l]))
3.构建图
#输入占位
x = tf.placeholder(tf.float32, shape=(None, d))
y_= tf.placeholder(tf.float32, shape=(None, l))
#构建图:前向传播
a=tf