• Pytorch Pytorch+深度学习神经网络相关学习收获


    一、基础知识

    机器学习 本质就是通过 数据+答案的数据集 经过机器学习的训练 得到相关的规则进行预测

    对应224×224×3的图像 代表的意思是 高×宽×通道
    3通道可以理解为RGB

    二、Pytorch

    pytorch好处
    ①利用GPU进行加速
    ②用于构建深度神技网络

    三、如何实现一个神经网络

    get_data() 准备数据 准备输入输出的张量(张量可以理解为数组)
    get_weights() 创建学习参数,最原始的参数都是随机得到的,然后一步步优化
    simple_network() 简单的网络架构 最简单的是线性规则作为输入产生对应的输出 y=wx+b
    loss_fn() 损失函数,用来评估模型性能的好坏,同时可以作为优化器的输入 进行进一步的性能优化 常用的指标是误差平方和 SSE MSE
    optimize() 优化器,调整初试随机权重(根据loss调整参数)

    四、pytorch的数据类型

    pytorch 有两种数据类型(张量和变量)
    张量类似numpy中的数组
    0维张量:标量 FloatTensor 或 LongTensor
    1维张量:向量 元素序列的数组
    2维张量:矩阵
    3维张量:多个矩阵累加到一起(宽,高,颜色)
    切片张量:进行截取
    4维张量:一批图像
    5维张量:视频
    通常用cuda()方法,将张量从cpu复制到gpu

    五、常用结构

    torch.random 任意给定形状创建随机值
    loss 评估损失
    learning_rate 超参数,用较小梯度调整
    优化器 常用的有Adam、RMSprop、SGD优化
    加载数据:
    DataSet类:任何数据集都要继承这个类,并且要实现__len__(self)与__getitem__(self,idx)方法
    Dataloader:这个类位于pytorch 的utils类中,负责将数据集对象与不同取样器联合

    常用的非线性函数有:sigmoid、tanh、ReLU、Leaky ReLU
    ①fx=1/(1+e^x)
    输入实数,0-1之间输出,极大负值更接近0,极大正值更加接近1
    ②tanh
    -1到1之间
    ③ReLU
    fx=max(0,x)
    有助于更快找到权重集合,随机梯度收敛快
    成本低,只是判断就行
    缺点:有很大梯度反向传播时,神经元完全无效,可通过选择对应的学习率来控制
    ④Leaky ReLU
    非连续 饱和度设为0.001

    六、构造神经网络的相关知识

    pytorch子类要调用nn.Module
    init初始化层,forward 传值并且返回输出

    优化器需要一个标量值,由loss层生成,有时需要多个

    也可以是交叉熵损失(总和为1)

    loss=nn.CrossEntropyLoss()/nn.MSELoss()
    input=Variable(torch.random(3,5),requires_grad=True)
    target=Variable(torch.LongTensor(3).random_(50))
    output=loss(input,output)
    output.backward()

    常用的损失函数
    L1loss 正则化使用
    MSELoss 均方误差损失,用于回归
    CrossEntropyLoss 交叉熵损失,用于二分类和多类别分类
    NLLLoss 用于分类
    NLLLoss2d 像素级分类

    常用的优化网络架构
    ADADELTA
    Adagrad
    Adam
    Sparse
    Adamax
    ASGD
    LBFGS
    RMSprop
    Rprop
    SGD

    优化中要记得用zero_grad()函数避免参数累加

    七、数据集处理

    glob方法返回特定路径的所有文件,文件巨大可以用iglob

    pytorch对数据做的工作
    1、转换为同等大小
    2、用数据集的均差和标准差归一化
    3、图片数据转换为Pytorch张量

    DataLoader: 两个参数
    1、shuffle 为True的时候,每次调用混合排列图片
    2、num_workers:用于并发 并发进程个数

    通过torchvision.models 获取模型

  • 相关阅读:
    React请求机制优化思路
    计算机毕业设计Java网上投稿管理系统(源码+系统+mysql数据库+Lw文档)
    前后端分离(前端)
    局域网无法上网主机通过TinyProxy代理主机访问公网Internet
    猪齿鱼平台常用前端css实现方案
    CentOS7安装Redis集群
    操作 Structured Streaming
    比特币抛售潮导致73亿美元损失
    如何将pdf拆分为单页?推荐这些方法
    详细介绍Unlink的原理及分析
  • 原文地址:https://blog.csdn.net/Wantfly9951/article/details/132836731