这里的linear也可以堪称一个module,里面也定义了forward,因此在定义为为一个线性模型以后,可以直接(x)
net = Net(1,10,1)
print(net)
可以输出网络结构
搭建完以后需要优化神经网络参数
然后是正式训练过程:
for i in range(100):
prediction = net(x)#就像在Net类中写的self.predict(x),这里的x就是类中forward中传入的参数x
#同时这里返回的是forward后的值
loss = loss_func(prediction, y)#这里的loss经过实例化以后也可以再传入参数
optimizer.zero_grad()#先把需要优化的参数net.parameters()的梯度全部降为0
loss.backward()#然后在loss反向传递的过程中自动算梯度,保存在Variable中
optimizer.step()#优化梯度
画图
注意,数据传入前需要进行格式转换,torch只能处理二维数据
然后变为Variable