我想我会在这里问多个Quesitons,我希望有任何评论,因为我是Caffe的新闻。
在我的网络输入图像中有大小1x41x41
,因为我使用的是64批量大小,我认为数据大小为 64x1x41x41
(如果这是错误的,请纠正我)
在一些卷积层(不会更改数据大小)之后,我想用大小1x41x41
的预定义斑点乘以结果数据。使用EltwiseLayer
进行乘法似乎很方便。因此,为了定义Eltwise
的第二层底层,我需要为BLOBS提供另一个输入数据。(请告知是否可以其他方式完成)
第一个问题:批处理培训使我感到困惑。如果我想在EltwiseLayer
中用单个斑点乘以一批图像,底部尺寸是否相同?换句话说,我应该使用repmat
(MATLAB)来克隆64个斑点以具有64x1x41x41
的大小,或者我只能插入大小1x1x41x41
的单个斑点?
第二个问题:我想用100个不同的斑点将数据乘以100个结果的平均值。我需要定义100 EltwiseLayers
来完成这项工作吗?还是可以在大小1x100x41x41
(或64x100x41x41
)的单个数据中收集斑点,并克隆要乘以100次的数据?如果是这样,我该怎么办?一个例子将非常有用。(我已经在某处看到了TileLayer
,但信息分布在银河系中。)
预先感谢。
为了在caffe中进行元素乘法,两个斑点都必须具有相同的形状。Caffe不会沿Singleton Dimensions"广播"。
因此,如果要乘以64个形状1x41x41
的批次,则必须提供两个64x1x41x41
底部斑点。
如您已经注意到的那样,您可以使用"Tile"
层进行repmat
ING:
layer {
name: "repmat"
type: "Tile"
bottom: "const_1x1x41x41_blob"
top: "const_64x1x41x41_blob"
tile_param {
axis = 0 # you want to "repmat" along the first axis
tiles = 64 # you want 64 repetitions
}
}
现在您可以进行"Eltwise"
乘法
layer {
name: "mul"
type: "Eltwise"
bottom: "const_64x1x41x41_blob"
bottom: "other_blob"
top: "mul"
eltwise_param {
operation: MUL
}
}