主要内容

本页采用了机器翻译。点击此处可查看英文原文。

创建并训练前馈神经网络

此示例显示如何训练前馈神经网络来预测温度。

从气象站 ThingSpeak 通道读取数据

ThingSpeak™ 通道 12397 包含来自位于马萨诸塞州纳蒂克的 MathWorks® 气象站的数据。每分钟收集一次数据。字段 2、3、4 和 6 分别包含风速(mph)、相对湿度、温度(F)和大气压力(inHg)数据。使用 thingSpeakRead 函数从通道 12397 读取数据。

data = thingSpeakRead(12397,'Fields',[2 3 4 6],'DateRange',[datetime('January 7, 2018'),datetime('January 9, 2018')],...
    'outputFormat','table');

分配输入变量和目标值

分配输入变量,并根据温度和相对湿度计算露点作为目标。将温度从华氏度转换为摄氏度,并指定水蒸气(b)和气压(c)的常数。计算中间值 'gamma',并为网络分配目标值。

inputs = [data.Humidity'; data.TemperatureF'; data.PressureHg'; data.WindSpeedmph'];
tempC = (5/9)*(data.TemperatureF-32);
b = 17.62;
c = 243.5;
gamma = log(data.Humidity/100) + b*tempC ./ (c+tempC);
dewPointC = c*gamma ./ (b-gamma);
dewPointF = (dewPointC*1.8) + 32;
targets = dewPointF';

创建并训练两层前馈网络

使用 feedforwardnet 函数创建一个两层前馈网络。该网络有一个包含 10 个神经元的隐藏层和一个输出层。使用 train 函数利用输入来训练前馈网络。

net = feedforwardnet(10);
net.trainParam.showWindow = false; % Turn off display progress dialog.
[net,tr] = train(net,inputs,targets);

使用训练好的模型预测数据

在网络经过训练和验证后,您可以使用网络对象来计算对任何输入的网络响应,在本例中为第五个输入数据点的露点。

output = net(inputs(:,5))
output =

  -15.6383

另请参阅

函数