近日开始学习pytorch编程,对其中常用到的tensor操作进行简单整理,方便自己查取,如果更好的方法,欢迎留言。
- tensor的初始化
首先定义tensor的大小,记为size
# 支持多维的size
size = (dim1, dim2, ...)
常用的初始化方法
# a 返回大小为size的一个空tensor
a = torch.empty(size)
# b 返回大小为size的一个全为0的tensor
b = torch.zeros(size)
# b 返回大小和input tensor大小一样的一个全为0的tensor
b = torch.zeros_like(input)
# c 返回大小为size的一个全为1的tensor
c = torch.ones(size)
# c 返回大小和input tensor大小一样的一个全为1的tensor
c = torch.ones_like(input)
# d 返回大小为size的由[0,1)内的均匀分布随机数生成的一个tensor
d = torch.rand(size)
# d 返回大小和input tensor大小一样的由[0,1)内的均匀分布随机数生成的一个tensor
d = torch.rand_like(input)
- tensor的拼接
有时候需要对tensor按照某一维进行拼接,操作非常简单
# 将tensor a和tensor b按照第dim_k维进行拼接
a = torch.cat((a, b), dim_k)
- tensor的文件存取
训练得到的tensor可以存入文件,方便后续读取使用,避免每次花时间重新训练
思路为:tensor --> numpy --> save numpy --> load numpy -->tensor
import numpy as np
# step 1. ts_a为一个tensor,转化为numpy格式,存为np_a
np_a = ts_a.numpy()
# step 2. 存储numpy,文件名记录在变量file_embns中(后缀.npy)
np.save(file_embns, np_embns)
# step 3. 读取numpy,返回numpy格式,存为np_a
np_a = np.load(file_embns)
# step 4. np_a为一个numpy,转化为tensor格式,存为ts_a
ts_a = torch.from_numpy(np_a)
- tensor与python数据类型转化
#Tensor ----> 单个Python数据,data为Tensor变量且只能为包含单个数据
data.item()
#Tensor ----> Python list,data为Tensor变量,返回shape相同的可嵌套的list
data.tolist()
- 打印tensor信息
#data为Tensor变量,打印data维度
data.size()
data.shape
- 张量赋值
#data1为一张量,将其值赋给data2
## 直接赋值,若修改data2,data1的值会同步修改
data2 = data1
## 仅复制值,若修改data2,data1的值不会同步修改
data2 = data1.clone()
未完待续、随时更新…