2021.11.20 新坑!!!
本文包括内容:2章预备知识: 2.1数学操作、 2.2数据预处理 、2.3线性代数
文章目录
二 预备知识
2.1 数据操作
2.1.1 入门操作
- 创建torch型数据
import torch
x = torch.arange(12)
x
tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
- 用
reshape()
来变形
x.reshape(3,4)
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
x
tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
-
我们发现,操作都是临时的 所以要改变形态,要赋一个名字(可以是同名)
-
torch的类型为
tensor
,是张量,可以理解成是向量的总成(后面会介绍) -
用
.shape
来看张量的形态
x.shape
torch.Size([12])
- 用
.numel()
来看元素个数
x.numel()
12
- 赋0 赋1
torch.zeros((2, 3, 4))
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.]]])
torch.ones((2, 3, 4))
tensor([[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]],
[[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]]])
randn()
随机赋值- 其中的每个元素都从均值为0、标准差为1的标准高斯(正态)分布中随机采样。
torch.randn(3, 4)
tensor([[ 2.5246, 0.2407, -1.5535, -0.1901],
[-0.1046, -0.9095, -0.0242, 2.6962],
[ 1.3211, 2.3679, -0.0362, 0.2089]])
- 直接创建张量
torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
tensor([[2, 1, 4, 3],
[1, 2, 3, 4],
[4, 3, 2, 1]])
2.1.2 运算
- 一般情况是元素之间做运算
x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([2, 2, 2, 2])
x + y, x - y, x * y, x / y, x ** y # **运算符是求幂运算
(tensor([ 3., 4., 6., 10.]),
tensor([-1., 0., 2., 6.]),
tensor([ 2., 4., 8., 16.]),
tensor([0.5000, 1.0000, 2.0000, 4.0000]),
tensor([ 1., 4., 16., 64.]))
- 用
torch.exp()
做e
的指数运算
torch.exp(x)
tensor([2.7183e+00, 7.3891e+00, 5.4598e+01, 2.9810e+03])
- 用
torch.cat()
做两个张量的连接操作,操作双方都是张量 dim = 0
是第一参考坐标系操作【行操作】dim = 1
是第二参考坐标系操作【列操作】
X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4]