Pytorch小结

官方文档:官方帮助

Pytorch安装(Windows)

使用anaconda管理工具安装,命令为:

conda install pytorch torchvision

安装时常常会找不到资源,建议添加清华源镜像之后再执行上述命令,添加方式如下:

conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

张量(Tensor)

PyTorch 在很多方面的行为都和 Numpy 数组很像。这些 Numpy 数组毕竟只是张量。PyTorch 采用这些张量并使我们能够轻松地将张量移到 GPU 中,以便在训练神经网络时加快处理速度。它还提供了一个自动计算梯度(用于反向传播!)的模块,以及另一个专门用于构建神经网络的模块。
神经网络计算只是对张量进行一系列线性代数运算,矩阵是张量的一种形式。向量是一维张量,矩阵是二维张量,包含 3 个索引的数组是三维张量(例如 RGB 颜色图像)。神经网络的基本数据结构是张量,PyTorch(以及几乎所有其他深度学习框架)都是以张量为基础。
在这里插入图片描述

创建

张量默认数据类型为torch.FloatTensor,可以使用Torch.dtype修改。还可以使用Torch.device修改变量位置(CPU 或者 GPU),以实现CPU或者GPU计算。

>>> torch.zeros([2, 4], dtype=torch.int32)
tensor([[ 0,  0,  0,  0],
        [ 0,  0,  0,  0]], dtype=torch.int32)
>>> cuda0 = torch.device('cuda:0')
>>> torch.ones([2, 4], dtype=torch.float64, device=cuda0)
tensor([[ 1.0000,  1.0000,  1.0000,  1.0000],
        [ 1.0000,  1.0000,  1.0000,  1.0000]], dtype=torch.float64, device='cuda:0')

方法

x = torch.rand(3, 2)
x
y = torch.ones(x.size())
y
z = x + y
z
z[0]
z[:, 1:]

输出为:

tensor([[0.9867, 0.1393],
        [0.6275, 0.8997],
        [0.7182, 0.8201]])
tensor([[1., 1.],
        [1., 1.],
        [1., 1.]])
tensor([[1.9867, 1.1393],
        [1.6275, 1.8997],
        [1.7182, 1.8201]])
tensor([1.9867, 1.1393])
tensor([[1.1393],
        [1.8997],
        [1.8201]])

张量通常有两种类型的方法,一种方法返回另一个张量,另一种方法原地执行运算。即该张量在内存中的值发生了改变,没有创建新的张量。原地函数始终带有下划线,例如 z.add() 和 z.add_()。

z.add(1)
z
z.add_(1)
z

输出为:

tensor([[2.9867, 2.1393],
        [2.6275, 2.8997],
        [2.7182, 2.8201]])
tensor([[1.9867, 1.1393],
        [1.6275, 1.8997],
        [1.7182, 1.8201]])
tensor([[2.9867, 2.1393],
        [2.6275, 2.8997],
        [2.7182, 2.8201]])
tensor([[2.9867, 2.1393],
        [2.6275, 2.8997],
        [2.7182, 2.8201]])

改变张量的形状是一个很常见的运算。首先使用 .size()获取张量的大小和形状。然后,使用 .resize_()改变张量的形状。注意下划线,改变形状是原地运算。

z.size()
z.resize_(2, 3)

输出为:

torch.Size([
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值