一句话:
全连接层的一个神经元对应一个输入。
换句话说,
全连接层要求固定的输入维度。
数学推导:
大家都知道, z=wx+b,全连接神经网络结构一旦固定,需要学习的参数w是固定的,例如 输入图像是 28*28 = 784,w 的转置= (500,784),===> 输出矩阵的shape:(500,1),如果输入图像的大小改变,但是w的大小并不会改变,因此,无法计算。
这里没有理解是因为暗含这样一份个知识点:
卷积到全连接,所有卷积会一条接一条变成一个全连接的上层 X,比如上面的 28*28 = 784,z=wx+b,如果尺寸不固定,多出来一个 785,就没法 和 w(500,784)去相乘了,有些人就要问了,那我此时改变w为(500,785) 不行嘛?也可以,但是,你训练要很多个step,甚至 epoch(pass)去更新,那,尺寸不固定,这一个step这个神经元训练到了,下一回没训练到,那就没法收敛了。
后续:
在小群里,鱼哥看完我文章直接说是扯淡,他说 输入必须固定,是resnet以前的结构的玩法,之后的玩法(好像也不是resnet),可以通过 1*1 卷积 升降维 fix 任何 tensor(解释,也就是通过 1*1 卷积 产生下面几篇参考里提到的 spp结构?还是他确实没搞懂?又成为了一个问题)
所以,在引入预训练模型的时候,如果要自定义输入图片的大小,则需要去掉后面的全连接层的头,附带还需要去掉连接的什么层,给大家留个课

最低0.47元/天 解锁文章
3262

被折叠的 条评论
为什么被折叠?



