pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍
文章目录
- 一、安装
- 二、基本使用方法
- ①创建一个矩阵
- ②获得随机值
- ③初始化全零矩阵
- ④直接传入数据
- ⑤构建矩阵,然后随机元素值
- ⑥展示矩阵大小
- ⑦矩阵计算
- 8、取索引
- 9、view操作:改变矩阵维度
- 10、与numpy的协同操作
- 三、自动求导机制
- 1)定义tensor成可求导的
- 2)演示框架进行反向传播流程
- 3)反向传播计算(由z对其他求导)
- 四、做一个线性回归模型
- ①输入数据并转成矩阵格式(注意这里的格式不是tensor而是np.array)
- ②输入y,这里y=2x+1
- ③导入torch
- ④线性回归模型代码
- ⑤执行好参数和损失函数
- ⑥开始训练模型
- ⑦测试模型预测结果
- ⑧模型的保存于读取
- ⑨用gpu进行训练
- 五、常见tensor格式
- 1)scalar介绍
- 2)vector:特征,比如身高、体重、年龄,形成一种人的特征(多个值)
- 3)Matrix:矩阵,一般都是多维
- 4)n-dimensional tensor
- 六、Hub模块介绍
- 1)通用github介绍使用地址
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介绍使用地址


有很多模型使用说明

