ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Pytorch实战学习(一):用Pytorch实现线性回归

2021-07-31 16:32:07  阅读:199  来源: 互联网

标签:实战 Tensor ## pred self torch Pytorch 线性 model


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

P5--用Pytorch实现线性回归

建立模型四大步骤

 

一、Prepare dataset

mini-batch:x、y必须是矩阵

## Prepare Dataset:mini-batch, X、Y是3X1的Tensor
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

 

二、Design model

1、重点是构造计算图

 

 

##Design Model

##构造类,继承torch.nn.Module类
class LinearModel(torch.nn.Module):
    ## 构造函数,初始化对象
    def __init__(self):
        ##super调用父类
        super(LinearModel, self).__init__()
        ##构造对象,Linear Unite,包含两个Tensor:weight和bias,参数(1, 1)是w的维度
        self.linear = torch.nn.Linear(1, 1)
        
    ## 构造函数,前馈运算
    def forward(self, x):
        ## w*x+b
        y_pred = self.linear(x)
        return y_pred
    
model = LinearModel()

2、设置w的维度,后一层的神经元数量 X 前一层神经元数量

 

 

三、Construct Loss and Optimizer

##Construct Loss and Optimizer

##损失函数,传入y和y_presd
criterion = torch.nn.MSELoss(size_average = False)

##优化器,model.parameters()找出模型所有的参数,Lr--学习率
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

1、损失函数

 

 2、优化器

 

 可用不同的优化器进行测试对比

 

 

四、Training cycle

## Training cycle

for epoch in range(100):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss)
    
    ##梯度归零
    optimizer.zero_grad()
    ##反向传播
    loss.backward()
    ##更新
    optimizer.step()

 

完整代码

import torch

## Prepare Dataset:mini-batch, X、Y是3X1的Tensor
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])


##Design Model

##构造类,继承torch.nn.Module类
class LinearModel(torch.nn.Module):
    ## 构造函数,初始化对象
    def __init__(self):
        ##super调用父类
        super(LinearModel, self).__init__()
        ##构造对象,Linear Unite,包含两个Tensor:weight和bias,参数(1, 1)是w的维度
        self.linear = torch.nn.Linear(1, 1)
        
    ## 构造函数,前馈运算
    def forward(self, x):
        ## w*x+b
        y_pred = self.linear(x)
        return y_pred
    
model = LinearModel()

##Construct Loss and Optimizer

##损失函数,传入y和y_presd
criterion = torch.nn.MSELoss(size_average = False)

##优化器,model.parameters()找出模型所有的参数,Lr--学习率
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)


## Training cycle

for epoch in range(100):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss)
    
    ##梯度归零
    optimizer.zero_grad()
    ##反向传播
    loss.backward()
    ##更新
    optimizer.step()
    
## Outpue weigh and bias
print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())

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

 

运行结果

训练100次后,得到的 weight and bias,还有预测的y

 

 

标签:实战,Tensor,##,pred,self,torch,Pytorch,线性,model
来源: https://www.cnblogs.com/motoharu/p/15084489.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有