PyTorch学习笔记 (1)
文章目录
- PyTorch学习笔记 (1)
- 常见函数学习
- 1. torch.rand()
- 2. torch.randn()
- 3. torch.mm()
- 4. torch.t()
- 5. torch.item()
- 6. torch.tolist()
PyTorch官网上有一个使用两层神经网络入门的教程,但是去理解该教程,需要首先从几个关键函数的定义入手。以下从官网上摘取以下六个函数的定义。首先了解这几个函数的功能,有利于理解这个两层神经网络的入门教程。
常见函数学习
1. torch.rand()
torch.rand
(*size, ***, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
返回一个标准分布在[0,1)区间内的随机tensor。
tensor的大小由变量参数size来指定。
- 参数
size (int…) – 一个integers序列,用来定义输出的tensor的形状大小。它可以是一个参数变量值,或一个集合,类似一个list或一个tuple。 - 键值参数
out (Tensor, 可选参数) – 输出tensor.dtype(torch.dtype,可选参数)- 指定返回tensor的数据类型。默认:如果是None
,则使用全局默认(查看torch.set_default_tensor_type())。
layout (torch.layout, 可选参数) – 指定返回tensor的layout. 默认:torch.strided
.
device (torch.device, 可选参数) – 指定返回tensor的device. 默认: 如果是None
, 则使用默认的tensor类型对应的当前设备(查看 torch.set_default_tensor_type()).device
如果是CPUtensor类型则指定为CPU,如果是CUDA tensor类型则指定为当前存在的CUDA设备。
requires_grad (bool, 可选参数) – 如果为autograd则将在返回的tensor上自动记录梯度。默认为:False
.
例:
>>> torch.rand(4)
tensor([ 0.5204, 0.2503, 0.3525, 0.5673])
>>> torch.rand(2, 3)
tensor([[ 0.8237, 0.5781, 0.6879],
[ 0.3816, 0.7249, 0.0998]])
2. torch.randn()
torch.randn
(*size, ***, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
返回一个以0为均值,以1为标准差的正态分布随机数列tensor(也称为标准正态分布)
tensor的大小由变量参数size
来指定。
参数
size (int…) – 用来指定输出tensor的形状大小的整数序列。可以是变量数值或者如list/tuple的数值集合。
关键字变量
out (Tensor, 可选参数) – 输出的 tensor.
dtype (torch.dtype, 可选参数) – 指定返回tensor的数值类型. 默认: 如果是
None
, 则使用全局默认 (查看 torch.set_default_tensor_type()).layout (torch.layout, 可选参数) – 指定返回tensor的层级. 默认:
torch.strided
.device (torch.device, 可选参数) – 指定返回tensor的设备。默认: 如果是
None
, 使用默认tensor类型的当前设备 (查看 torch.set_default_tensor_type()).device
如果是CPU tensor的类型,则设备为CPU,如果是CUDA tensor的类型,则设备为CUDA设备。requires_grad (bool, 可选参数) – 如果autograd被设置,则将在返回的tensor上记录梯度。默认:
False
.
- 例:
>>> torch.randn(4)
tensor([-2.1436, 0.9966, 2.3426, -0.6366])
>>> torch.randn(2, 3)
tensor([[ 1.5954, 2.8929, -1.0923],
[ 1.1719, -0.4709, -0.1996]])
3. torch.mm()
torch.mm
(input, mat2, ***, out=None) → Tensor
计算矩阵input
和mat2
的矩阵乘积。
如果 input
是一个 tensor, mat2
是一个 tensor, out
将会是一个
注意
该函数不能广播. 对于带广播的矩阵乘积,参看 torch.matmul().
这个算子支持TensorFloat32.
- 参数
input (Tensor) – 用来乘积的第一个矩阵
mat2 (Tensor) – 用来乘积的第二个矩阵 - 关键参数
out (Tensor, optional) – 输出tensor.
例:
>>> mat1 = torch.randn(2, 3)
>>> mat2 = torch.randn(3, 3)
>>> torch.mm(mat1, mat2)
tensor([[ 0.4851, 0.5037, -0.3633],
[-0.0760, -3.6705, 2.4784]])
4. torch.t()
torch.t
(input) → Tensor
期望输入不大于2-D的tensor,转置它的第0维和第1维。
0-D 和 1-D tensors 会原样返回. 当输入是一个2-D tensor时,这个函数与transpose(input, 0, 1)
功能相等,相当于转置.
- 参数
input (Tensor) – 输入 tensor.
例:
>>> x = torch.randn(())
>>> x
tensor(0.1995)
>>> torch.t(x)
tensor(0.1995)
>>> x = torch.randn(3)
>>> x
tensor([ 2.4320, -0.4608, 0.7702])
>>> torch.t(x)
tensor([ 2.4320, -0.4608, 0.7702])
>>> x = torch.randn(2, 3)
>>> x
tensor([[ 0.4875, 0.9158, -0.5872],
[ 0.3938, -0.6929, 0.6932]])
>>> torch.t(x)
tensor([[ 0.4875, 0.3938],
[ 0.9158, -0.6929],
[-0.5872, 0.6932]])
5. torch.item()
item
() → number
将tensor类型的数值返回成标准的python数据,这只对含单个元素的tensor起效。对其他种情形,请见tolist()。
该操作不可微分。
例:
>>> x = torch.tensor([1.0])
>>> x.item()
1.0
6. torch.tolist()
tolist
() → list or number
将tensor按(嵌入的)list形式返回。对于标量,会返回一个标准的Python数值,和item()一样。如有必要,tensors会自动移到CPU上。
该操作不可微分。
例:
>>> a = torch.randn(2, 2)
>>> a.tolist()
[[0.012766935862600803, 0.5415473580360413],
[-0.08909505605697632, 0.7729271650314331]]
>>> a[0,0].tolist()
0.012766935862600803
```python
>>> a = torch.randn(2, 2)
>>> a.tolist()
[[0.012766935862600803, 0.5415473580360413],
[-0.08909505605697632, 0.7729271650314331]]
>>> a[0,0].tolist()
0.012766935862600803