转自:http://www.aichengxu.com/view/2464032
代码地址: https://github.com/vic-w/torch-practice/tree/master/linear-reg
--使用神经网络模块的线性函数,一个输入一个输出,参数有w和b,这个是要优化的值
model = nn.Linear(1, 1)
--误差的评价指标是Mean Squared Error均方误差,优化使用的函数
criterion = nn.MSECriterion()
--循环1000次来修正误差,模拟修正过程
for i=1,1000 do
--前向传播,模型通过输入数据计算输出数据
price_predict = model:forward(month_train)
--前向传播,前向计算误差,通过预测数据与实际数据的差值计算
err = criterion:forward(price_predict, price_train)
print(i,err)
model:zeroGradParameters()
--计算偏导数,后向传播
gradient = criterion:backward(price_predict, price_train)
--预测值的偏导数再反向推导出每个可调参数的偏导数
model:backward(month_train, gradient)
--更新参数,求出△w就可以更新了,给出了学习率
model:updateParameters(0.01)
end
month_predict = torch.range(1,12)
--利用模型前向计算结果
local price_predict =model:forward(month_predict:reshape(12,1))
--画图
--gnuplot在itorch中好像没法使用
Plot = require 'itorch.Plot'
--画线,如果要画多条线的话就是用如下的方法,调用多个line函数,line函数的参数,横坐标,纵坐标是对应的点,画出来是折线
plot =Plot():line(month,price,'red','example'):line(month_predict:reshape(12),price_predict:reshape(12),'blue','predict'):legend(true):title('LinePlot Demo'):draw()