Pythorch笔记(2)Tensor的相关

本文介绍了在PyTorch中创建张量的方法,包括随机矩阵、常数矩阵和从numpy转换,以及张量间的运算如加法、乘法和形状变换。此外,还详细讲解了张量的微分计算,涉及如何使用`requires_grad`追踪和执行反向传播来求梯度。
部署运行你感兴趣的模型镜像

Pytorch中的张量

Pythorch操作的基本对象是Tensor,即多维矩阵。如何在pythorch中创建一个Tensor呢?
torch.rand(X,Y) #生成X行Y列的随机矩阵
torch.randn(X,Y)#生成X行Y列的服从正态分布的随机矩阵
torch.zeros(X,Y)
#生成X行Y列的全零矩阵,把zeros改成ones就是全1矩阵;还可以(X,Y,Z)就是一个三维矩阵
torch.tensor()#创建一个tensor,下图的dtype是设置数据类型
x.type()#查看数据类型
x.type(torch.int64)#将数据类型变为64位整型
在这里插入图片描述

将numpy中的ndarray与Pytorch中的Tensor进行相互转换

a=torch.from_numpy(b)#将原本是numpy类型的b转换成Tensor类型
a.numpy() #将Tensor类型的a转换成numpy类型

张量之间的运算

#张量相加
x1=torch.rand(2,3)
x2=torch.rand(2,3)
#生成两个两行三列的x1,x2张量(矩阵)
x1+x2 #矩阵中的对应元素相加
x1+3 #矩阵中的每个元素都加3
torch.matmul(x1,x2)#矩阵乘法,等价于x1x2,与普通x1x2不同的是,这是两个tensor的乘法,即矩阵相乘
(x1-x2).pow(z) #x1-x2的z次方

#张量的shape进行转换
x1.view(3,2**)**#类似于numpy中的reshape操作,将原本是两行三列的tensor转换为三行两列
在这里插入图片描述
x1.view(-1,1) #-1是自动计算,1是展平,即深度学习中的flatten操作
x1.mean() #对矩阵求均值,得到一个均值,但本质上还是一个矩阵,不过该矩阵就一个值
x1.sum() #对矩阵求和,得到一个和值,但本质上还是一个矩阵,只不过该矩阵就一个值
x1.item() #求标量值,即不是一个矩阵

在这里插入图片描述

张量的微分计算

通常我们计算出loss后,需要通过反向传播去实现梯度下降,而这个微分运算实际上扮演的就是反向传播运算。如何实现微分呢,通过如下图所示步骤。只有grad为True时才能跟踪变量进行微分。
在这里插入图片描述

x=torch.ones(2,2,requires_grad=True) #设置一个两行两列的全1矩阵,并跟踪运算
y=x+2 #自定义的loss损失函数
y.backward() #反向传播
x.grad() #x的梯度

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值