python卷积神经网络实例_Numpy实现卷积神经网络(CNN)的示例

import numpy as np

import sys

def conv_(img, conv_filter):

filter_size = conv_filter.shape[1]

result = np.zeros((img.shape))

# 循环遍历图像以应用卷积运算

for r in np.uint16(np.arange(filter_size/2.0, img.shape[0]-filter_size/2.0+1)):

for c in np.uint16(np.arange(filter_size/2.0, img.shape[1]-filter_size/2.0+1)):

# 卷积的区域

curr_region = img[r-np.uint16(np.floor(filter_size/2.0)):r+np.uint16(np.ceil(filter_size/2.0)),

c-np.uint16(np.floor(filter_size/2.0)):c+np.uint16(np.ceil(filter_size/2.0))]

# 卷积操作

curr_result = curr_region * conv_filter

conv_sum = np.sum(curr_result)

# 将求和保存到特征图中

result[r, c] = conv_sum

# 裁剪结果矩阵的异常值

final_result = result[np.uint16(filter_size/2.0):result.shape[0]-np.uint16(filter_size/2.0),

np.uint16(filter_size/2.0):result.shape[1]-np.uint16(filter_size/2.0)]

return final_result

def conv(img, conv_filter):

# 检查图像通道的数量是否与过滤器深度匹配

if len(img.shape) > 2 or len(conv_filter.shape) > 3:

if img.shape[-1] != conv_filter.shape[-1]:

print("错误:图像和过滤器中的通道数必须匹配")

sys.exit()

# 检查过滤器是否是方阵

if conv_filter.shape[1] != conv_filter.shape[2]:

print('错误:过滤器必须是方阵')

sys.exit()

# 检查过滤器大小是否是奇数

if conv_filter.shape[1] % 2 == 0:

print('错误:过滤器大小必须是奇数')

sys.exit()

# 定义一个空的特征图,用于保存过滤器与图像的卷积输出

feature_maps = np.zeros((img.shape[0] - conv_filter.shape[1] + 1,

img.shape[1] - conv_filter.shape[1] + 1,

conv_filter.shape[0]))

# 卷积操作

for filter_num in range(conv_filter.shape[0]):

print("Filter ", filter_num + 1)

curr_filter = conv_filter[filter_num, :]

# 检查单个过滤器是否有多个通

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值