• caffe tutorial


    caffe official tutorial: https://caffe.berkeleyvision.org/tutorial/net_layer_blob.html

    blobs, Layers, and Nets: anatomy of a caffe model  

    深度网络是一个由多个部件组成的模型,它能表征一系列作用于一堆数据的全连接层。这个网络从输入数据到输出loss定义了整个模型的bottom-to-top结构。数据及其衍生的中间数据通过forward和backward流经整个网路, 交流以及操纵信息都是通过blobs结构。blob 是一个标准数组以及框架内统一的内存接口。layer是模型和计算的基石。net是网和网之间的连接。blob的细节部分描述了信息是如何在layers/ nets中存储并进行交流的。

      solver 用于将模型与优化进行分隔, 解耦使得整个框架的面向对象属性更浓。

    blob storage and communication

      blob是一个caffe的数据包装器,同时保证在CPU和GPU中同步。数学上,blob是一个n维数组存储在连续空间中。

      caffe存储和交流数据都是用blobs。blob提供统一的接口存储数据:图像数据,模型参数,优化超参等!

      caffe中的blob可以存储图像数据,存储格式为NKHW。举个例子, 在一个四维的blob中,索引为(n,k,h,w)的数值物理上在内存中的地址为((n * K + k) * H + h) * W + w.

      除了四维的图像数据,blob 还可以表征两维的全连接数据。blobs(shape(N, D)).

      参数blob的维度受到层的类型type和configuration 所决定。如果是一个卷积层, 有96个filters, 每个filter的大小是11 * 11, 输入维度为3, 那么这个blob的参数个数为96 * 3 * 11 * 11。 如果是一个全连接层, 输出维度是1000, 输入维度是1024, 那么该层的blob形状为1000 * 1024.

      对于自定义数据, 可能需要破解您自己的输入准备工具或者数据层,但是一旦自定义数据完成,个人的工作部分就完成了。 层的模块化会帮您完成接下来的工作。 

    implementation details

      我们经常关心blob的梯度, 一个blob存储两块存储信息,一块是参数数据,一块是梯度。 前者是我们正常经过的参数信息,后者是网络所计算的梯度。

      更进一步,实际的数值存储在CPU或者GPU上, 有两种不同的方式去获取它们,一是常数方式,不改变数值;一是可变方式。

      有一段cpu gpu同步的东西没太看懂。

    layer computation and connections

      layer是模型的本质, 是计算的基本单元。layer 包括卷积,池化, 全连接, relu , sigmoid , eltwise,load  data, 计算loss(如softmax, hinge等)。

      layer 的输入时bottom, 输出是top.

      每一层包括三种关键的计算:setup、forward 和 backward。

      更特别地, 有两种forward和backward function需要实现,一种是cpu版本,一种是GPU版本。

      

  • 相关阅读:
    10.22 比赛总结 修剪草坪(mowlawn)、玉米迷宫(cornmaze)
    QProcess怎么实时的读到output的信息
    Qt Visual Studio Add-in 导出的 .pri 怎么用?
    Qt写Activex插件 总结
    osg中内嵌QtBrowser
    解决使用osgModeling的Loft生成管子时的bug(续)
    lua中的中文乱码
    std::string的split函数
    解决使用osgModeling的Loft生成管子时的bug
    Qt里的slot
  • 原文地址:https://www.cnblogs.com/jianfeifeng/p/11022211.html
Copyright © 2020-2023  润新知