【写在前面】:此专栏为本人在系统复习pytorch基础时写下的笔记,复习内容与进度参考一位在B站讲深度学习的up主(deep_thoughts),此笔记旨在帮助小伙伴快速入门和复习pytorch相关知识,写得不好的地方多担待,可直接移步up主的视频学习。此专栏全程无盈利性质。
up主(deep_thoughts)个人主页:
https://space.bilibili.com/373596439spm_id_from=333.788.b_765f7570696e666f.2
1. 创建tensor: torch.tensor() torch.from_numpy()
一般创建tensor时可以把ndarray传入torch.tensor()和torch.from_numpy(),也可以直接在torch.tensor()直接传入一个高维的list
import torch
import numpy as np
data_numpy = np.array([[1,2],[3,4]])
data_tensor = torch.tensor([[1,2],[3,4]])
data_tensor1 = torch.from_numpy(data_numpy)
data_tensor2 = torch.tensor(data_numpy)print(data_tensor,data_tensor1,data_tensor2)
2.torch.rand()
传入shape,随机生成自定义shape的tensor,数据是从[0,1)均匀分布抽的。
data = torch.rand(1,3,224,224)print(data)
3.torch.ones() torch.zeros()
传入shape,torch.ones()生成全1的tensor,torch.zeros()生成全0的tensor。
data1 = torch.ones(3,3)
data2 = torch.zeros(2,2,2)print(data1,data2)
4.torch.rand_like() torch.ones_like() torch.zeros_like()
传入一个tensor,生成和这个tensor的形状一样的tensor,rand_like就是从[0,1)均匀分布去取数,另外一个全1tensor一个全0tensor。
data2 = torch.zeros(2,2,2)
data3 = torch.rand_like(data2)
data4 = torch.ones_like(data2)
data5 = torch.zeros_like(data2)print(data5,data5.shape)
5.dtype shape devide
这些属于tensor的属性,dtype可查看tensor内数据的属性,创建tensor时可指定其数据类型。
data_tensor = torch.tensor([[1,2],[3,4]])print(data_tensor.dtype)# torch.int64
data_tensor = torch.tensor([[1,2],[3,4]],dtype=torch.float64)print(data_tensor.dtype)# torch.float64
shape:查看tensor形状。
print(data_tensor.shape)
device:查看tensor在哪上面运行,创建tensor时可指定其数据在cpu还是gpu上,但一般我们不在创建tensor时指定它的device,所以这里就不讲了。
print(data_tensor.device)
6.指定tensor在GPU上运行
前提是你的电脑有N卡,torch是gpu版本的,而且cuda和cudnn是配置好的,配置完整的过程不多说了,都是泪。
device = torch.device('cuda'if torch.cuda.is_available()else'cpu')print(device)
data = torch.ones(3,3)print(data.device)
data = data.to(device)print(data.device)
7.torch.is_tensor()
传入一个data,判断data是不是tensor。
data_numpy = np.array([[1,2],[3,4]])
data_tensor = torch.tensor([[1,2],[3,4]])print(torch.is_tensor(data_tensor))print(torch.is_tensor(data_numpy))
8.torch.complex() torch.is_complex()
torch.complex():创建一个tensor,里面有复数数据,传入的实部和虚部都必须是tensor类型的数据,看栗子。
data_tensor = torch.tensor([[1,2],[3,4]],dtype=torch.float)
a,b = data_tensor[0],data_tensor[1]
data_tensor_complex = torch.complex(a,b)print(data_tensor_complex)#tensor([1.+3.j, 2.+4.j])
torch.is_complex()不多说了。
9.torch.is_nonzero()
查看tensor中单个元素是否为0,如果传入的data不是单个数据则会报错。
data_tensor = torch.tensor([[1,0],[3,4]])print(torch.is_nonzero(data_tensor[0][0]))print(torch.is_nonzero(data_tensor[0][1]))
10.torch.numel()
传入一个tensor,查看此tensor所有元素的数目。其实也就是shape各个元素相乘
data_tensor = torch.rand(1,3,224,224)print(torch.numel(data_tensor))# 150528 = 1*3*224*224
11.torch.arange()
按照起点、终点、步长输出一组数据,有numpy基础的很好理解,注意输出是前闭后开的。
data_tensor1 = torch.arange(0,10,2)
data_tensor2 = torch.arange(0,10)print(data_tensor1)print(data_tensor2)
12.torch.eye()
传入一个shape,生成主对角线为1,其余位置为0的2维的tensor,你也可以输入非方阵的shape,那么输出的tensor。
data_tensor1 = torch.eye(3)print(data_tensor1.shape)print(data_tensor1)
data_tensor2 = torch.eye(3,2)print(data_tensor2.shape)print(data_tensor2)
版权归原作者 cat比deeplearning重要 所有, 如有侵权,请联系我们删除。