用Python定义卷积网络

学习内容:

numpy 卷积函数,包括零填充、卷积窗口、前向卷积、反向卷积;池化函数,包括前向池化、mask、分配直,反向池化。

对比 tensorflow

定义函数:

def zero_pad(X, pad):

    X_pad = np.pad(X, ((0, 0), (pad, pad), (pad, pad), (0, 0)), 'constant', constant_values=(0, 0))

    return X_pad

-----------------------------------------------------------

def conv_single_step(a_slice_prev, W, b):

    s = a_slice_prev * W

    Z = np.sum(s)

    Z = Z + b

    return Z

--------------------------------------------------------------

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 = int(n_H_prev - f + 2 * pad) / stride +1)

    n_W = int(n_W_prev - f + 2 * pad) / stride +1)

    Z = np.zeros((m, n_H, n_W, n_C))

    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 = stride * h

                    vert_end = vert_start + f

                    horiz_start = stride * w

                    horiz_end = horiz_start + f

                    a_slice_prev = a_prev_pad(vert_start : vert_end, horiz_start : horiz_end, :]

                    Z[i, hw, w, c] = conv_single_step(a_slice_prev, W[:,:,:, c], b[:,:,:,c])

    cache = (A_prev, W, b, hparameters)

    return Z, cache

-----------------------------------------------------------------

def pool_forward(A_prev, hparameters, mode = 'max'):

    (m, n_H_prev, n_W_prev, n_C_prev) = A_prev.shape

    f = hparameters['f']

    stride = hparameters['stride']

    n_H = int(1 + (n_H_prev -f) / stride)

    n_W = int(1 + (n_W_prev - f) / stride)

    n_C = n_C_prev

    A = np.zero

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值