zoukankan      html  css  js  c++  java
  • tensorflow的reduce_sum方法学习记录

    在使用tensorflow时,经常会用到reduce_sum这个函数,表示对数据进行求和,但它的参数的作用却不是那么容易明白。

    reduce_sum(
        input_tensor,
        axis=None,
        keep_dims=False,
        name=None,
        reduction_indices=None
    )
    参数一:axis
    沿着哪个维度求和。对于二维的input_tensor张量,0表示按列求和,1表示按行求和,[0, 1]表示先按列求和再按行求和。
    x = np.asarray([[1, 1, 1],
                    [1, 1, 1]])
    x_p = tf.placeholder(tf.int32, [2, 3])
    
    y = tf.reduce_sum(x_p, axis=0)
    with tf.Session() as sess:
        output = sess.run(y, feed_dict={x_p: x})
        print(output)

    输出结果如下:[2 2 2],每一个元素是之前一列元素的和。

    若axis=1,则输出是:[3,3];若axis=[0,1],则输出是: 6

    参数二:keep_dims

    默认值为Flase,表示默认要降维。若设为True,则不降维。

    从上面的例子中,可以看到,x是一个二维数组,求和后变成了一位数组,默认降了维度,这是因为keep_dims参数默认Flase,表示降维,若想让结果仍为二维的,可以将keep_dims设置为True

    修改上面代码如下:

    x = np.asarray([[1, 1, 1],
                    [1, 1, 1]])
    x_p = tf.placeholder(tf.int32, [2, 3])
    
    y = tf.reduce_sum(x_p, axis=0, keep_dims=True)
    with tf.Session() as sess:
        output = sess.run(y, feed_dict={x_p: x})
        print(output)

    输出结果是:[[2 2 2]], 若将axis设置为1, 输出结果为:[ [3] [3] ]

    参数三:reduction_indice

    默认值是None,即把input_tensor降到 0维,也就是一个数。对于2维input_tensor,reduction_indices=0时,按列;reduction_indices=1时,按行。注意,reduction_indices与axis不能同时设置。

    x = np.asarray([[1, 1, 1],
                    [1, 1, 1]])
    x_p = tf.placeholder(tf.int32, [2, 3])
    
    y = tf.reduce_sum(x_p,)
    with tf.Session() as sess:
        output = sess.run(y, feed_dict={x_p: x})
        print(output)

    由于上面的代码没有设置reduction_indice,默认降到0维,输出:6

    x = np.asarray([[1, 1, 1],
                    [1, 1, 1]])
    x_p = tf.placeholder(tf.int32, [2, 3])
    y = tf.reduce_sum(x_p,reduction_indices=[1])
    with tf.Session() as sess:
        output = sess.run(y, feed_dict={x_p: x})
        print(output)

    设置reduction_indices为1,输出是:[3 3], 设置reduction_indices为0,输出是:[2 2 2]。reduction_indices也可以像axis那样配合keep_dims一起使用,不让结果降维。

    ********************不积跬步无以至千里********************

  • 相关阅读:
    根据label字数计算UILable高度
    使用brew安装软件
    NSSearchPathDomainMask 详解
    Swift 使用代理和闭包(closure)反向传值
    Swift 闭包(closure)
    Swift 协议和委托(代理)
    Swift 2.0 : 'enumerate' is unavailable: call the 'enumerate()' method on the sequence
    cocoapods安装以及使用,安装过程中ruby版本过低
    Mac环境下svn的使用
    静态库和动态库详解
  • 原文地址:https://www.cnblogs.com/liangshian/p/12096826.html
Copyright © 2011-2022 走看看