本文主要是对caffe2官方文档中Intro Tutorial的梳理,并不是逐字翻译,简书已经有对这份文档的翻译,(一定要主读原文!翻译配合阅读!)但是官方文档是在不断更新的,本人觉得这份新的文档首先用model_helper来创建网络对新手理解caffe2构建网络的形式更加友好,因此就打算梳理下这份内容,原文:Intro Tutorial
文章首先大致介绍了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,注意同上一段类似,此处只是网络的定义,并不实际运行网络。
我们分别画出这两个网络的结构图(画图方式)
初始化网络:
前向网络:
分别对比初始化网络和前向网络的构造方式及其网络图,就比较容易理解如何去构造一个网络。初始化网络的构造和前向网络的构造是分开的,后期运行时,首先通过运行初始化网络将数据保存至workspace,前向网络通过读取workspace中的数据进行计算。