caffe元素的乘法用固定的斑点



我想我会在这里问多个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
  }
}

最新更新