一. 概念:张量、算子
张量:为多维的数列,不同阶的张量表现为维度的不同。
算子:表示一种运算,其运算的输入和输出为算自定义上的空间。
不同:通俗的说这两者的不同表现为使用上的区别,如果用作储存数据即为张量,用作储存算法即为算子。
二. 使用pytorch实现张量运算
1.2 张量
1.2.1 创建张量
1.2.1.1 指定数据创建张量
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]])
1.2.1.2 指定形状创建
可以用reshape或者用view和resize_各有不同
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.]]])
1.2.1.3 指定区间创建
torch.randn(3, 4)
tensor([[-2.5123, -1.1003, -0.2248, -0.3949],
[-0.0733, 0.4029, -0.5090, 1.2428],
[ 0.0980, 0.4315, -0.7781, 0.6033]])
1.2.2 张量的属性
1.2.2.1 张量的形状
x = torch.arange(12)
x = x.reshape(3,4)
x.shape
torch.Size([3, 4])
1.2.2.2 形状的改变
可以用reshape或者用view和resize_各有不同
x = torch.arange(12)
x.reshape(3, 4)
x.view(4,3)
x.resize_(1,12)
tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
tensor([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
tensor([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]])
x.reshape(-1,4)
reshape仅通过行和列更改形状但是得是总数的因数
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
1.2.2.3 张量的数据类型
x = torch.arange(12)
type(x)
torch.Tensor
1.2.2.4 张量的设备位置
torch.cuda.is_available() #GPU是否可用
aa=torch.randn(3,3,device='cpu')