卷积函数
什么是卷积
离散卷积与多维卷积
生活中的卷积
卷积神经网络
全连接神经网络
什么是卷积神经网络
卷积神经网络的用途
卷积运算
待填充的卷积运算
步幅为2的卷积运算
输入输出大小计算公式
多通道卷积
卷积运算的效果
卷积运算的效果
案例
# 图像卷积的示例
import imageio
from scipy import signal
from scipy import misc
import matplotlib.pyplot as plt
import numpy as np
import scipy.ndimage as sn
im = misc.imread("lily.png",
flatten=True) # 读出来是灰度图像
flt = np.array([[-1, 0, 1],
[-2, 0, 2],
[-1, 0, 1]]) # 卷积核(过滤器)(对水平方向上的色彩变化比较敏感)
flt2 = np.array([[1, 2, 1],
[0, 0, 0],
[-1, -2, -1]]) # 另一个卷积核(对垂直方向上的色彩变化比较敏感)
grad = signal.convolve2d(im, # 表示的是二维卷积运算 输入数据
flt, # 卷积核
boundary="symm", # 边沿处理方式
mode="same").astype("int32") # 转换成整型
# same表示做同纬卷积,输入矩阵和输出矩阵的大小是一样的
grad2 = signal.convolve2d(im, # 表示的是二维卷积运算 输入数据
flt2, # 卷积核
boundary="symm", # 边沿处理方式
mode="same").astype("int32") # 转换成整型
# same表示做同纬卷积,输入矩阵和输出矩阵的大小是一样的
# 可视化
plt.figure("Conv2D")
plt.subplot(131) # 第一个子图,显示原图
plt.imshow(im, cmap="gray") # 显示原图
plt.xticks([])
plt.yticks([]) # 把刻度给去掉
plt.subplot(132) # 第二个子图,显示卷积后的图像
plt.imshow(grad, cmap="gray") # 显示原图
plt.xticks([])
plt.yticks([]) # 把刻度给去掉
plt.show()
plt.subplot(133) # 第三个子图,显示filter2卷积后的图像
plt.imshow(grad2, cmap="gray") # 显示原图
plt.xticks([])
plt.yticks([]) # 把刻度给去掉
plt.show()