刘二大人 《PyTorch深度学习实践》第5讲 用Pytorch实现线性回归

指路☞ 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili

 

知识补充:

1、pytorch神经网络模型

2、类后面加括号,表示构造对象;Linear的对象里面包含w和b,将来我们可以直接用Linear来完成wx+b的运算,Linear也可以自动backward,self.linear是个对象。

3、新版criterion

 4、遇到最sb的bug:libpng warning: iCCP: cHRM chunk does not match sRGB

它是时不时抽风,解决方法竟然是Ctrl+shift  切换输入法,即把QQ输入法切换掉(我的已经改了,它现在不显示了)

Python 的 libpng warning: iCCP: cHRM chunk does not match sRGB 报错处理_秋末雨微凉的博客-CSDN博客

****************************************************************************************************

import torch
import matplotlib.pyplot as plt
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])
#module会自动backward
class LinearModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()
        self.linear = torch.nn.Linear(1, 1)
        #(1,1)代表x,y的列数
    def forward(self, x):
        #对象后面加括号表示可调用
        y_p = self.linear(x)
        return y_p
#model是可调用模型
model = LinearModel()
#它计算的就是(y_p -y)**2,size_average = False 表示不用再除以N了
criterion = torch.nn.MSELoss(reduction = 'sum')
"""
#优化器,SGD是类,parameters会检查model里面所有的成员,如果成员里有权重
就会把这些权重都加到你要训练的结果上
lr是学习率α
optimizer优化对象
"""
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
epoch_list = []
loss_list = []

for epoch in range(100):
    y_p = model(x_data)
    loss = criterion(y_p, y_data)
    #loss是标量
    print("Epoch=", epoch, 'Loss=', loss.item())
    #所有权重归零
    optimizer.zero_grad()
    #反向传播
    loss.backward()
    #权重更新
    optimizer.step()
    epoch_list.append(epoch)
    loss_list.append(loss)


print('w =', model.linear.weight.item())
print('b =', model.linear.bias.item())

x_test = torch.Tensor([4.0])
y_test = model(x_test)
print('y_p =', y_test.data)

plt.plot(epoch_list, loss_list)
plt.title('SGD')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()

部分结果如下:为了让图片更直观,我只进行了100次

***********************************************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值