zoukankan      html  css  js  c++  java
  • 【2021.02.24】加载数据集、多分类问题

    本期的学习来源是:https://www.bilibili.com/video/BV1Y7411d7Ys?p=8

    代码来源:https://blog.csdn.net/bit452/article/details/109680909

    全部的数据都使用被称为batch,最大化利用向量计算的优势,以提升计算的速度

    随机梯度下降只使用一个样本,可以帮我们克服鞍点,但训练时间较长

    因此中和一下,综合两者的概念便被称为mini-batch

    嵌套循环

    image-20210225003032516

    外层表示训练次数,内层表示batch迭代

    epoch:将样本进行一次正向传播和反向传播

    batch-size:每次训练时候的样本数量

    iteration:batch被分为多少个(内层循环次数

    样本数量=batch-size * iteration

    加载数据集

    Shuffle:作用是打乱顺序

    图中的batch-size=2,因此在最后打包的时候,两个分为一组

    image-20210225003909224

    dataset是抽象类, 无法被实例化,只能被子类去继承

    dataloader可以被实例化

    image-20210225004635437

    Dataset的功能

    在我们输入图像时,输出的结果如果也是图像,就很消耗内存

    Dataset可以帮助我们节省内存

    一、直接加载全部数据(适合小型,结构化的数据表

    二、分步加载数据(适合无结构数据、图像、语音

    Dataloader的功能

    加载数据

    传入参数有实例、batch-size、是否打乱、多线程参数

    (在使用多线程的时候,Windows上使用spawn替代掉fork函数

    image-20210225005836000

    例子

    image-20210225010137791

    以上图为例

    其中在__init__中的134条是加载数据相关,数据集是N行9列的数据,其中9列里8列是特征值。1列是标签

    而第二行的.shape[0]的作用是提取出N来

    因此我们在__len__中只需要返回len就可以得到样本数量了

    __getitem__则是返回内存中的元组

    image-20210225011053457

    多分类问题

    结果只判断为“是/否”的为二分类问题

    而多输出可以实现多分类问题,

    将每个分类作为二分类,每个分类的概率是多少

    (例如:y_hat1=0.9,y_hat2=0.8

    这样的输出是不好的

    最好的输出为所有分类的概率大于等于0,且所有的分类概率和为1

    因此我们要加个softmax layer层

    image-20210225102958575

    softmax layer层公式为

    [P(y=i)=frac{e^{z_{i}}}{sum_{j=0}^{K-1}e^{z_{i}}},iepsilonleft { 0,...,K-1 ight } ]

    其中的

    [e^{z_{i}} ]

    是为了保证概率大于等于0,当计算出来的z<0时候,带入上式子可>0

    image-20210225104210004

    而在计算损失函数的时候,将结果导入

    如果多分类问题有唯一解,则导入的结果中只有一个1(被称为one-hot

    image-20210225105727358

    通过softmax layer的运算得到的结果与one-hot的值可以算出损失函数

    相对吻合的结果,得到的交叉熵损失会较小,如下图

    image-20210225110125724

    minist数据集

    在做的时候可以将图像映射到[0,1]上

    image-20210225110404124

    from torchvision import transforms

    transform主要是进行图像的转换与映射

    minist数据集这种单色图,我们称作为单通道图,而对RGB图像我们称为多通道图

    读取图片时要使用W*H*C,宽x高x通道,或者如下图C*H*C

    image-20210225111047246

    转换成[0,1]分布,最适合神经网络的学习

    minist处理过程

    image-20210225112119901

  • 相关阅读:
    淘宝API学习之道:淘宝TOP之API接口接入教程
    hdu 2952 Counting Sheep
    【Java 虚拟机探索之路系列】:JIT编译器
    Android Afinal框架学习(一) FinalDb 数据库操作
    class、interface、struct的差别
    13个Cat命令管理文件实例汇总
    Linux df 命令用法示例
    九个uname命令获取Linux系统详情的实例
    Linux中查看进程的多线程
    精通Linux的“kill”命令
  • 原文地址:https://www.cnblogs.com/mokou/p/14444293.html
Copyright © 2011-2022 走看看