基于TensorFlow的LSTM算法在农业中的应用

2021-08-27 06:38:44勾志竟宫志宏刘布春
计算机技术与发展 2021年8期
关键词:宁河分蘖期气象要素

勾志竟,宫志宏,刘布春

(1.天津市气象信息中心,天津 300074;2.天津市气候中心,天津 300074;3.中国农业科学院农业环境与可持续发展研究所,北京 100081)

0 引 言

水稻是中国最主要的粮食作物之一,其产量的预测对于农业政策调整和保障粮食安全问题具有重要的意义[1]。由于其受多种因素影响,水稻产量的准确预测较为困难。常规的产量预测主要包括基于统计回归原理预测、灰色理论生长模拟[2]、卫星遥感预测[3]等方法,这些方法简便易行,可以预测产量。然而,水稻产量与多种因素之间存在着复杂的非线性关系,传统的方法预测精度往往不高,随着基于人工智能方法的不断研究和优化[4-5],BP神经网络因其适用于分析产量与影响产量的众多因素之间的复杂非线性关系,在产量预测方面得到较为广泛的应用[6]。

张成才等[7]采用播种面积、农田有效灌溉面积、农用机械总动力、化肥施用量、农药施用量等指标建立了BP神经网络粮食产量预测模型;姜新等[8]基于作物参数和农机水平建立了神经网络产量预测模型;郭亚菲等[9]提出了基于主成分分析和粒子群优化神经网络的粮食产量预测模型。但是这些模型对水稻产量的长期变化趋势预测能力偏弱,同时未能充分考虑生长期的气象要素对产量的影响。

而长短期记忆网络(long-short term memory,LSTM)作为一种改进的时间循环神经网络,在长时间序列预测问题处理中有独特的优势,在机器翻译、语音识别等方面已经有很多应用[10-11],但目前鲜有在水稻产量预测中的应用。因此,该文拟基于TensorFlow深度学习框架,构建LSTM水稻产量预测方法,以水稻不同生长期的气象要素作为预测因子对水稻产量进行预测,并将预测结果与BP神经网络预测模型进行比较,由此探讨LSTM在水稻产量长期趋势预测中的优越性,以期可为水稻产量长期趋势预测提供一种新方法。

1 资料与方法

1.1 研究区域概况

天津市宁河区位于39°21′N,117°49′,属于大陆性季风气候,暖温带半干旱半湿润风带,年均降水量为500 mm ~700 mm,降水量70%集中在6-8月份,地貌属于海积、冲积平原,土壤含盐分较高[12]。天津宁河区“小站稻”既有食味特性,又有良好的耐盐碱特性[13],一般在4月上旬播种,5月底至6月上旬移栽,6月中下旬进入返青期,8月上旬进入孕穗期,9月上旬进入乳熟期,9月下旬至10月中旬成熟。

1.2 数据来源

水稻产量数据和生育期地面气象观测资料来自天津市气象信息中心,水稻产量数据为宁河区单位面积(每亩)水稻产量(kg),生育期包括移栽-返青期(周期1)、分蘖期(周期2)、孕穗期(周期3)、抽穗期(周期4)、成熟期(周期5)。

地面气象观测资料来自天津市宁河区气象观测站,包括1989-2015年逐日平均风速、最大风速、日照时数、最高温、最低温、平均相对湿度、最小相对湿度及降水量。

1.3 研究方法

LSTM神经网络最早是由Hochreiter等[14]提出,是一种改进的RNN算法,增加了忘记门,可以学习时间序列长短依赖信息,能够克服梯度消失的问题,主要由忘记门、输入门、候选门和输出门组成,其基本结构如图1所示。

图1 LSTM内部结构

忘记门(forget gate layer)控制着应该忘记哪些信息,其计算公式如下所示:

ft=σ(Wf[ht-1,xt]+bf)

(1)

其中,Wf为忘记门权重,ht-1为上一个单元的输出,xt为当前单元的输入,bf为偏置,σ为sigmod函数。

输入门(input gate layer)通过激活函数决定着当前时刻的输入信息xt,有多少信息被加到信息流里面,其计算公式如下所示:

it=σ(Wi[ht-1,xt]+bi)

(2)

gt=σ(Wg[ht-1,xt]+bg)

(3)

其中,Wi、Wg为权重,bi、bg为偏置。

候选门(candidate layer)用来计算当前的输入和过去的记忆所具有的信息的总和,其计算公式如下所示:

Ot=σ(Wo[ht-1,xt]+bo)

(4)

ht=ot*tanh(St)

(5)

输出门(output gate layer)控制着有多少记忆信息被用于下一阶段的更新中,其计算公式如下所示:

St=ft*St-1+gt*it

(6)

本研究采用LSTM算法实现水稻产量预测模型,模型输入为天津市宁河区水稻5个生长周期的气象要素观测数据,即移栽-返青期平均风速、移栽-返青期最大风速、移栽-返青期平均风速日照时数、移栽-返青期最高温等,模型输出为天津市宁河区单位面积的水稻产量。

1.4 模型评价指标

本研究采用均方根误差和平均绝对误差来评价预测模型的优劣程度。

(1)均方根误差(root mean square error,RMSE)。

(7)

(2)平均绝对误差(mean absolute error,MAE)。

(8)

2 结果与分析

2.1 1989-2015年水稻单位面积产量趋势

宁河区1989-2015年的水稻单产趋势如图2所示,可以看出宁河区1993年水稻单产明显低于往年(按缺测处理),2010年之前整体波动不大,2012年水稻单产最高,2014年和2015年相比也出现了较大程度的减产。

图2 宁河区1989-2015年水稻单产变化趋势

2.2 1989-2015年水稻各生长期气象要素变化特征

为了消除原始气象要素数据量纲不同所带来的不利,通常的做法是归一化处理,将各气象要素数据转换到[0,1]之间归一化公式如下:

(9)

其中,xi为输入数据,i为数据序号,xmax、xmin为x中的最大值和最小值。

本研究主要考虑天津市宁河区水稻5个生长周期的气象要素对水稻产量的影响,通过对1989-2015年宁河区气象要素观测数据进行统计分析,得到如下结论:

经分析,1989-2015年宁河区水稻移栽-返青期平均风速、最大风速、平均气温、最高气温几乎无变化,日照总时数减少,最低气温降低,最小相对湿度和平均相对湿度变小,降雨量减少。

分蘖期平均风速变大,最大风速减小,日照总时数增多,平均气温、最低气温、降雨量几乎无变化,最高气温升高,最小相对湿度、平均相对湿度变小。

孕穗期平均风速、最大风速变大,日照总时数减少,平均气温、最高气温、最低气温升高,最小相对湿度几乎无变化,平均相对湿度变小。

抽穗期平均风速变大,最大风速几乎无变化,日照总时数减少,平均气温、最高气温、最低气温降低,最小相对湿度、平均相对湿度变小,降雨量减少。

成熟期平均风速、最大风速变大,日照总时数减少,平均气温、最高气温、最低气温升高,最小相对湿度、平均相对湿度变小,降雨量几乎无变化。

2.3 预测因子的选择

预测因子的选择很大程度上影响了预测的结果,该文利用Pearson相关系数法[15]来考察各气象要素对水稻产量的影响力,公式如下:

(10)

其中,x与y分别为2个变量的观测值。

若r>0,表示2个变量是正相关的;若r<0,则表示2个变量是负相关的,n为样本数量(文中为26)。

各生长周期各要素与水稻产量相关性系数如表1所示,其中,X1、X2、X3、X4、X5、X6、X7、X8、X9分别表示平均风速、最大风速、日照总时数、平均温度、最高温、最低温、平均相对湿度、最小相对湿度及总降水量。

表1 各生长周期各要素与水稻产量相关性系数

变量移栽-返青期分蘖期孕穗期抽穗期成熟期X1-0.139-0.109-0.338-0.341-0.439X2-0.239-0.266-0.191-0.388-0.496X30.1040.0940.034-0.1130.29X4-0.237-0.0690.2780.0920.103X5-0.046-0.1170.2410.0380.052X6-0.2720.1320.350.1160.148X7-0.0970.2050.320.0610.087X8-0.2250.2630.2230.0180.032X9-0.2460.4440.1870.0440.241

(11)

最后经过显著性检验,如公式(11)所示,并结合农业气象专家的建议,选取移栽-返青期最大风速、移栽-返青期平均温度、移栽-返青期最低温、移栽-返青期最小相对湿度、移栽-返青期总降水量、分蘖期最大风速、分蘖期平均相对湿度、分蘖期最小相对湿度、分蘖期总降水量、孕穗期平均风速、孕穗期平均温度、孕穗期最高温、孕穗期最低温、孕穗期平均相对湿度、孕穗期最小相对湿度、抽穗期平均风速、抽穗期最大风速、成熟期平均风速、成熟期最大风速、成熟期日照总时数、成熟期总降水量这21个要素作为水稻产量的预测因子。

2.4 TensorFlow框架

TensorFlow是谷歌的开源机器学习算法框架[16],其应用场景非常广泛,包括语音识别、自然语言处理、计算机视觉、数据分析及预测等[17],它支持Python、C++等多种编程语言,计算模型采用有向图(directed graph),其中每个运算操作(operation)作为一个节点(node),节点间的连接为边(edge)。

本研究采用Anaconda在Windows操作系统下安装CPU版本的TensorFlow,Anaconda提供了Python的包管理和环境管理功能。

TensorFlow的具体安装步骤如下:

(1)到Anaconda官网上下载电脑系统对应版本的Anaconda并安装。

(2)创建运行环境,安装Python3.6.10,命令如下:

conda create --name tensorflow python=3.6.10

(3)激活TensorFlow环境,命令如下:

activate tensorflow

(4)安装TensorFlow,命令如下:

pip install tensorflow

(5)启动Anaconda,并安装Spyder。

2.5 基于TensorFlow的LSTM预测模型

实验采用Python语言和TensorFlow库实现LSTM预测模型,如图3所示。

图3 LSTM水稻产量预测模型

(1)输入层:以天津市宁河区水稻生长周期的21个气象要素作为训练数据,水稻单产数据作为目标数据,对原始气象要素和水稻产量数据进行预处理,得到逐年的时间序列数据集,并将数据集划分为训练集Tran_data和测试集Test_data,采用公式(9)对训练集和测试集进行标准化处理。

训练数据和目标数据实现如下:

X=tf.placeholder(tf.float32,[None,time_step,input_size])

Y=tf.placeholder(tf.float32,[None,time_step,output_size])

其中,X为训练数据,Y为目标数据。

(2)隐藏层:将输入层处理后的数据传入隐藏层,计算相对损失,对LSTM算法隐藏层参数layer_num、rnn_unit、weights、biases进行优化,将最终结果输出。

其中,layer_num为隐藏层数量,rnn_unit为隐藏层单元数。输入层和输出层的权重为weights,偏置为biases。

输入层和输出层权重、偏置及误差实现如下:

weights={'in':tf.Variable(tf.random.normal([input_size,rnn_unit])),'out':tf.Variable(tf.random.normal([rnn_unit,1]}

biases={'in':tf.Variable(tf.constant(0.1,shape=[rnn_unit,])),'out':tf.Variable(tf.constant(0.1,shape=[1,]))}

loss=tf.reduce_mean(tf.square(tf.reshape(pred,[-1])-tf.reshape(Y, [-1])))

(3)输出层:通过隐藏层的输出计算得到均方根误差和平均绝对误差,本研究网络单元采用tf..nn.rnn_cell. BasicLSTMCell,默认激活函数为tanh。

(4)优化:神经网络最常用的优化方法多为基于梯度的,本研究针对传统神经网络梯度下降问题采用自适应距估计优化器(Adam),该算法将Momentum和RMSprop融合在一起,能够根据参数调节相应的学习率,并且内存占用较少。同时,本研究采用Dropout方法防止网络在训练过程中出现过拟合问题。

Adam优化器和Dropout方法实现如下:

train_op=tf.AdamOptimizer(lr).minimize(loss)

cell=tf.nn.rnn_cell.DropoutWrapper(cell,output_keep_prob=keep_prob)

(5)预测:通过saver.restore(sess,module_file)将保存的训练好的最优模型参数恢复,输入新的预测因子,即可预测水稻产量。

2.6 实验结果

文中基于TensorFlow构建了LSTM长短时记忆网络,并通过与传统的BP神经网络进行对比实验,验证基于TensorFlow构建的深度学习模型的优越性。网络参数及调优方法参考文献[18-19],通过多次实验对模型进行调优得到BP神经网络和LSTM长短时记忆网络的参数,如表2所示。

表2 BP神经网络和LSTM参数

从表2可以看出,BP神经网络的网络结构为21-q-l,其中21为输入层的节点数目,q为隐含层数目,采用经验公式q=2*d+1,d为输入层节点数目,l为输出层节点数目,即水稻单位面积产量,学习率设为0.005,迭代次数设为1 000,误差精度设为0.005 1。LSTM长短期记忆网络的输入层节点数为21,输出层节点数为1,隐藏层数设为3、隐藏层节点数为100,学习率为0.000 6,迭代次数为300。

实验结果如图4所示。可以看出,2014年相比2013年产量有减小的趋势,BP神经网络没有拟合出来。相比BP神经网络,LSTM长短期记忆网络通过门单元(gate)可以更好地学习到长时间序列数据的细节,进而更好地预测出未来的单位面积水稻产量的发展趋势。

图4 BP神经网络与LSTM预测结果对比

两种方法的预测结果如表3所示。

表3 BP神经网络和LSTM产量预测结果

从表3可以看出,除了2014年,LSTM长短时记忆网络对2010-2015年的宁河区小站稻亩产量预测精度都比BP神经网络要高。

其中,BP神经网络预测结果的RMSE为75.12,MAE为65.64。LSTM长短期记忆网络预测结果的RMSE为34.77,MAE为33.37,相比BP神经网络RMSE和MAE都有明显的下降,RMSE降低了53.7%,MAE降低了49.2%,预测精度更高。

3 结束语

该文利用水稻产量的时间序列数据进行预测,基于TensorFlow深度学习框架构建了LSTM水稻产量预测方法,采用1989-2015年天津市宁河区地面气象观测资料与产量数据,选取水稻不同生长期的气象要素作为预测因子,对水稻单产进行预测。结果表明,BP神经网络由于过拟合问题,预测效果不佳,LSTM长短期记忆网络的预测精度较高,可以更好地预测未来的粮食产量的长期发展趋势,可为水稻产量预测提供新的参考思路。水稻产量受经济和自然条件等多种因素影响,准确的预测往往十分困难,文中的方法仅考虑了气象要素对产量的影响,未来可以综合考虑社会经济因素及生产投入、品种等因素做进一步的产量预测研究。

猜你喜欢
宁河分蘖期气象要素
天津市宁河区牵头成立的“思政教育实践基地”正式揭牌
天津市宁河区启动《蓟运河畔的“大思政课”》专题栏目
天津教育(2024年10期)2024-06-08 05:07:08
天津市宁河区牵头成立的“思政教育实践基地”正式揭牌
天津教育(2024年7期)2024-05-16 02:48:36
香稻分蘖期减氮侧深施液体肥对产量和氮素利用的影响
成都电网夏季最大电力负荷变化特征及其与气象要素的关系
沈阳市1951—2013年气候变化特征及其区域蒸发的响应分析
北京市朝阳区大气污染物时空分布特征及与气象要素的关系研究
早稻二化螟的综合防治
浅谈水稻分蘖期和灌浆期的田间管理技术要点
探测环境变化对临沭站气象要素的影响