使用循环的卷积层

时间:2017-06-05 17:01:56

标签: layer conv-neural-network convolution

我想使用循环实现卷积层,这是最重要的事情。我需要考虑:输入特征映射的数量,特征映射的通道(宽度X高度X 3通道)。内核:(内核的数量,K,K)和卷积的步幅以及特征映射的数量。使用循环我有很多问题要做。我需要一个带索引关系的伪代码。感谢。

 conv_layer(W=0,H=0,K=0,M=0,D=0,s=0,output=0,input_imm=0,filter_w=0,print_dot=False,fileout=''):

#Parameters: 
#Feature map Width,heigth
#kernel dim K x K
#M: number of filters
#D: depth or channel
#s: stride
#print_dot: True if you want to write the .dot file
    #Return: A data flow graph of the net G.nx and 

OFW=(((W-K)/s)+1)
test= OFW*OFW
OFH=OFW
OFM=M
IFM=D
KH=K
KW=K


#All zero multidim arrays
output = np.zeros((OFM,OFH,OFW))        
input_imm=np.zeros((IFM,s*OFH+KH,s*OFW+KW))
filter_w=np.zeros((OFM,IFM,KH,KW)) 
#multi direction graph
G=nx.MultiDiGraph() 
G1=nx.MultiDiGraph() 
#mac counter
mac_id=0;

#loops
for ofm in range(0,OFM):
        for ifm in range(0,IFM):
                for ofh in range(0,OFH):
                    for ofw in range(0,OFW):
                        for kh in range(0,KH):
                             for kw in range(0,KW):
                                output[ofm,ofh,ofw]=input_imm[ifm,s*ofh +kh,s*ofw +kw]* filter_w[ofm,ifm,kh,kw]

0 个答案:

没有答案