【发布时间】:2017-09-10 09:43:37
【问题描述】:
Caffe 中是否有层可以获取 blob 中的任意子块?
【问题讨论】:
-
哈哈...经常问
标签: machine-learning neural-network computer-vision deep-learning caffe
Caffe 中是否有层可以获取 blob 中的任意子块?
【问题讨论】:
标签: machine-learning neural-network computer-vision deep-learning caffe
AFAIK 在 caffe 中没有一个完全通用的切片层。
如果要提取作为 blob 特定通道的子块,可以使用"Slice" 层。
根据您的要求,您可能会发现"Crop" 层足以满足您的需求。
如果您需要更灵活地访问子块,您可能需要考虑使用"Python" 层。
使用"Crop" 层的示例
正如您 pointed out "Crop" 层需要两个“底部”,但由于第二个仅用于参考形状,您可以使用 "DummyData" 层生成它。
假设你要选择x[:,:,3:20,5:40],这是一个17x35的裁剪
layer {
name: "ref_shape_17x35"
type: "DummyData"
top: "ref_shape_17x35"
dummy_data_param { shape { dim: 1 dim: 1 dim: 17 dim: 35 } }
}
layer {
name: "crop_x"
type: "Crop"
bottom: "x"
bottom: "ref_shape_17x35"
top: "crop_x"
crop_param {
axis: 2 # do not crop the first two dimensions
offset: 3
offset: 5
}
}
我自己没有尝试过,但它应该可以工作(如果没有,请告诉我)。
【讨论】: