程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(2)

PyTorch学习

发布于2019-08-07 14:54     阅读(999)     评论(0)     点赞(2)     收藏(3)


PyTorch

英文手册 https://pytorch.org/docs/stable/index.html
中文手册推荐使用 https://pytorch-cn.readthedocs.io/zh/latest/

搬砖的学习

PyTorch常见小问题

  • 输入的图像数据进行转置,即原图H x W x C,Pytorch的Tensor为C X H X W(搞笑问题) num_workers:使用多进程加载的进程数,0代表不使用多进程

PyTorch框架Train分析

PyTorch数据集
Dataset 类:

  1. _getitem_函数,getitem 接收一个 index,然后返回图片数据和标签,这个index 通常指的是一个 list 的 index,这个 list 的每个元素就包含了图片数据的路径和标签信息。
  2. 构建Dataset的子类(将其存到一个list的一行中,然后循环),然后就可以吧数据放到DataLoder中,然后访问getiterm函数读取标签+图像,然后拼成一个Batch,输入到模型中。
    在这里插入图片描述

PyTorch模型

  1. 继承 nn.Module 这个类
  2. __init__(self)中设置好需要的“组件"(如 conv、pooling、Linear、BatchNorm等) (3)在 forward(self, x)中用定义好的“组件”进行组装,def forward(self, x):,x 为模型的输入
    nn.Sequetial就是一个可以按照顺序封装初始化层的容器

权值初始化

  1. 基础步骤:先设定什么层用什么初始化方法,实例化一个模型之后,执行该函数,即可完成初始化。
  2. 按需定义初始化方法,例如:
    if isinstance(m, nn.Conv2d):
    n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
    m.weight.data.normal_(0, math.sqrt(2. / n))

PyTorch代码小手册

torch

  • torch.sum(input, dim, out=None)→ Tensor #与python中的sum一样
    input (Tensor) – 输入张量
    dim (int) – 缩减的维度,开始的时候不理解为什么英文文档里面会说这是缩减的维度,对于高维度的数组如(QxWxExR),对dim=1进行sum,那么其得到的维度就是QxExR,保留最高维度Q的形状,对W维度对应最小的元素进行求和,所以W维度就会消失,其他的函数的维度处理也是这样理解。
    out (Tensor, optional) – 结果张量
    print(x.sum(0))#对一维的数求和,按列求和
    print(x.sum(1))#对二维求和按行求和
    print(x.sum(2))#将最小单位的数组元素相加即可
  • new_features = super(_DenseLayer, self).forward(x)
    最后在官方论坛上得到结果,含义是将调用所有add_module方法添加到sequence的模块的forward函数。
  • torch.where(condition, x, y) → Tensor对于x而言,如果其中的每个元素都满足condition,就返回x的值;如果不满足condition,就将y对应位置的元素或者y的值
  • torch.narrow(input, dimension, start, length) 张量剪裁
  • permute把张量变换成不同维度,view相当于reshape,将元素按照行的顺序放置在新的不同大小的张量当中
  • torch.cat(tensors, dim=0, out=None) → Tensor将张量按照维度进行衔接
  • torch.gesv(B, A, out=None) -> (Tensor, Tensor)是解线性方程AX=B后得到的解
  • (1) torch.unsqueeze(input, dim, out=None) → Tensor 在指定位置增加一个一维的维度
    dim (int) – the index at which to insert the singleton dimension
    (2) torch.squeeze(input, dim, out=None) → Tensor 在指定位置减去一个一维的维度,默认()就是把所有shape中为1的维度去掉
  • detach()就是取出一个该个tensor,并且它不会再参与梯度下降

torch.nn

PyTorch_Tools

  • torchsummary
    #Sample:
    import torch, torchvision
    from torchsummary import summary
    model = torchvision.models.vgg16()
    summary(model, (3, 224, 224))

学习小结

2019.7.9更新:最近接触新的论文和模型框架,梳理了一下整个学习过程:第一步是读懂论文关于整个框架的布置,知道数据是如何变化的,比如是否降分辨率,维度变化,属于分类还是拟合、聚类,找出核心和疑惑的点;第二步读懂代码在这个框架下,数据要如何预处理(需要结合特殊要求做变化),清楚核心和疑惑的点;第三步梳理整个过程,形成和完善文档;第四步改模型,调参啊敲代码之类的就是以后的事情了····

参考目录
https://github.com/tensor-yu/PyTorch_Tutorial



所属网站分类: 技术文章 > 博客

作者:pinggo

链接:https://www.pythonheidong.com/blog/article/11403/494617cefe2dccf2bea3/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)