最近在学习Pytorch,在这里分享一些心得,其实如果也是入门的朋友可以直接参考我的这一个系列,因为比较接地气。Pytorch的安装我们这里忽略,
毕竟也不是什么难事。这一讲我们大概说一下Pytorch的Tensor,就像numpy的ndarray(如果你有接触过numpy),Tensor是Pytorch里面的主要操作
的数据形式,中文叫做张量,就是维度大于2的量。比如矩阵是二维,向量是一维,而张量就是三维以上了。下面话不多说直接就着代码和注释来理解吧同学们:
import torch
import numpy as np
'''
tensor 张量的一些操作
'''
a = torch.empty(5,3) # 构造一个5*3的矩阵 并且不初始化
a = torch.rand(5,3) # 均匀分布 0-1
a = torch.randn(5,3) # 连续标准正态分布 期望为0 方差为1
a = torch.zeros(5,3) # 全为0的矩阵
a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]], dtype=torch.int) # 可以直接使用python的list来进行初始化
b = a.new_ones(2,2) # b继承了a的元素属性类型 等 new_ + 各种其他初始化函数都可以变成一个这样的函数
b = torch.rand_like(a,dtype=torch.float) # _like 继承形状
'''
tensor 和 numpy之间的一些联系
'''
a = torch.eye(5,dtype=torch.int32)
b = a.numpy()
c = torch.from_numpy(b)
b += 1 # b + 1 操作之后会发现三个变量a b c全都变化了 说明其实她们公用的一块内存 以后操作时应该警惕
'''
tensor 的一些变化操作
'''
a = torch.rand(4,4)
b = a.view(-1,2) # view操作重整tensor的形状 -1是默认值的意思 计算机会根据2算出-1的地方应该是8(因为a有16个元素)
c = torch.ones_like(a)
d = a + c # 基本运算有 + - * / **k
d = torch.add(a,c)
d = torch.empty_like(a)
d = torch.add(a,c,out=d)
c.add_(a) # 这个比较特殊 是 把 a 加给 c
'''
对tensor简单的切片处理
'''
a = torch.tensor([[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[1,2,3],[1,2,3]],[[1,2,3],[1,2,3],[1,2,3]]]) #定义一个三维张量
b = a[:,:,1] # 这个该怎么理解呢 就是 消除第三层的中括号 怎么消除呢 就要把 第三层每个里面index为1的挑出来变成个序列
print(a.size())
print(a)
print(b)