pytorch基础复习1.1——常用API

【写在前面】:此专栏为本人在系统复习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)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>