通过Caffe中的图层获取数据的多个途径

时间:2017-06-05 10:18:17

标签: neural-network caffe conv-neural-network redefine coding-efficiency

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

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

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

1 个答案:

答案 0 :(得分:1)

我不认为原始咖啡的原型文本格式允许您追求的是什么。但是你可以使用caffe.NetSpec() python接口来获取它。也就是说,使用python接口构建网络并写入原型文件。

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())