pytorch常用工具包有哪些

发布时间:2023-02-24 15:37:24 作者:iii
来源:亿速云 阅读:152

本文小编为大家详细介绍“pytorch常用工具包有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“pytorch常用工具包有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、pytorch 简介

二、pytorch 优势

三、pytorch 常用工具包

  1. torch :类似 NumPy 的张量库,支持GPU;

  2. torch.autograd :基于 type 的自动区别库,支持 torch 之中的所有可区分张量运行;

  3. torch.nn :为最大化灵活性而设计,与 autograd 深度整合的神经网络库;

  4. torch.optim:与 torch.nn 一起使用的优化包,包含 SGD、RMSProp、LBFGS、Adam 等标准优化方式;

  5. torch.multiprocessing: python 多进程并发,进程之间 torch Tensors 的内存共享;

  6. torch.utils:数据载入器。具有训练器和其他便利功能;

  7. torch.legacy(.nn/.optim) :出于向后兼容性考虑,从 Torch 移植来的 legacy 代码;

四、pytorch 注意点

特别注意一个问题:
通道问题:不同视觉库对于图像读取的方式不一样,图像通道也不一样:
opencv 的 imread 默认顺序时 H * W * C
pytorch的Tensor是 C * H * W
Tensorflow是两者都支持

五、pytorch 理解

  1. numpy风格的tensor操作

  2. 变量自动求导

  3. 神经网络求导及损失函数优化等高层封装

六、pytorch-Tensor

1. tensor 数据类型

tensor数据类型:3浮点(float16,float32,float64)5整数(int16,int32,int64,int8+uint8)

Data typedtypeCPU tensorGPU tensor
16-bit floating pointtorch.float16 or torch.halftorch.HalfTensortorch.cuda.HalfTensor
32-bit floating pointtorch.float32 or torch.floattorch.FloatTensortorch.cuda.FloatTensor
64-bit floating pointtorch.float64 or torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor
Data typedtypeCPU tensorGPU tensor
8-bit integer(unsigned)torch.uint8torch.ByteTensortorch.cuda.ByteTensor
8-bit integer(signed)torch.int8torch.CharTensortorch.cuda.CharTensor
16-bit integer(signed)torch.int16 or torch.shorttorch.ShortTensortorch.cuda.ShortTensor
32-bit integer(signed)torch.int32 or torch.inttorch.IntTensortorch.cuda.IntTensor
64-bit integer(signed)torch.int64 or torch.longtorch.LongTensortorch.cuda.LongTensor
2. 创建 tensor 相关的 API

创建tensor的常见api

方法名说明
Tensor()直接从参数构造张量,支持list和numpy数组
eye(row,column)创建指定行数&列数的单位tensor(单位阵)
linspace(start,end,count)在[s,e]上创建c个元素的一维tensor
logspace(start,end,count)在[10s,10e]上创建c个元素的一维tensor
ones(size)返回指定shape的tensor,元素初始值为1
zeros(size)返回指定shape的tensor,元素初始值为0
ones_like(t)返回一个tensor,shape与t相同,且元素初始值为1
zeros_like(t)返回一个tensor,shape与t相同,且元素初始值为1
arange(s,e,sep)在区间[s,e)上以间隔sep生成一个序列张量
3. tensor 对象的 API

tensor 对象的方法

方法名作用
size()返回张量的shape
numel()计算tensor的元素个数
view(shape)修改tensor的shape,与np.reshape相似,view返回的是对象的共享内存
resize类似于view,但在size超出时会重新分配内存空间
item若为单元素tensor,则返回python的scalar
from_numpy从numpy数据填充
numpy返回ndarray类型

七、python 自动求导

tensor对象通过一系列运算组成动态图,每个tensor对象都有以下几个控制求导的属性。

变量作用
requird_grad默认为False,表示变量是狗需要计算导数
grad_fn变量的梯度函数
grad变量对应的梯度

八、pytorch 神经网络

torch.nn提供了创建神经网络的基础构件,这些层都继承自Module类。下面是自己手动实现一个线性层(linear layer)。适当参考,以后直接调用现成的接口,这里稍微了解一下,无实际意义。

import torch

class Linear(torch.nn.Module):
    def __init__(self, in_features, out_features, bias=True):
        super(Linear, self).__init__()
        # torch.randn() 返回一个符合均值为0,方差为1的正态分布
        self.weight = torch.nn.Parameter(torch.randn(out_features, in_features))
        if bias:
            self.bias = torch.nn.Parameter(torch.randn(out_features))

    def forward(self, x):
        # xW+b
        x = x.mm(self.weight)
        if self.bias:
            x = x + self.bias.expand_as(x)
        return x

if __name__ == '__main__':
    
    net = Linear(3,2)
    x = net.forward
    print('11',x)

下面表格中列出了比较重要的神经网络层组件
对应的在nn.functional模块中,提供这些层对应的函数实现。
通常对于可训练参数的层使用module,而对于不需要训练参数的层如softmax这些,可以使用functional中的函数。

pytorch常用工具包有哪些

一些容器:

容器类型功能
Module神经网络模块基类
Sequential序贯模型,类似keras,用于构建序列型神经网络
ModuleList用于存储层,不接受输入
Parameters(t)模块的属性,用于保存其训练参数
ParameterList参数列表1

容器代码:

# 方法1 像
model1 = nn.Sequential()
model.add_module('fc1', nn.Linear(3,4))
model.add_module('fc2', nn.Linear(4,2))
model.add_module('output', nn.Softmax(2))

# 方法2
model2 = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )
# 方法3        
model3 = nn.ModuleList([nn.Linear(3,4), nn.ReLU(), nn.Linear(4,2)])

编码三步走:

在pytorch中就只需要分三步:

  1. 写好网络;

  2. 编写数据的标签和路径索引;

  3. 把数据送到网络。

读到这里,这篇“pytorch常用工具包有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Pytorch多种模型构造方法
  2. Pytorch多层感知机的实现方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pytorch

上一篇:怎么使用Matlab绘制花里胡哨的山脊图

下一篇:C语言string库strcpy、strcmp、strcat函数如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》