Golbal Average Pooling+tf.layers.dense()+tf.contrib.layers.flatten()

global average pooling:把特征图全局平均一下输出一个值,也就是把W*H*D的一个张量变成1*1*D的张量。GAP的真正意义是对整个网路在结构上做正则化防止过拟合,可以实现任意图像大小的输入,但是值得我们注意的是,使用GAP可能会造成收敛速度减慢。
例如:最后的一层的数据是206*6*3的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值,这样20 个特征图就会输出20个数据点,变成(20,1*1*3)

如图所示,更加明了
在这里插入图片描述
tf.contrib.layers.flatten(A):函数使A保留第一个维度,把第一个维度包含的每一子张量展开成一个行向量,返回张量是一个二维的,返回的shape为(第一维度,子张量乘积)
一般用于卷积神经网络全连接层前的预处理,因为全连接层需要将输入数据变为一个向量,向量大小为[batch size, ?]
例如:A是全连接层的输入,则需要将其转换为一个向量。假设A是一个20*1*1*3*的矩阵,则通过转换后,得到一个[20,3]的矩阵,这里20为卷积神经网络的batch size3则是1*1*3的乘积

tf.layers.dense(): 改变最后一个维度的数值,如果是10分类,即把[20,108]变为[20,10]
例如:

dense(
    inputs,
    units,
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=tf.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    trainable=True,
    name=None,
    reuse=None
)
#inputs:输入该网络层的数据
#units:输出的维度大小,改变inputs的最后一维
#activation:激活函数,即神经网络的非线性变化
#use_bias:使用bias为True(默认使用),不用bias改成False即可,是否使用偏置项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值