2

我想在 Caffe 中构建一个网络,其中传入的数据最初被拆分,分别通过同一组层,最后使用 eltwise 层重新组合。在此之后,所有部分将作为一个单一的斑点移动。

数据并行移动的网络部分的层配置将相同,除了学习参数。

有没有办法在 Caffe 中定义这个网络,而不需要重新定义数据的不同部分多次通过的层?换句话说,是否可以定义一个层并具有多个输入和输出路径,例如具有多个顶部和底部参数以及它们之间的映射?

4

1 回答 1

1

我不认为 raw caffe 的 prototxt 格式可以满足您的需求。但是你可以使用caffe.NetSpec()python 接口来获得它。即使用python接口构建网络并编写prototxt文件。

import caffe
from caffe import layers as L
ns = caffe.NetSpec()
ns.data, ns.label = L.Data(ntop=2, name='data', data_param={'source':'/path/to', 'batch_size': 32})
tops = []
for i in xrange(3):
    nm = 'path{}'.format(i)
    top = L.Convolution(ns.data, name=nm, convolution_params={'num_output':32})
    ns.__setattr__(nm, top)
    tops.append(top)
# concat
ns.concat = L.Concat(*tops, name='concat', concat_param={'axis':1})
print '{}'.format(ns.toProto())
于 2017-06-05T10:29:35.597 回答