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介绍使用地址
有很多模型使用说明