pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍

pytorch作用:能在GPU中做矩阵运算

一、安装

①cpu和gpu版本的pytorch安装
在这里插入图片描述

  • 输入查看pytorch版本
import torch
torch.__version__
  • 输出
'1.3.0+cpu'

②安装cuda tookit(记得cuda版本和pytorch对应上)
在这里插入图片描述

二、基本使用方法

①创建一个矩阵

x = torch.empty(5,3)
x

在这里插入图片描述

②获得随机值

x = torch.rand(5,3) #5行3列矩阵
x

在这里插入图片描述

③初始化全零矩阵

x = torch.zeros(5,3,dtype=torch.long)
x

在这里插入图片描述

④直接传入数据

x = torch.tensor{[5.5,3]}
x

在这里插入图片描述

⑤构建矩阵,然后随机元素值

在这里插入图片描述

⑥展示矩阵大小

x.size()

在这里插入图片描述

⑦矩阵计算

y = torch.rand(5,3)
x + y 或 torch.add(x,y)

在这里插入图片描述

8、取索引

x[:,1]

在这里插入图片描述
这里x是这个
在这里插入图片描述

9、view操作:改变矩阵维度

x = torch.randn(4,4)
y = x.view(16)
z = x.view(-1,8)  #-1表示自动取计算

在这里插入图片描述

10、与numpy的协同操作

  • tensor转换成numpy的支持格式
a = torch.ones(5)
b = a.numpy()
b

在这里插入图片描述

  • numpy转tensor的操作
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
b

在这里插入图片描述

三、自动求导机制

1)定义tensor成可求导的

x = torch.randn(3,4,requires_grad=True)
x
或
x = torch.randn(3,4)
x.requires_grad=True
x

在这里插入图片描述

2)演示框架进行反向传播流程

①先相加计算,并调用sum接口
在这里插入图片描述

②开始反向传播

y.backward()
b.grad

在这里插入图片描述
可以看到对b求导就得1
③看requires_grad是true还是false(前面backward用到来求导就为true)
在这里插入图片描述
在这里插入图片描述
计算流程
在这里插入图片描述
查看叶子
在这里插入图片描述

3)反向传播计算(由z对其他求导)

注意:
不清零梯度默认累加,可以看到对z对b求导可以一直累加1
在这里插入图片描述

四、做一个线性回归模型

①输入数据并转成矩阵格式(注意这里的格式不是tensor而是np.array)

在这里插入图片描述

②输入y,这里y=2x+1

在这里插入图片描述

③导入torch

import torch
import torch.nn as nn

④线性回归模型代码

写出类和构造函数,这里继承nn.module模块类
在这里插入图片描述

构建输入和输出参数
在这里插入图片描述

⑤执行好参数和损失函数

1、按照1000次一个batch来训练
2、指定学习率.0.01
3、指定优化器SGD
4、指定优化器优化参数,也就是model.parameters()
5、指定损失函数MSELoss(计算真实值和预测值之间的误差)

⑥开始训练模型

1、把numpy格式转为tensor格式
2、梯度要清零每次迭代
3、前向转播
4、计算损失
5、反向传播(把梯度求出来但是没进行权重参数更新)
6、更新权重参数(每隔50次打印下损失值)
在这里插入图片描述
在这里插入图片描述

⑦测试模型预测结果

得出结果再转为numpy
在这里插入图片描述

⑧模型的保存于读取

torch.save(model.state_dict(), 'xxx')
model.load_state_dict(torch.laod('model.pkl'))

在这里插入图片描述

⑨用gpu进行训练

这里圈出来的是,如果cuda版本合适用GPU跑,不然用cpu跑
在这里插入图片描述
传到gpu设备训练
在这里插入图片描述

五、常见tensor格式

1)scalar:一个数值
2)vector:向量
3)matrix:矩阵
4)n-dimensional tensor 高纬度数据

1)scalar介绍

在这里插入图片描述

2)vector:特征,比如身高、体重、年龄,形成一种人的特征(多个值)

词向量:用多维的向量数值表达一个词的意思
在这里插入图片描述

3)Matrix:矩阵,一般都是多维

在这里插入图片描述

4)n-dimensional tensor

在这里插入图片描述

六、Hub模块介绍

  • 介绍
    调用别人训练好的模型
  • 举例
    ①比如说选择对象识别的模型
    在这里插入图片描述
    ②点开实验环境
    在这里插入图片描述

③会有怎么使用的介绍
在这里插入图片描述

1)通用github介绍使用地址

在这里插入图片描述

在这里插入图片描述

有很多模型使用说明

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值