1.tensor的简介

Pytorch最基本的操作对象是Tensor(张量),它表示一个多维矩阵,张量类似于NumPyndarrays,
张量可以在GPU上使用以加速计算。Tensor可以跟踪计算图和计算梯度。Numpy的计算无法像Tensor一样在GPU上加速。
张量表示由一个数值组成的数组,这个数组可能有多个维度。 具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix); 具有两个轴以上的张量没有特殊的数学名称。

2.基础使用

2.1导包

import torch

2.2入门

首先,我们可以使用 arange 创建一个行向量 x。这个行向量包含以0开始的前12个整数,它们默认创建为整数。也可指定创建类型为浮点数。张量中的每个值都称为张量的 元素(element)。例如,张量 x 中有 12 个元素。除非额外指定,新的张量将存储在内存中,并采用基于CPU的计算。

x = torch.arange(12)
print(x)

pytorch tensorboard教程 pytorch的tensor_深度学习


一些常见的功能(打印代码未展示)

x = torch.arange(12) #生成0开始的前12个整数
shape = x.shape #访问张量(沿每个轴的长度)的形状
numel = x.numel() #如果只想知道张量中元素的总数,即形状的所有元素乘积,可以检查它的大小(size)
X = x.reshape(-1, 4) #改变形状,-1代表自动匹配 即3*4
zero = torch.zeros((2, 3, 4)) #2组3*4的0矩阵
one = torch.ones(2, 5) #1矩阵
random = torch.randn(3, 4) #随机
xx = torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

结果展示

pytorch tensorboard教程 pytorch的tensor_运算符_02

2.3 运算符

对于任意具有相同形状的张量, 常见的标准算术运算符(+、-、*、/和**)都可以被升级为按元素运算。

x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([2, 2, 2, 2])

print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x ** y) # **运算符是求幂运算

exp = torch.exp(x) #e的多少次方
print(exp)

pytorch tensorboard教程 pytorch的tensor_pytorch_03

2.4 索引和切片

下次在学

2.5 广播机制

在某些情况下,即使形状不同,我们仍然可以通过调用 广播机制(broadcasting mechanism)来执行按元素操作。 这种机制的工作方式如下:首先,通过适当复制元素来扩展一个或两个数组, 以便在转换之后,两个张量具有相同的形状。 其次,对生成的数组执行按元素操作。

a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
ab = a + b

print(a)
print(b)
print(ab)

在大多数情况下,我们将沿着数组中长度为1的轴进行广播

计算过程:

pytorch tensorboard教程 pytorch的tensor_数组_04

结果:

pytorch tensorboard教程 pytorch的tensor_python_05


特别情况:

此处如果是乘法,是对应相乘,而不是矩阵相乘

import torch

a = torch.arange(3).reshape((3, 1))
b = torch.arange(2).reshape((1, 2))
ab = a * b

print(a)
print(b)
print(ab)

过程:

pytorch tensorboard教程 pytorch的tensor_深度学习_06

结果:

pytorch tensorboard教程 pytorch的tensor_数组_07