PyTorch学习笔记 (1)

PyTorch学习笔记 (1)


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(也称为标准正态分布)

    out i ∼ N ( 0 , 1 ) \text{out}_{i} \sim \mathcal{N}(0, 1) outiN(0,1)

    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

计算矩阵inputmat2的矩阵乘积。

如果 input 是一个 ( n × m ) (n \times m) (n×m) tensor, mat2 是一个 ( m × p ) (m \times p) (m×p) tensor, out将会是一个 ( n × p ) (n \times p) (n×p) tensor.

注意

该函数不能广播. 对于带广播的矩阵乘积,参看 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值