动手学深度学习 | 卷积层里的多输入多输出通道 | 19

多输入输出通道

通道数 channel,这个确实是大家通常回去仔细设的超参数。

我感觉沐神想说的就是下面的说法,一个多通道的卷积核大小可以是((k_h,k_w,input_{channel},output_{channel}))

怎么理解呢?((k_h,k_w))就很好理解了,input_channel就和卷积核的通道数是一样的,沐神说的三维卷积核就是这个,就是输入的通道有几维,那么这个三维卷积核的通道就有几维。

还有就是最后一个output_channel,这个和三维卷积核的个数有关,就是说要x个输出通道,那么就有x个三维卷积核。(输出通道的数量是人工设定的)


图片描述

多输出通道(多个三维卷积核):可以认为每个通道都在识别特定模式。

多输入通道:将多通道输出进行加权相加,得到一个组合的模式识别。比如说A通道识别的猫头,B通道识别的胡须.... 最后希望在高层将这些识别的特征进行组合, 最终能够正常识别出一只猫

(1*1)卷积融合不同通道的数据,可以把(1*1)卷积就认为是一个全连接(加权组合),比如上面的channel从3变成了2,chanell数减少了,但是信息进行了融合。

因为使用了最小窗口,1×11×1 卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。 其实 1×11×1 卷积的唯一计算发生在通道上。

当然沐神的说法是可以说为了得到(mh,mw),需要多少的计算量。

卷积要存的参数,现对于MLP是少很多的,但是卷积的计算量也并不小,但是卷积的模型存储是不大的。

上面大概估算了一下计算开销,ImageNet的样本就是100w,单扫一次是14min,那么反向运算再来14min,也就是一个epoch就要28min。那么就算训练100个epoch吧 ,大概也是需要30个小时。

代码实现

QA

  1. 全卷积能解决输入大小变化的情况,有什么方法能解决channel动态变化的情况吗?只能下采样?

这个问题没太看懂。

输入和输出不变的情况下,通常是不会去动这个通道数的。

如果把输入和输出的高宽都减半的情况下,输出通道数要翻倍。意思就是把空间信息压缩了,然后把这些压缩的信息,更多在通道中存储下来。下采样后通道拓宽一倍。

  1. 关于多输出通道数量是如何控制呢?

输出通道的数量是人为控制的,然后输出通道的数目和三维卷积核的数量是一样的,因为一个三维卷积核的卷积结果就是一条输出通道。

也就是说,你设计几条输出通道,你就要设计多少个三维卷积核。

  1. 网络越深,padding 0 越多,这里是否会影响性能?

计算性能会稍微有点影响,但是模型性能是不会影响的。

  1. 每个通道的卷积核都不一样吗?同一层不同通道的卷积核大小必须一样吗?

每个通道的卷积核是不一样的,不同通道的卷积核大小是一致的。

你可选择不同大小的卷积核,GoogLeNet就是这么用的,如果大小不一致的话,要写成两个卷积操作。不同通道保持核的大下一致,这是出于方便计算的角度考虑。

  1. 计算卷积时,bias的有无,对结果影响大吗?bias的作用怎么解释?

其实bias的作用就是当数据偏离均值的时候,bias就是那个偏离均值的负数。

但是实际上我们会做大量的均匀化的操作,所以bias实际来说没有那么大的影响,但是其实bias对计算性能其实并没什么影响,所以加上还是可以的。

  1. 核的参数怎么选?

注意,卷积核的参数是学出来的,不是选出来的。

  1. 老师,如果是一个rgb图像,加上深度图,相当于输入是四个通道,做卷积是和rgb三通道同样做法吗?

不是的,这个深度信息是另外一个维度,这里要用到conv3-d,我们讲的对图片图例都是conv-2d。

  1. 卷积能获取位置信息吗?感觉卷积就是把网络信息提取出来便于函数拟合。

卷积是可以有位置信息的,卷积是对位置非常敏感的,(i,j)那个位置,就对应了原图(i,j)周围的那一块。

我们后面会讲如何通过池化层,让卷积对位置信息不要那么敏感

  1. 关于编译器的选择?

沐神说他是没有用PyCharm,使用的是jupyter和vs code

原文地址:https://www.cnblogs.com/Rowry/p/15324534.html