簡體   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