Pytorch和Numpy
pytorch中的张量就类似于numpy中的n维数组。但是pytorch可以通过.cuda()方法使用GPU加速计算。这篇文章主要介绍pytorch的一些基本操作。这里也贴一下Pytorch的网站,里面也有torch的函数的参数说明以及例子。
1.首先是导入包。
import torch #导入pytorch包
import numpy #导入numpy包
2.torch中常用的创建张量的方法
创建一个未初始化的2×3的矩阵
声明未初始化的矩阵,但使用前不包含确定的已知值。当创建一个未初始化的矩阵时,无论当时分配的内存中有什么值,都会显示为初始值。
a = torch.tensor([[1,2,3],[4,5,6]])#创建一个tensor([[1,2,3],[4,5,6]])
print(a.size())#获得张量a的形状,是一个元组
print(a)
x = torch.empty(2, 3)#多次运行可以看到,每次的x都是不一样的,因为未初始化
print(x.size())#获得张量x的形状,是一个元组
print(x)#此时的x未初始化,size与a相同。
y = torch.empty(2,3,out = a)
print(y.size())#获得张量y的形状,是一个元组
print(y)#运用a参数后,此时y和a一样了
empty_like = torch.empty_like(y) #创建一个size和y一样的未初始化张量。
print(empty_like.size())#获得张量empty_like的形状,是一个元组
print(empty_like)
关于torch.empty,torch.empty_like:
torch.empty(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor
'''
返回一个未初始化的张量,张量大小由参数size定义。
参数说明:
size(int…):是一个用于定义输出的张量的形状的整形序列,也可以是list或者turple。
out(Tensor,可选):要求的值为张量,默认为none。也可以令out为一个具体张量a(a的shape与参数size相同),这样输出的张量就会和a一样。上面的例子可以看出。
dtype(torch.dtype,可选): 要求的值的类型是torch.dtype,默认值是torch.set_default_tensor_type的值。可以通过这个dtype参数来改变输出的张量的数据类型。
layout(torch.layout,可选):torch.layput表示torch.Tensor内存布局的对象。这个参数表示你希望返回的张量的内存布局类型,默认为torch.strided。torch.strided代表密集型张量,是最常见的内存布局;每个strided张量都关联一个torch.Storage,torch.Storage保存着strided张量的数据。
device(torch.device,可选):创建的张量存放的device。
requires_grad(bool,可选):要求的值为bool类型,默认为False。若为False则反向传播时不会对这个节点求导。
'''
torch.empty_like(input, *, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format) → Tensor
'''
返回一个与input形状一样的使用未初始化值填满的tensor,相当于torch.empty(input.size(), dtype=input.dtype, layout=input.layout,
参数说明:
dtype(torch.dtype,可选): 要求的值的类型是torch.dtype,默认值是torch.set_default_tensor_type的值。可以通过这个dtype参数来改变输出的张量的数据类型。
layout(torch.layout,可选):torch.layput表示torch.Tensor内存布局的对象。这个参数表示你希望返回的张量的内存布局类型,默认为torch.strided。torch.strided代表密集型张量,是最常见的内存布局;每个strided张量都关联一个torch.Storage,torch.Storage保存着strided张量的数据。
device(torch.device,可选):创建的张量存放的device。
requires_grad(bool,可选):要求的值为bool类型,默认为False。若为False则反向传播时不会对这个节点求导。
memory_format(torch.memory_format, 可选): 期望返回张量的保存类型,默认为torch.preserve_format。torch.memory类型用于保存torch.Tensor的储存格式。torch.preserve_format是保留输入张量的内存格式,用在clone这样的函数中。如果输入张量是分配在稠密不重叠的内存中,那么输出张量的stride与输入相同。否则,输出的strides使用torch.contiguous_format。
'''
创建一个随机的初始化矩阵
x = torch.rand(2,3)
print(x)
关于torch.rand:
torch.rand(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
'''
返回服从均匀分布的初始化后的张量,张量大小由参数size定义。
参数说明:
size(int…):是一个用于定义输出的张量的形状的整形序列,也可以是list或者turple。
out(Tensor,可选):要求的值为张量,默认为none。也可以令out为一个具体张量a(a的shape与参数size相同),这样输出的张量就会和a一样。
dtype(torch.dtype,可选): 要求的值的类型是torch.dtype,默认值是torch.set_default_tensor_type的值。可以通过这个dtype参数来改变输出的张量的数据类型。
layout(torch.layout,可选):torch.layput表示torch.Tensor内存布局的对象。这个参数表示你希望返回的张量的内存布局类型,默认为torch.strided。torch.strided代表密集型张量,是最常见的内存布局;每个strided张量都关联一个torch.Storage,torch.Storage保存着strided张量的数据。
device(torch.device,可选):创建的张量存放的device。
requires_grad(bool,可选):要求的值为bool类型,默认为False。若为False则反向传播时不会对这个节点求导。
'''
创建一个全是0的矩阵,并且