在深度学习中,我们通常将数据以张量的形式进行表示。几何代数中定义的张量是基于向量和矩阵的推广,比如我们可以将标量视为零阶张量,矢量视为一阶张量,矩阵就是二阶张量。
张量维度 | 代表含义 |
0 阶张量 | 代表标量(数字) |
1 阶张量 | 代表向量 |
2 阶张量 | 代表矩阵 |
3 阶张量 | 时间序列数据、股价、文本数据、单张彩色图片(RGB) |
张量是现代机器学习的基础,它的核心是一个数据容器。
比如,一个图像可以用三个字段表示:
(height, width, channel) = 3D
但是,在机器学习工作中,我们经常要处理不止一张图片或一篇文档------我们要处理一个集合。我们可能有 10000 张郁金香的图片,这意味着,我们将用到 4D 张量:
(batch_size, height, width, channel) = 4D
基础构造函数,传入参数 sizes 为你要构造的张量的大小
import torch
x = torch.Tensor(4, 3)
print(x)
output: 大小为 4 行 3 列的 tensor
tensor([[0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00],
[2.7403e+31, 4.5894e-41, 0.0000e+00],
[4.5894e-41, 0.0000e+00, 0.0000e+00]])
传入参数为数据,该方法可以将传入的数据转换为张量类型,类似于 np.array()
x = torch.tensor(((3, 4), (5, 6)))
y = torch.tensor([[5, 6], [7, 8]])
print(x)
print(y)
output: 大小为 2 行 2 列的 tensor
tensor([[3, 4],
[5, 6]])
tensor([[5, 6],
[7, 8]])
Returns a tensor filled with the scalar value 1, with the shape defined by the variable argument size.
返回大小为 size 的张量,且张量的元素全为 1.
x = torch.ones(3, 4)
y = torch.ones(4, 3)
print(x)
print(y)
output1: 大小为 3 行 4 列且元素全为 1 的 tensor
output2: 大小为 4 行 3 列且元素全为 1 的 tensor
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
Returns a tensor filled with the scalar value 0, with the shape defined by the variable argument size.
返回大小为 size 的张量,且张量的元素全为 0.
x = torch.zeros(3, 4)
y = torch.zeros(2, 4, 3)
print(x)
print(y)
output1: 大小为 3 行 4 列且元素全为 0 的 2-D tensor
output2: 大小为 2 个 4 行 3 列且元素全为 0 的 3-D tensor
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])tensor([[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]],[[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]]])
Returns a 2-D tensor with ones on the diagonal and zeros elsewhere.
返回对角线位置元素为 1,其余元素为 0 的 2-D tensor
x = torch.eye(2, 2)
print(x)
output: 大小为 2 行 2 列且对角线元素为 1 的 2-D tensor
tensor([[1., 0.],
[0., 1.]])
Returns a 1-D tensor of size [(end - start)/step]向上取整 with values from the interval [start, ebd) taken with common difference step beginning from start.
从 start 到 end(不包括 end),步长为 step
x = torch.arange(0, 5, 2)
print(x)
output: 大小为 3 的 1-D tensor
tensor([0, 2, 4])
Creates a one-dimensional tensor of size steps whose values are evenly spaced from start to end, inclusive.
从 start 到 end, 均匀分成 steps 份
x = torch.linspace(0, 5, 3)
print(x)
output: 大小为 3 的 1-D tensor
tensor([0.0000, 2.5000, 5.0000])
Returns a tensor filled with random numbers from a uniform distribution on the interval [0, 1).
返回大小为 size 的 tensor, 且元素是从 [0, 1) 的均匀分布中随机抽样得到的
x = torch.rand(3, 4)
print(x)
output: 大小为 3 行 4 列的 2-D tensor
tensor([[0.8534, 0.4159, 0.6908, 0.6090],
[0.9596, 0.6302, 0.2386, 0.0030],
[0.0385, 0.0453, 0.9093, 0.7404]])
Returns a tensor filled with random numbers from a normal distribution with mean 0 and variance 1 (also called the standard normal distribution).
返回大小为 size 的 tensor, 且元素是从 N(0, 1) 的标准正态分布中抽样得到的
x = torch.randn(3, 4)
print(x)
output: 大小为 3 行 4 列的 2-D tensor
tensor([[-0.5574, 0.2918, -0.1390, -0.4547],
[-0.2857, 1.3215, -0.8996, 0.9009],
[ 0.0821, 0.4812, -0.7390, 0.9282]])
Returns a tensor of random numbers drawn from separate normal distributions whose mean and standard deviation are given. The resulting tensor has size given by size.
返回大小为 size 的 tensor, 且元素是从 均值为 mean, 标准差为 std 的正态分布中抽样得到的
x = torch.normal(2, 3, size=(1, 4))
print(x)
output: 大小为 1 行 4 列的 2-D tensor
tensor([[ 3.2998, -1.4687, -4.2944, 3.8635]])
Returns a random permutation of integers from 0 to n - 1.
返回 0 ~ n - 1 之间整数的随机排列
x = torch.randperm(4)
print(x)
output: 大小为 4 的 1-D tensor
tensor([3, 0, 1, 2])
深入浅出PyTorch — 深入浅出PyTorch
PyTorch documentation — PyTorch 1.13 documentation