美文网首页Tensorflow学习笔记
使用tf.reduce_mean()做avg_pool

使用tf.reduce_mean()做avg_pool

作者: Manfestain | 来源:发表于2018-01-27 11:38 被阅读7次
    reduce_mean(
        input_tensor,
        axis=None,
        keepdims=None,
        name=None,
        reduction_indices=None,
        keep_dims=None
    )
    

    axis表示按那个维度进行取平均值,当axis参数为list时,会按照list的值依次进行取平均,对于二维张量其取值有01,表示两个维度;当三维张量时其取值可以有012,表示三个维度,否则会出错

    • 对于二维张量
      0表示按列取平均
      1表示按行取平均
    • 对于三维张量:如图1,
      0标志按宽,也就是张量的第一个维度
      1表示按高,也就是张量的第二个维度
      2表示按长,也就是张量的第三个维度
      图1
      可以这样理解:对于如下这个数组
    [[[ 1  2  3]
      [ 4  5  6]]
    
     [[ 7  8  9]
      [10 11 12]]]
    

    括号外面的“维度”是一维、二维和三维,比如最外围的括号是一维,也就是0方向,其它类似;括号里面可以理解为“轴”,指的是返回低维数组含有原始高维数组某条轴上的所有数据,比如a111~ a341和a112~ a342,就是0轴上的数据,其它类似。

    keep_dims=True表示取均值完后的维度和输入维度相同


    使用tf.reduce_mean()实现avg_pool()

    y1 = tf.reduce_mean(inputs, [1, 2], keep_dims=True, name='avg_pool')
    

    假设inputs的维度是32x224x224x3y1的维度就是32x1x1x3,会先对inputs按照[1, 2]中的1按照第二维度取平均,也就是图1中a141、a241、a341这样取平均,然后对第一次取平均的结果按照[1, 2]中的2按第一维度取平均,也就是图1中的a311、a321、a331、a341这样取平均。


    可能理解不到位,欢迎指正!

    相关文章

      网友评论

        本文标题:使用tf.reduce_mean()做avg_pool

        本文链接:https://www.haomeiwen.com/subject/fhknaxtx.html