首页 > 其他分享 >pytorch深度学习实践(刘二大人)课堂代码&作业——线性回归

pytorch深度学习实践(刘二大人)课堂代码&作业——线性回归

时间:2024-08-02 20:52:43浏览次数:18  
标签:loss linear 刘二 torch list pytorch epoch 课堂 model

一、课堂代码

1.torch.nn.linear

构造linear对象,对象里包含了w和b,即直接利用linear实现wx+b(linear也继承自module,可以自动实现反向传播)

2.torch.nn.MSELoss

损失函数MSE包含2个参数:size_average(求均值,一般只考虑这个参数)、reduce(求和降维)

3.torch.optim.SGD

SGD优化器,设置需要更新的模型参数和学习率并在训练过程中迭代优化

import torch
import numpy as np
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]])

'''
1.把模型定义成一个类,继承自Module
2.最少要实现两个函数:
    一是构造函数__init__(),是初始化对象的时候默认调用的函数
    二是forward(),是前馈过程中需要执行的计算
3.继承自Module的对象会自动地根据你构建的计算图帮你实现backward
'''
class LinearModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()   #这一行照着做就行,别管
        self.linear = torch.nn.Linear(1, 1)   #构造linear对象,对象里包含了w和b,即直接利用linear实现wx+b(linear也继承自module,可以自动实现反向传播)
    
    def forward(self, x):
        y_pred = self.linear(x)   #nn.Linear已经包含了让实例可像函数一样调用的方法,通常是调用forward()
        return y_pred

model = LinearModel()  #同上,model也是可以调用的 model(x)

critertion = torch.nn.MSELoss(size_average=False)  #损失函数MSE包含2个参数:size_average(求均值,一般只考虑这个参数)、reduce(求和降维)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

'''
训练循环过程:
    1.y_predict
    2.loss
    3.backward
    4.更新权重
'''
l_list = []
epoch_list = []
for epoch in range(100):
    y_pred = model(x_data)
    loss = critertion(y_pred, y_data)
    print(epoch, loss.item())
    epoch_list.append(epoch)
    l_list.append(loss.item())

    optimizer.zero_grad()  #.backward()计算的梯度会累积,因此在反向传播前记得梯度归零
    loss.backward()    #反向传播
    optimizer.step()    #更新权重


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

#画图
plt.plot(epoch_list, l_list)
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.savefig('线性回归.png')

#Test Model
x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred =', y_test.data)

二、课后作业

尝试使用其他优化器并画出损失:

我已经在上面的代码中添加了绘制loss曲线的功能,本模型使用SGD优化器和adam优化器迭代100个epoch的loss曲线如下,大家可以尝试一下使用其他优化器,其他epoch并画出图像,对比一下效果~

SGD:

adam:

三、总结训练流程

标签:loss,linear,刘二,torch,list,pytorch,epoch,课堂,model
From: https://blog.csdn.net/weixin_51944652/article/details/140857455

相关文章

  • Pytorch笔记|小土堆|P10-13|transforms
    transforms对图像进行改造最靠谱的办法:根据help文件自行学习transforms包含哪些工具(类)以及如何使用————————————————————————————————————自学一个类时,应关注:1、如何使用各种工具(类)的使用思路:创建对象(实例化)——>传入参数,调用函数(如有__......
  • 探索在线教育平台开发:需求分析与云朵课堂解决方案
    一、深入剖析在线教育平台开发需求分析核心功能模块化讲师端:聚焦于教学创新与互动体验。支持高清视频直播、音频直播及图文教程发布;实时互动功能包括文字聊天、语音/视频连麦,以及教学白板与外设接入,让课堂生动有趣。此外,讲师还需具备课程管理、作业布置与批改、随堂测试设计、......
  • Pytorch笔记|小土堆|P7-8|Tensorboard数据可视化
    Tensorboard数据可视化TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况等。它通过运行一个本地服务器,来监听6006端口(可更改)。在浏览器发出请求时,分析训练时记录的数据,绘制训练过程中的图像当前环境下安装:pipinstalltensorboardSummaryWrit......
  • 每天五分钟玩转深度学习框架PyTorch:选择函数where和gather
    本文重点如图表所示,这几个方法可以理解为索引函数,有些函数在切片和索引一章进行了简单的介绍,本文将再次进行介绍,温故知新。index_select通过特殊的索引来获取数据index_select,这个这样来理解,第一个参数表示a的第几维度,第二个参数表示获取该维度的哪部分。我们把16,3,28,28看......
  • Pytorch笔记|小土堆|P5-6|Dataset类
    Dataset类作用:模型的数据集接口__init__将对象实例化,创建对象时obj=class(...,...)会立即被调用,需要提供(输入)类中使用到的变量。__getitem__通过img,label=obj[idx]获取(返回)每一个数据和label__len__通过len(obj)获取(返回)数据量点击查看代码fromtorch.utils.dataim......
  • Pytorch笔记|小土堆|P1-5
    Pytorch环境安装及配置1、创建conda环境,名为pytorchcondacreate-npytorchpython=3.102、在任务管理器的性能中确认显卡,是否支持CUDA。其次,确认显卡驱动,cuda9.2支持396.26以上的驱动,可以在命令行使用nvidia-smi来看自己驱动是否满足要求,如果低于396.26,可以使用各种管家更......
  • 伯克利Linux系统管理:基本命令与技巧 课堂与实验(系统简洁保姆级学习)
    目录一、前言:二、学习内容:2.1上课内容2.2实验内容三、问题描述四、解决方案:4.1进入目录并确认你的所在目录4.2目录中有一个隐藏文件,隐藏文件的秘密是什么?4.3一个消息拆分在所有文件中怎么找到这个消息?4.4用一个命令删除目录所有内容?4.5怎么在不打开文件情况下读取......
  • pytorch中保证代码复现的随机种子设置(Reproducibility)
    pytorch中保证代码复现的随机种子设置(Reproducibility)关注B站可以观看更多实战教学视频:hallo128的个人空间1.代码复现的必要性代码是用来设置整个笔记本的种子,以保证每次运行时得到相同的结果,实现结果的可重现性。首先,使用numpy和random库设置种子,然后使用torch库设置......
  • 从PyTorch官方的一篇教程说开去(5 - 神经网络 torch.nn)
    神经网络长啥样?有没有四只眼睛八条腿?借图镇楼- 真的是非常经典,可以给下面的解释省掉很多力气。分3个维度阐述- 1)输入数据集。假如你自己去微调一下大模型就知道,最开始的一步就是要准备(足够大的)数据集,比如百度就要求1kw条+的数据集,否则就不给你训练。PyTorch官方的数据......
  • 从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分
    原文链接:从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247610610&idx=5&sn=f973c3e430c89d6123ca8f4892086c55&chksm=fa827115cdf5f8036ef8111c6f06cf592a8c0587......