目录
编辑
前言:卷积——AI视觉的"显微镜"
一、卷积运算:空间特征的数学捕手
1.1 二维卷积的数学解剖
1.2 卷积的三大核心特性
二、从零实现卷积层:代码透视数学本质
2.1 纯Python实现二维卷积
2.2 卷积核的可视化实验
三、池化层:信息蒸馏的数学艺术
3.1 最大池化的数学原理
四、反向传播中的卷积梯度计算
4.1 卷积层的梯度推导
4.2 PyTorch自动微分验证
五、CNN架构的数学进化论
5.1 里程碑网络结构对比
5.2 用Keras搭建现代CNN
结语:卷积神经网络——数字世界的视觉诗人
当梵高凝视星空,他的眼睛捕捉光点,大脑组合成绚烂的《星月夜》。**卷积神经网络(CNN)**正是AI的视觉皮层,通过数学运算从像素中提炼宇宙真理。本文将带您拆解这个让计算机"看懂"世界的数学引擎,并用代码重现视觉智能的诞生过程。
定义:滑动窗口内的像素加权求和
数学表达式:
局部连接:感受野模拟生物视觉
权重共享:卷积核作为特征检测器
平移等变性:特征位置无关性
import numpy as np
from scipy.signal import correlate2d
def conv2d(inputs, kernel, stride=1, padding=0):
"""手动实现二维卷积"""
# 添加padding
padded = np.pad(inputs, pad_width=padding, mode='constant')
# 计算输出尺寸
H, W = padded.shape
KH, KW = kernel.shape
out_h = (H - KH) // stride + 1
out_w = (W - KW) // stride + 1
# 滑动窗口计算
output = np.zeros((out_h, out_w))
for i in range(0, out_h*stride, stride):
for j in range(0, out_w*stride, stride):
output[i//stride, j//stride] = np.sum(
padded[i:i+KH, j:j+KW] * kernel
)
return output
# 测试用例
image = np.array([[1,2,3,4],
[5,6,7,8],
[9,10,11,12]])
kernel = np.array([[1,0],
[0,-1]])
print("手动实现结果:\n", conv2d(image, kernel