头歌 卷积神经网络卷积核和结构设计实验

第1关:认识卷积核的作用

复制代码
import numpy as np
from Utils import getImage

# =====================自定义函数convolve2d 开始 =====================
def convolve2d(image, kernel):
    # 获取图像、卷积核的高宽
    img_h, img_w = image.shape
    ker_h, ker_w = kernel.shape
    # 计算输出卷积矩阵尺寸
    out_h = img_h - ker_h + 1
    out_w = img_w - ker_w + 1
    # 初始化全0卷积矩阵
    conv_out = np.zeros((out_h, out_w), dtype=np.float64)
    
    # 逐行逐列遍历输出矩阵每个位置
    for i in range(out_h):
        for j in range(out_w):
            # 截取图像对应子区域
            img_region = image[i:i+ker_h, j:j+ker_w]
            # 对应元素相乘求和,赋值给输出位置
            conv_out[i, j] = np.sum(img_region * kernel)
    return conv_out
# ===================== convolve2d 结束 =====================

# =====================以下为主程序=====================
# 1. 用户输入卷积核
kernel = eval(input("请输入卷积核 (例如: [[0, 0, 1],[0, 1, 0],[1, 0, 0]]\n"))
# 2. 将kern转换为NumPy二维数组
kernel = np.array(kernel, dtype=np.float64)
# 3. 调用getImage函数加载图片矩阵image,这里使用第一张图片 getImage(1)
image = getImage(1)
# 4. 打印图片尺寸
print(f"图片尺寸: {image.shape}")
# 5. 调用自定义函数convolve2d(image, kernel)对图片image执行卷积操作,并返回卷积矩阵conv
conv = convolve2d(image, kernel)
print(f"卷积矩阵尺寸: {conv.shape}")
print()
# 7. 输出卷积矩阵conv前三行
print("卷积矩阵前三行:")
print(conv[0])
print(conv[1])
print(conv[2])
# 8. 输出卷积矩阵conv最大值
max_val = np.max(conv)
print()
print(f"卷积矩阵最大值: {max_val:.2f}")

第2关利用卷积核识别图片的特征

复制代码
from Utils import getImage, getKernel, getKernelName, convolve2d
import numpy as np

print("请输入图片编号 (1-5): ", end="")
try:
    n = int(input())
except:
    print("图片编号不合法")
    exit()

if n < 1 or n > 5:
    print("图片编号不合法")
    exit()

# 1-5 正常换行
print()
img = getImage(n)
print("============================================================")
print(f"图片 {n} 的卷积结果:")
print("============================================================")

for i in range(1,6):
    k = getKernel(i)
    name = getKernelName(i)
    res = convolve2d(img, k)
    m = int(np.max(res))
    if m >= 700:
        s = "强"
    elif m >= 400:
        s = "中"
    else:
        s = "弱"
    print(f"{i}. {name}\t{m}\t{s}")

print("============================================================")
相关推荐
fīɡЙtīиɡ ℡1 小时前
AI 应用系统设计
java·开发语言·人工智能
小淮AI1 小时前
国际教育课程的本土化探索:以枫叶教育三十年为观察样本
大数据·人工智能
又折桃枝换酒钱2 小时前
VisCoder2:构建多语言可视化编码智能体(翻译与解读)
人工智能·信息可视化
AI绘画哇哒哒2 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
Chengbei112 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
QN1幻化引擎2 小时前
DalinX Phi 性能突破:跨层秩保持对齐与意识涌现度量的实证研究
人工智能·ai·架构·agi·asi
NeilCarmack2 小时前
Deepseek-harness增加桌面版端序列:第 1 讲 · 命令解析:`pnpm dsh desktop` 的第一步
人工智能·agent·ai agent
龙兵AI增长破局圈.赵老师讲成交2 小时前
只有把过程管好,结果才会出来。
大数据·人工智能·ai·创业创新
最强小杰2 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
天天代码码天天2 小时前
我做了一个只有一个 EXE 的本地 Markdown 编辑器:lw.MD(简墨)
人工智能