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生成的反卷积层
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、步幅)
L.Concat(top1, top2, top3) 适合我
我想知道如何在 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生成的反卷积层
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、步幅)
L.Concat(top1, top2, top3) 适合我