【问题标题】:caffe create networks by pythoncaffe 通过 python 创建网络
【发布时间】:2018-12-28 07:08:39
【问题描述】:

我们都知道这段 python 代码可以创建 caffe 网络:

    n = caffe.NetSpec()
    n.data, n.label = L.Data(batch_size=batch_size,
                             backend=P.Data.LMDB, source=lmdb,
                             transform_param=dict(scale=1. / 255), ntop=2)
    n.conv1 = L.Convolution(n.data, kernel_size=5,
                            num_output=20, weight_filler=dict(type='xavier'))
    n.pool1 = L.Pooling(n.conv1, kernel_size=2,
                        stride=2, pool=P.Pooling.MAX)

层的名字在n的右边。例如:“n.data”,该层的名称为“data”。

  1. 编写简单的代码

如果我想创建更多的图层,并且图层的名称除了编号之外都是相同的。例如,所有层的名称都是 {conv1,conv2,conv3,...,conv100}。 我想定义一个字符串s_name = conv%s,然后循环这个数字一次做同样的事情,不需要写几乎相同的代码100次。我该怎么办?

  1. 在名称中添加“/”? 图层名称为“conv1/dw”,请问如何确定名称?

【问题讨论】:

    标签: image-processing machine-learning neural-network caffe pycaffe


    【解决方案1】:

    您可以使用__setattr__

    s_name = 'conv{:03d}'.format(i)
    l = L.Convolution( # ...
    n.__setattr__(s_name, l)
    

    可以在here 找到一个扩展示例(展开 LSTM 单元)

    或者,您可以使用__getitem__ 属性:

    n[s_name] = L.Convolution( # ...
    

    更多信息请参见this answer

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 2016-09-28
      • 2012-02-22
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      相关资源
      最近更新 更多