繁体   English   中英

Caffe:python中的串联层(L.Concat)

[英]Caffe: concatenation layer in python (L.Concat)

我想知道如何在python中将两层连接成一层。 更具体地说,我想将池化(子采样)层的输出与非可视数据结合在一起,然后在其之上放置一个完全连接的层。

假设子采样层将输出形状为64 * 2 * 2的神经元(如果忽略caffe batch_size),并且我要加入的数据层仅包含1个要素(速度浮动范围从0到1)。

以下是一些虚拟代码,可将您置于上下文中:

import numpy as np

import caffe
from caffe import layers as L
from caffe import params as P

# ...

n.conv4 = L.Convolution(n.relu3, kernel_size=3, num_output=64, weight_filler=dict(type='xavier'))
n.pool4 = L.Pooling(n.conv4, kernel_size=3, stride=2, pool=P.Pooling.AVE)
# Data of shape `batch_size*64*2*2` out of this layer (if dropout ignored). 
n.relu4 = L.ReLU(n.pool4, in_place=True)

###
# This is what I want to know how to do, yet this might not even be
# the good way to call the function:
n.join_speed = L.Concat([n.relu4, n.data_speed], in_place=True)
####

n.ip1 = L.InnerProduct(n.join_speed, num_output=512, weight_filler=dict(type='xavier'))
n.sig1 = L.Sigmoid(n.ip1, in_place=True)

# ...

我不确定您是否已经找到问题的答案,但是如果您还没有找到答案,则可以尝试以下方法:

bottom_layers = [n.relu4, n.data_speed]
n.join_speed = L.Concat(*bottom_layers)

上面应该允许您通过pycaffe / python层调用Concat层。

我同样试图做一个python生成的deconv层

n.deconv8 = L.Deconvolution(n.conv7)

可以,但是

n.deconv8 = L.Deconvolution(n.conv7,kernel_size=2)

命中

AttributeError: 'LayerParameter' object has no attribute 'kernel_size'

和类似的

n.deconv8 = L.Deconvolution(n.conv7,num_output=1024)

所以有一些新的语法来指示这些参数(还有weight_filler,bias_filler,stride)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM