《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)

目录

5.PyTorch实现线性回归

① 准备数据集

② 设计模型

③ 构造损失函数和优化器

④ 编写训练周期

 作业:

关于pytorch中的张量和维度的概念


LEARNING PYTORCH WITH EXAMPLES

5.PyTorch实现线性回归

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第1张图片

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第2张图片

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第3张图片

① 准备数据集

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第4张图片

② 设计模型

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第5张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第6张图片《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第7张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第8张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第9张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第10张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第11张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第12张图片

 ③ 构造损失函数和优化器

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第13张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第14张图片

④ 编写训练周期

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第15张图片

 《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第16张图片

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第17张图片

 作业:

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第18张图片

#! /usr/bin/env python
# -*- coding: utf-8 -*-

'''
============================================
时间:2021.8.14
作者:手可摘星辰不去高声语
文件名:05-pytorch实现线性回归.py
功能:
1、Ctrl + Enter      在下方新建行但不移动光标;
2、Shift + Enter     在下方新建行并移到新行行首;
3、Shift + Enter     任意位置换行
4、Ctrl + D          向下复制当前行
5、Ctrl + Y         删除当前行
6、Ctrl + Shift + V  打开剪切板
7、Ctrl + /          注释(取消注释)选择的行;
8、Ctrl + E       可打开最近访问过的文件
9、Double Shift + /  万能搜索
============================================
'''
from abc import ABC

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]])
# print(x_data.shape)


class LinearModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()
        self.linear = torch.nn.Linear(1, 1)

    def forward(self, x):
        y_pred = self.linear(x)
        return y_pred


epoch_list = []
loss_list = []
model = LinearModel()
criterion = torch.nn.MSELoss(size_average=False)
optimzer = torch.optim.Rprop(model.parameters(), lr=0.01)
# 这个Rprop算法的效果和SGD的效果都特别好,但是其他的有些算法算着算着就发散了

for epoch in range(5000):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print("Epoch:{}\tMSE:{}".format(epoch, loss))
    optimzer.zero_grad()
    loss.backward()
    optimzer.step()
    epoch_list.append(epoch)
    loss_list.append(loss.data.item())

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

x_test = torch.Tensor([[4.0]])
y_pred = model(x_test)
print('y_pred = ', y_pred.data.item())

plt.plot(epoch_list, loss_list)
plt.xlabel("Epoch")
plt.ylabel("MSE")
plt.grid()
plt.show()

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第19张图片

关于pytorch中的张量和维度的概念

From:对pytorch中张量的形状和维度的理解https://blog.csdn.net/weixin_44729115/article/details/104727913

《PyTorch深度学习实践》完结合集 · Hongpu Liu · PyTorch实现线性回归(3)_第20张图片

 这个图就是非常非常的形象了!!!

你可能感兴趣的:(PyTorch)