本文介绍 深度学习细节启示录一

深度学习细节启示录一

本文由在当地较为英俊的男子金天大神原创,版权所有,欢迎转载,本文首发地址 https://jinfagang.github.io 。但请保留这段版权信息,多谢合作,有任何疑问欢迎通过微信联系我交流:jintianiloveu

决定花几天写一个深度学习细节启示录。为什么我想写这个东西?因为其实在我们做学术研究或者工业实现中,很多细节我们是不知道的,处于知识容易被遗忘的角落,或者是被我们想当然了所以没有倍加思考,但是事实可能比你想象的更加复杂。当然有有可能是因为一些细节本身被我们想象的过于复杂所以被我们不假思索,但是它实际上可能更简单一些。

一些细节细化到什么程度,我举个例子,非常简单的一个卷积层,它的每个卷积核是有通道的吗?如果有卷积核的通道与它的个数是什么关系呢?这一层输出的featuremap的channel数又是与哪个有关呢?相信很多人看到这个觉得很简单,其实不然,它背后有着令你细思极恐的复杂度。

从普通卷积核说起

我们先来看一个很简单的问题,卷积核到底有没有通道。我们看到很多地方写卷积核都会写上一个通道的维度。然后又加上一个卷积核的个数,这其实非常令人费解。我在这里告诉大家,没有必要去给卷积核加上维度。也就是说其实它没有维度。它只是一个二维矩阵,它会对一个featuremap的每一个通道维度计算一次卷积,然后把结果加起来,那么最后输出的featuremap的维度就是卷积核的个数了。

1x1卷积核到底有什么用

有时候i经常遇到1x1的卷积核,很多人觉得这好像没有对图片进行任何计算啊?那有什么用呢?这个没有错,确实没有对图片进行计算,但是我们刚才说了,一个卷积核会对上一层特征图的多个通道进行计算并把结果加起来,得到一个通道,最后输出的通道数就直接等于卷积核的个数了。发现了吗?它就实现了一个降维的作用。