没有合适的资源?快使用搜索试试~ 我知道了~
HW2-批改标准_366006851
资源详情
资源评论
资源推荐
HW2-批改标准
本次作业基础分15分,扣分制。有加分项,加分最多2分。
代码
run_cnn.py (或编写的主程序)能正常运,否则扣10分。
相关代码填补正确,处错误扣1分。参考代码如下:
functions.py
import numpy as np
from scipy.signal import convolve
def conv2d_forward(input, W, b, kernel_size, pad):
n, c_in, h_in, w_in = input.shape
h_pad, w_pad = h_in + 2 * pad, w_in+2*pad
padded_input = np.zeros((n, c_in, h_pad, w_pad))
padded_input[:, :, pad:h_in + pad, pad:w_in + pad] = input
h_out, w_out = h_pad - kernel_size + 1, w_pad - kernel_size + 1
c_out = W.shape[0]
output = np.zeros((n, c_out, h_out, w_out))
for i in range(c_out):
for j in range(c_in):
ker = np.rot90(W[i, j], 2)[np.newaxis, :, :]
output[:, i] += convolve(padded_input[:, j], ker, 'valid')
output += b[np.newaxis, :, np.newaxis, np.newaxis]
return output
def conv2d_backward(input,grad_output, W, b, kernel_size, pad):
n, c_in, h_in, w_in = input.shape
_, _, h_out, w_out = grad_output.shape
assert h_out == h_in + 2 * pad - kernel_size + 1 and w_out == w_in + 2
* pad - kernel_size + 1, \
"grad_output shape not consistent with output"
h_pad, w_pad = h_in + 2 * pad, w_in + 2 * pad
c_out = W.shape[0]
# grad_input
padded_grad_input = np.zeros((n, c_in, h_pad, w_pad))
for i in range(c_in):
for j in range(c_out):
padded_grad_input[:, i] += convolve(grad_output[:, j], W[j, i]
[np.newaxis, :, :], 'full')
grad_input = padded_grad_input[:, :, pad:h_in + pad, pad:w_in + pad]
# grad_W
不美的阿美
- 粉丝: 21
- 资源: 292
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0