caffe2第一个程序(1)

    本文主要是对caffe2官方文档中Intro Tutorial的梳理,并不是逐字翻译,已经有对这份文档的翻译,(一定要主读原文!翻译配合阅读!)但是官方文档是在不断更新的,本人觉得这份新的文档首先用model_helper来创建网络对新手理解caffe2构建网络的形式更加友好,因此就打算梳理下这份内容,原文:Intro Tutorial

caffe2第一个程序(1)_第1张图片

    文章首先大致介绍了blobs和workspace,blobs一般包含一个tensor(一个多维数组),且在python中会被转化为numpy数组。然后介绍了blobs在workspace中存储、读取数据的方式。

    文中试图创建一个简单的网络:

    (1)一个全连层

    (2)一个sigmoid和softmax

    (3)CrossEntropy loss

使用ModelHelper创建网络会生成两个网络:一个用来初始化的网络和一个用来训练的网络。下面我们来看看文中是如何体现出这两个网络的:

1. 定义权重和偏置时的初始化方式时,使用的是ModelHelper生成的第一个网络param_init_net,其中权重调用的是XavierFill op,偏置调用的是ConstantFill op。

2. 设置训练网络的结构时,使用的是ModelHelper生成的第二个网络net,注意同上一段类似,此处只是网络的定义,并不实际运行网络。

我们分别画出这两个网络的结构图(画图方式)

初始化网络:


caffe2第一个程序(1)_第2张图片

前向网络:


caffe2第一个程序(1)_第3张图片

分别对比初始化网络和前向网络的构造方式及其网络图,就比较容易理解如何去构造一个网络。初始化网络的构造和前向网络的构造是分开的,后期运行时,首先通过运行初始化网络将数据保存至workspace,前向网络通过读取workspace中的数据进行计算。

你可能感兴趣的:(caffe2第一个程序(1))