网站推广软文,背景做网站公司,小说在线阅读网站怎么做,wordpress 图片id《Pytorch新手入门》第一节-认识Tensor 一、认识Tensor1.1 Tensor定义1.2 Tensor运算操作1.3 Tensor与numpy转换 参考《深度学习框架PyTorch#xff1a;入门与实践_陈云(著)》 一、认识Tensor
1.1 Tensor定义
Tensor 是 PyTorch 中重要的数据结构#xff0c;可认为是一个高… 《Pytorch新手入门》第一节-认识Tensor 一、认识Tensor1.1 Tensor定义1.2 Tensor运算操作1.3 Tensor与numpy转换 参考《深度学习框架PyTorch入门与实践_陈云(著)》 一、认识Tensor
1.1 Tensor定义
Tensor 是 PyTorch 中重要的数据结构可认为是一个高维数组。它可以是一个数(标量)一维数组(向量)二维数组(阵)或更高的数组。Tensor 和 numpy的ndarrays类似但Tensor 可以使用GPU加速。
import torch
# 创建一个5*3的矩阵
x torch.Tensor(5, 3)# 查看Tensor的形状
print(x.size())
# 查看Tensor某一维的大小两种写法等价
print(x.size()[0], x.size(1))torch.Size([5, 3])
5 3torch.size是tuple对象的子类因此它支持 tuple 的所有操作如xsize0[0]。
# 使用[0,1]均匀分布随机初始化二维数组
y torch.rand(5, 3)1.2 Tensor运算操作
# Tensor加法的三种写法
print(x y)
print(torch.add(x, y))
print(torch.add(x, y, outtorch.Tensor(5, 3)))# 将一个Tensor加到另一个Tensor
print(y.add(x)) #普通加法不改变y的内容
print(y.add_(x)) # inplace加法改变y的内容函数名后面带下划线_的函数会修改 Tensor 本身。例如x.add_()和x.t_()会改变x但x.add()和x.t()会返回一个新的 Tensor而x不变。 Tensor的切片操作与numpy类似Tensor还支持很多操作包括数学运算、线性代数、选择、切片等其接口设计与numpy极为相似。
print(x[:, 1])tensor([0.0000e00, 1.0516e-35, 0.0000e00, 1.0515e-35, 0.0000e00])1.3 Tensor与numpy转换
Tensor和numpy的数组间的互操作非常容易且快速。Tensor 不支持的操作可以先转为 numpy 数组处理之后再转回 Tensor。Tensor 和 numpy 对象共享内存所以它们之间的转换很快而且几乎不会消耗资源。
# tensor——》numpy array
a torch.ones(5)
b a.numpy()a tensor([1., 1., 1., 1., 1.])
b [1. 1. 1. 1. 1.]a.add_(1)a tensor([2., 2., 2., 2., 2.])
b tensor([2., 2., 2., 2., 2.])import numpy as np
# numpy array——》tensor
a np.ones(5)
b torch.from_numpy(a)Tensor可通过.cuda方法转为GPU的Tensor从而享受GPU带来的加速运算。
# 在不支持CUDA的机器下这一步不会运行
if torch.cuda.is_available():x x.cuda()y y.cuda()print(xy)