最近还在看《TensorFlow 实战Google深度学习框架第二版》这本书,根据第六章里面对于卷基层和池化层的介绍可以发现,在执行 tf.nn.conv2d 和 tf.nn.max_pool 函数时,有几个参数是差不多的,一个是 filter,在卷积操作中就是卷积核,是一个四维矩阵,格式是 [CONV_SIZE, CONV_SIZE, INPUT_DEEP, CONV_DEEP],分别是这一层卷积核的长宽和输入的深度以及卷积核的个数(卷积核的深度),在池化操作中,这个filter就是池化的kernel的大小,格式是[b,h,w,c]。
b
表示在样本上的窗口大小默认为1,也就是每一个样本都会进行运算。h
表示在高度上的窗口大小,这个可以自己设定,根据网络的结构合理调节。w
表示在宽度上的窗口大小,这个同上可以自己设定。c
表示在通道上的窗口大小默认为1,这个表示每一个通道都会进行运算。另外一个参数是strides,格式也是[b,h,w,c],指的是步长,也就kernel移动一次的长度。
b
表示在样本上的步长默认为1,也就是每一个样本都会进行运算。h
表示在高度上的默认移动步长为1,这个可以自己设定,根据网络的结构合理调节。w
表示在宽度上的默认移动步长为1,这个同上可以自己设定。c
表示在通道上的默认移动步长为1,这个表示每一个通道都会进行运算。那么,会不会b和c使用大于1的值呢,特殊情况使用个别样本的个别通道的数据?
参考:1、https://blog.csdn.net/TwT520Ly/article/details/79540251
2、https://blog.csdn.net/ddy_sweety/article/details/80634579
如果上述理解有什么谬误的地方,还请评论指正,谢谢。
原文:https://www.cnblogs.com/IGNB/p/10823932.html