1.pytorch安装和张量基础

1.pytorch安装
(1)进pytorch主页:点击这里进入pytorch主页
在这里插入图片描述
(2)下拉,选择适合自己电脑的版本并将命令复制到命令行中运行,实现pytorch的安装。
在这里插入图片描述
2.张量基础
(1)创建张量

import torch
#1:使用torch.Tensor创建向量
t1=torch.Tensor(2,3)#创建一个二行三列的张量
#2:创建一个按照0-1均匀分布随机初始化的张量
t2=torch.rand(2,3)
#3:创建一个按照标准正态分布随机初始化的张量
t3=torch.randn(2,3)
#4:创建一个全为0的张量
t4=torch.zeros(2,3)
#5:创建一个全为1的张量
t5=torch.ones(2,3)
#把上面全为1的向量t5填充成全为5的向量
t5.fill_(5)#这样有个下划线的方法会直接改变原来张量的值
#6:从列表创建和初始化张量
t6=torch.Tensor([[1,2,3],[4,5,6]])
#7:从numpy创建和初始化张量
import numpy as np
npy=np.random.rand(2,3)#得到一个2*3的随机初始化的数组
t7=torch.from_numpy(npy)
#8:创建递增数组
t8=torch.arange(6)

(2)张量的属性

#1:张量的类型
#在构造张量时指定类型---
#特定的构造函数
t1=torch.FloatTensor([[1,2,3],[4,5,6]])
t2=torch.LongTensor([[1,2,3],[4,5,6]])
#使用torch.tensor构造张量,并提供dtype
x = torch.tensor([[1, 2, 3],
                  [4, 5, 6]], dtype=torch.int64)
#将一种类型转成另一种类型
t1=t1.long()
t2=t2.float()

#2:张量的形状
print(t1.shape)
print(t2.shape)

#3:改变张量的形状
t1=t1.view(2,3)

(3)张量的操作

#张量相加
torch.add(t1,t2)
t1+t2
torch.sum(x,dim=0)#维度0相加
torch.sum(x,dim=1)#维度1相加
#改变张量维度的位置(维度的转置)
torch.transpose(x,0,1)

索引、切片和连接

#先创建一个张量
x=torch.arange(6).view(2,3)
#切片
x[:1,:2]

#索引
x[0,1]
#复杂索引:张量的非连续索引
indices=torch.LongTensor([0,2])
#要注意的是索引必须是LongTensor
#取索引对应的列
torch.index_select(x,dim=1,index=indices)
#取索引对应的行
indices=torch.LongTensor([0,0])
torch.index_select(x,dim=0,index=indices)
#取索引对应的行和列
row_indices=torch.arange(2).long()
col_indices=torch.LongTensor([0,1])
x[row_indices,col_indices]

#连接
x=torch.arange(6).view(2,3)
#dim=0是按行连接(增加行)
torch.cat([x,x],dim=0)
#dim=1是按列连接(增加列)
torch.cat([x,x],dim=1)
#张量堆叠
torch.stack([x,x])

张量上的线性代数:乘法

x1=torch.arange(6).view(2,3)
x2=torch.ones(3,2)
x2[:,1]+=1
#两个张量相乘
torch.mm(x1,x2)

(4)创建可以记录梯度的张量

x=torch.ones(2,2,requires_grad=True)
print(x.grad is None)#True
y = (x + 2) * (x + 5) + 3
print(x.grad is None)#True
z = y.mean()
z.backward()#反向传递,可以为向前传递的张量对象计算梯度值
print(x.grad is None)#False

3.在gpu上使用张量

#检查gpu是否可用
torch.cuda.is_available()
#得到设备名
device=torch.device("cuda" if torch.cuda.is_available() else "cpu")
#把张量移到目标设备
x=torch.rand(3,3).to(device)

当操作两个张量对象时,需确保它们在同一个设备上

来源:《Natural Language Processing with Pytorch》第一章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值