IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]AI学习之路(15): 张量不同数轴的平均值计算

    caimouse发表于 2017-03-02 14:12:38
    love 0

    在深度学习里研究的物体的关系,都是比较复杂的。比如一个图片32X32大小的,它的像素信息就有1024个点,如果考虑RGB三种颜色,就是1024X3了。对于目前还没有办法构造140亿个神经元的计算机来说,只能干一件事情,就是简化,化繁为简。为了简化,就需要使用算法来进行,在数学上最简单的处理,就是求平均值。这个道理非常简单,如果10个数,只要把它们相加,再除以10即可。对于0维数字,可以这样来计算,如果对于N维的张量,就不是这么简单的计算了。就拿二维的矩阵来说,它可以横着算,还可以是竖着算,还可以全部加到一起,再除以总数。可见对于N维的张量来说,有更多的可能,那么就得抽像一个数轴出来。数轴在初中的代数就学习了,可见数轴在高等数学里也会使用到的,N维张量,就是N个数轴的表示,如果沿着不同的数轴进行计算,就会产生不同的作用。其实平均值也可以算是降维思想的一种。

    在TF里,就提供了这样一个算法来计算张量的平均值:

    tf.reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)

    沿着张量不同的数轴进行计算平均值。

     

    参数:

    input_tensor: 被计算的张量,确保为数字类型。

    axis: 方向数轴,如果没有指明,默认是所有数轴都减小为1。

    keep_dims: 如果定义true, 则保留维数,但数量个数为0.

    name: 操作过程的名称。

    reduction_indices: 为了旧函数兼容的数轴。

    返回值:

    降低维数的平均值。

     

    例子:

    #python 3.5.3  蔡军生  
    #http://edu.csdn.net/course/detail/2592  
    #
    
    import tensorflow as tf
        
    #创建张量
    x = tf.Variable([[1.,2.,3.], [4.,5.,6.], [7.,8.,9.]])
    
    #显示它的值
    init_op = tf.global_variables_initializer()
    
    with tf.Session() as sess:
        sess.run(init_op)
        y = tf.reduce_mean(x)
        y01 = tf.reduce_mean(x, 0, keep_dims=False)
        y02 = tf.reduce_mean(x, 0, keep_dims=True)
        y1 = tf.reduce_mean(x, 1)
    
        print(x.eval())
        print("tf.reduce_mean(x):", y.eval())
        print("tf.reduce_mean(x, 0, keep_dims=False):", y01.eval())
        print("tf.reduce_mean(x, 0, keep_dims=True):", y02.eval())
        print("tf.reduce_mean(x, 1):", y1.eval())
    

    输出结果:

    ====================== RESTART: D:/AI/sample/tf_1.28.py ======================

    [[ 1.  2.  3.]

     [ 4.  5.  6.]

     [ 7.  8.  9.]]

    tf.reduce_mean(x): 5.0

    tf.reduce_mean(x, 0, keep_dims=False): [ 4.  5.  6.]

    tf.reduce_mean(x, 0, keep_dims=True): [[ 4.  5.  6.]]

    tf.reduce_mean(x, 1): [ 2.  5.  8.]

    >>>

     


    1. C++标准模板库从入门到精通 

    http://edu.csdn.net/course/detail/3324

    2.跟老菜鸟学C++

    http://edu.csdn.net/course/detail/2901

    3. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592

    4. 在VC2015里学会使用tinyxml库

    http://edu.csdn.net/course/detail/2590

    5. 在Windows下SVN的版本管理与实战 

     http://edu.csdn.net/course/detail/2579

    6.Visual Studio 2015开发C++程序的基本使用 

    http://edu.csdn.net/course/detail/2570

    7.在VC2015里使用protobuf协议

    http://edu.csdn.net/course/detail/2582

    8.在VC2015里学会使用MySQL数据库

    http://edu.csdn.net/course/detail/2672



沪ICP备19023445号-2号
友情链接