本文共 1377 字,大约阅读时间需要 4 分钟。
from keras.models import Sequential
from keras.layers import Conv2Dmodel = Sequential()
model.add(Conv2D(filters=16, kernel_size=2, strides=2, padding='valid', activation='relu', input_shape=(200, 200, 1))) model.summary()
from keras.models import Sequentialfrom keras.layers import Conv2Dmodel = Sequential()model.add(Conv2D(filters=16, kernel_size=2, strides=2, padding='valid', activation='relu', input_shape=(200, 200, 1)))model.summary()
注意卷积层中的参数数量是如何变化的。对应的是输出内容中的 Param # 下的值。在上图中,卷积层具有 80 个参数。
同时注意卷积层的形状是如何变化的。对应的是输出内容中的 Output Shape 下的值。在上图中,None 对应的是批次大小,卷积层的高度为 100,宽度为 100,深度为 16。
公式:卷积层中的参数数量
卷积层中的参数数量取决于 filters、kernel_size 和 input_shape 的值。我们定义几个变量:K - 卷积层中的过滤器数量
F - 卷积过滤器的高度和宽度 D_in - 上一层级的深度 注意:K = filters,F = kernel_size。类似地,D_in 是 input_shape 元组中的最后一个值。因为每个过滤器有 F*F*D_in 个权重,卷积层由 K 个过滤器组成,因此卷积层中的权重总数是 K*F*F*D_in。因为每个过滤器有 1 个偏差项,卷积层有 K 个偏差。因此,卷积层中的参数数量是 K*F*F*D_in + K。
公式:卷积层的形状
卷积层的形状取决于 kernel_size、input_shape、padding 和 stride 的值。我们定义几个变量:K - 卷积层中的过滤器数量
F - 卷积过滤器的高度和宽度 H_in - 上一层级的高度 W_in - 上一层级的宽度 注意:K = filters、F = kernel_size,以及S = stride。类似地,H_in 和 W_in 分别是 input_shape 元组的第一个和第二个值。卷积层的深度始终为过滤器数量 K。
如果 padding = 'same',那么卷积层的空间维度如下:
height = ceil(float(H_in) / float(S))
width = ceil(float(W_in) / float(S)) 如果 padding = 'valid',那么卷积层的空间维度如下:height = ceil(float(H_in - F + 1) / float(S))
width = ceil(float(W_in - F + 1) / float(S))转载地址:http://ppfti.baihongyu.com/