转载自:https://blog.csdn.net/dcrmg/article/details/79652487
前几天在看CS231n中的CNN经典模型讲解时,花了一些时间才搞清楚卷积层输入输出的尺寸关系到底是什么样的,现总结如下。(可以参照我画的题图理解卷积层的运算)
* 注:以下计算演示均省略掉了 Bias ,严格来说其实每个卷积核都还有一个 Bias 参数。
总结下来,其实只需要认识到,虽然输入的每一张图像本身具有三个维度,但是对于卷积核来讲依然只是一个一维向量。卷积核做的,其实就是与感受野范围内的像素点进行点积(而不是矩阵乘法)。
卷积层内卷积核的个数不是计算出来的,而是人为设计出来的。经典的网络每一个卷积层有多少个卷积核可以查看对应论文。如果是自己玩,你弄多少个都没人管你。
附:TensorFlow 中卷积层的简单实现
def conv_layer(x, out_channel, k_size, stride, padding): in_channel = x.shape[3].value w = tf.Variable(tf.truncated_normal([k_size, k_size, in_channel, out_channel], mean=0, stddev=stddev)) b = tf.Variable(tf.zeros(out_channel)) y = tf.nn.conv2d(x, filter=w, strides=[1, stride, stride, 1], padding=padding) y = tf.nn.bias_add(y, b) y = tf.nn.relu(y) return x
参考链接:https://zhuanlan.zhihu.com/p/29119239
本文链接:http://task.lmcjl.com/news/12518.html