人层和输出层时,应该尽可能的减小系统规模,使系统的学习时间和复杂性减小。结合预测
要求本论文设计输出层为产气量一个输出因子。
2.4 隐层节点数
一个具有无限隐层节点的两层
BP 网络可以实现任意从输入到输出的非线性映射。但对
于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐
层节点数的问题,至今为止,尚未找到一个很好的解析式,隐层节点数往往根据前人设计
所得的经验和自己进行试验来确定。一般认为,隐层节点数与求解问题的要求、输入输出单
元数多少都有直接的关系。另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,
容错性差,识别未经学习的样本能力低,所以必须综合多方面的因素进行设计。
隐层节点数的初始值可先由以下两个公式中的其中之一来确定
[4,5]。
+a(1)
或
(2)
式中,
m、n 分别为输入结点数目与输出结点数目,a 为 1~10 之间的常数。
2.5 数据归一化
因为原始数据幅值大小不一,有时候还相差比较悬殊。如果直接投人使用,测量值大的
波动就垄断了神经网络的学习过程,使其不能反映小的测量值的变化。所以,在网络训练之
前,输人数据和目标矢量都要经过归一化处理。根据公式可将数据
“归一化”,即限定在
[0.1,0.9]区间内。归一化公式为:
×0.8+0.1(3)
3.BP 算法及预测模型的建立
3.1BP 算法
1)初始化网络及学习参数;
2)从训练样本集合中取一个样本,并作为输入向量送入网络;
3)正向传播过程,对给定的输入样本,通过网络计算得到输出样本,并把得到的输出
样本与期望的样本比较,如有误差超出限定范围,则执行第
4 步;否则返回第 2 步,输入
下一个样本;
4)反向传播过程,即从输出层反向计算到第一隐层,修正各神经元的连接权值,使用
误差减小。
3.2 煤层气井日产气量预测模型
为了预测煤层气井日产气量,需要关注很多因素,滤去相关度过低的因子,根据经验
确定输入因子为煤层埋深、煤层厚度、含气量、渗透率和含气饱和度,输出因子为日产气量。
现以表
1 所示的沁水樊庄区块晋试 1-6 井的参数作为训练样本进行训练,对 TL003 井的数
据进行预测。输出层结点代表日产气量,神经网络的预测模型采用
5-5-1,即输入层 5 个神
经元,根据公式
(2)计算隐层神经元数确定为 5,1 个输出神经元。设定最大的迭代次数为
1000 次,系统全局误差小于 0.0005。传递函数为 tansig,训练函数为 traingdx。根据经典的
BP 算法,采用 Matlab 编程,样本训练结果见图 2,TL003 的数据作为预测样本,预测结果
如下:
TRAINGDX,Epoch0/1000,MSE0.363349/0.0005,Gradient0.113892/1e-006
TRAINGDX,Epoch25/1000,MSE0.358319/0.0005,Gradient0.124151/1e-006
TRAINGDX,Epoch50/1000,MSE0.336296/0.0005,Gradient0.165309/1e-006
TRAINGDX,Epoch75/1000,MSE0.151697/0.0005,Gradient0.201026/1e-006
TRAINGDX,Epoch100/1000,MSE0.0491568/0.0005,Gradient0.0479309/1e-006
TRAINGDX,Epoch125/1000,MSE0.0250848/0.0005,Gradient0.0155269/1e-006
TRAINGDX,Epoch150/1000,MSE0.00622656/0.0005,Gradient0.010656/1e-006