如何使用“top”和“bottom”参数构建网络架构。

12
在Caffe的prototxt中,每个层都包含“top”或“bottom”参数来指定层之间的连接。但有时候,“top”是指该层本身(为什么要将其与自身链接?),或者存在多个“top”层。 “top”和“bottom”参数的确切含义以及使用它们的规则是什么?
2个回答

19

这里有一个关于层和blob的混淆。

Caffe中,所有的数据都是以blob的形式表示。每个层接受零个或多个blobs,对它们进行转换,并发送零个或多个blobs。例如,ReLU层接受带有数据的单个blob,应用函数f(x) = x if x>0, 0 otherwise,并将结果作为单个blob输出。用于分类问题的数据层通常具有两个输出blob,一个用于数据,另一个用于标签,没有输入blob。

blobs被视为从底部向上移动通过网络。因此,输入blob称为bottom blob,输出blob称为top blob。

现在,在prototxt定义中,name属性存储层的名称。bottom属性存储输入blob的名称。top属性存储输出blob的名称,为了方便起见,通常取与层名称相同。如果该层有多个输入blobs,则有多个bottom属性;如果有多个输出blobs,则有多个top属性。


5

在Caffe中:

  1. 链接层之间的名称(顶部/底部参数)非常重要。
  2. 从一层到外部的链接是“top”,进入一层的链接是“bottom”。因此,一个来自一层的top连接作为底部连接到另一层。就像两个城镇(层)之间的高速公路(top/bottom)一样。Caffe通过您的top/bottom链接名称确定网络的结构。
  3. 层本身的名称远不如链接名称重要,也不包含结构信息。您只需要使它们合理且唯一即可。同一条高速公路将流量运输到两个城镇,无论它们的名称如何。
  4. 层和top/bottom的命名空间是分开的。因此,您可以将层命名为与top或bottom相同。这没有任何意义。但这很令人困惑,应该避免。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接