Keras中部分函数的使用总结

1、keras中concatenate和add层的不同

在网络结构的设计上,经常说DenseNet和Inception中更多采用的是concatenate操作,而ResNet更多采用的add操作,那么这两个操作有什么异同呢?

concatenate操作是网络结构设计中很重要的一种操作,经常用于将特征联合,多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合,而add层更像是信息之间的叠加。

Resnet是做值的叠加,通道数是不变的,DenseNet是做通道的合并。你可以这么理解,add是描述图像的特征下的信息量增多了,但是描述图像的维度本身并没有增加,只是每一维下的信息量在增加,这显然是对最终的图像的分类是有益的。而concatenate是通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。

在代码层面就是ResNet使用的都是add操作,而DenseNet使用的是concatenate。

add对张量执行求和运算
例: (64 64 3) add (64 64 3)即大小和通道数均一致
concatenate对张量进行串联运算

2、Lambda函数使用

lambda a, b: a+b
lambda 参数1,参数2: 返回值

分析表达式
[(lambda x: xx)(x) for x in range(10)]
[(lambda x: x
x)(参数x) for 参数x in range(10)]

https://github.com/hfrommane/TF-siamesenet/blob/master/train.py

你可能感兴趣的:(Keras中部分函数的使用总结)