CNN中的前向传播 及其Python代码实现
发布日期:2021-07-01 05:17:22 浏览次数:3 分类:技术文章

本文共 1026 字,大约阅读时间需要 3 分钟。

符号约定

A表示卷积的结果矩阵,W表示滤波器(filter)矩阵,b表示偏置(bias)矩阵,stride表示卷积步长,nh nw分别表示矩阵的高和宽,nc表示通道(channel)数,也就是矩阵的第三维

推导

见如下图,其中prev表示上层卷积结果

下面是层间的关系表达式

前向传播函数Python代码

def conv_forward(A_prev,W,b,hparameters):    (m,n_H_prev,n_W_prev,n_C_prev)=A_prev.shape    (f,f,n_C_prev,n_C)=W.shape    stride=hparameters['stride']    pad=hparameters['pad']    n_H=1+int((n_H_prev-f+2*pad)/stride)    n_W=1+int((n_W_prev-f+2*pad)/stride)    Z=np.zeros((m,n_H,n_W,n_C))#init output    A_prev_pad=zero_pad(A_prev,pad)    for i in range(m):        a_prev_pad=A_prev_pad[i]        for h in range(n_H):            for w in range(n_W):                for c in range(n_C):                    vert_start=h*stride                    vert_end=vert_start+f                    horiz_start=w*stride                    horiz_end=horiz_start+f                    a_slice_prev=a_prev_pad[vert_start:vert_end,horiz_start:horiz_end,:]                    Z[i,h,w,c]=np.sum(np.multiply(a_slice_prev,W[:,:,:,c])+b[:,:,:,c])    cache=(A_prev,W,b,hparameters)    return Z,cache

 

转载地址:https://norstc.blog.csdn.net/article/details/83790453 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CNN边缘检测示例 直观观察CNN卷积结果
下一篇:convolution 卷积的直观解释 卷积的物理意义

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年05月03日 18时48分35秒