pytorch新⼿⾃学教程(⼀)
Pytorch详细新⼿⾃学教程(⼀)
前⾔
本教程参考书籍《深度学习⼊门之pytorch》
-----关于pytorch的优点这⾥不再说明,毕竟现在的主流仍然是TensorFlow。
1、环境配置可到pytorch官⽹搜索下载包的pip或conda指令,然后⽤cmd安装就⾏。前提是电脑⾥已经安装了pip或者conda并配置了相应的环境变量。
2、学习之前最好先了解python的numpy和matplotlib包,不过也可以边学边查⼀下相关⽤法
3、代码中使⽤包定义如下:
import torch
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable
Tensor(张量)
tensor的数据类型:32 位浮点型 torch.Float Tensor、 64 位浮点型 torch.DoubleTensor、 16 位整型 torch.Shor tTensor、 32 位整型 torch.lntTensor 和 64 位整型 torch.LongTensor, torch.Tensor 默认的是 torch.FloatTensor 数据类型。
·定义⼀个tensor:
1 a = torch. Tensor ([[2,3],[4,8],[7,9]])#定义⼀个tensor变量
web是网站的意思吗2print('a is: {}'.format(a))#⼀种输出⽅式:{}的内容为format括号⾥的内容
3print('a size is {}'.format(a.size()))#输出矩阵的维度
mysql应用技术介绍
·其他常⽤⽅式定义tensor矩阵:
x = torch. LongTensor ([[2,3][4,8][7,9]])#64位整型的tensor
x = s((3,2))#定义(3,2)的零矩阵
x = torch.randn((3,2))#定义(3,2)的正态分布随机矩阵
x = s(2,2)#构建数值均为1的矩阵
x = (3,3)#构建对⾓线为⼀的矩阵
·矩阵的数据类型转化:
a = torch. Tensor ([[2,3],[4,8],[7,9]])
a = a.float()# 转为FloatTensor
a = a.double()# 转为DoubleTensor
a = a.short()# 转为ShortTensor
a = a.int()# 转为IntTensor
a = a.long()# 转为LongTensor
·tensor与numpy的转化(某些包(如matplotlib)只识别numpy的矩阵):
a = torch. Tensor ([[2,3],[4,8],[7,9]])#a为tensor型
b = np.array(a)# b为numpy型
c = torch.from_numpy(b)# c为tensor型
Variable (变量)
Variable就是变量, Variable 提供了⾃动求导的功能。Variable 和 Tensor 本质上没有区别,不过 Variable 会被放⼊⼀个汁算图中,然后进⾏前向传播,反向传播,⾃动求导(神经⽹络基本的需求)。
·⾃动求导:
python入门教程 下载1# Create Varìable
2 X = Variable(torch.Tensor([1]), requires_grad=True)
3 W = Variable(torch.Tensor([2]), requires_grad=True)
4 b = Variable(torch.Tensor([3]), requires_grad=True)
#requires_grad=True ,这个参数表⽰是否对这个变量求梯度,默认的是 Fa!se ,也就是不对这个变量求梯度,这⾥我们希望得到这些变量的梯度,所以需要传⼊这个参数。
5 Y = W * X + b #y=2*x + 3
6 Y.backward()# y函数反向传递、⾃动求导
#x、w、b在x = 1、w = 2、b=3下的对x w b 的导数
c语言编程一对一辅导ad)#x. grad = 2
ad)#w.grad = 1
ad)#b .grad =1
·对矩阵求导:
文字加密解密x = torch.randn(3)
x = Variable(x , requires_grad =True)
y = x *2
print(y)
y.sor([1,0.1,0.01]))
ad)
jquery点击按钮切换图片#相当于给出了⼀个三维向量去做运算,这时候得到的结果ν就是⼀个向量
#这⾥对这个向量求导就不能直接写成 y.backward(),这样程序是会报错的。这个时候需要传⼊参数声明,⽐如 y.backward(torch.FloatTensor 1,1, 1) )). #这样得到的结果就是它们每个分量的梯度,或者可以传⼊ y.backward(torch.FloatTensor( [1, 0.1 , 0. 01] )) ,这样得到的梯度就是它们原本的梯度分别乘上 1 , 0.1 和 0.01。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论