ResNet更多采用的add操作:
add是描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。
DenseNet用的是concatenate操作:
concatenate操作用于将特征联合,多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合。concatenate是通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。而add层更像是信息之间的叠加。
Resnet是做值的叠加,通道数是不变的,DenseNet是做通道的合并。
add无训练参数。
t1 = [[1, 2, 3], [4, 5, 6]]
t2 = [[7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 0) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
tf.concat([t1, t2], 1) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
注意:实际上是维度的一个联合,axis=0表示列维,1表示行维,沿着通道维度连接两个张量。另一个sparse_concate则是关于稀疏矩阵的级联。