zoukankan      html  css  js  c++  java
  • TensorFlow经典案例5:对前4次案例的一些思考与总结

    一、关于numpy的random的使用:

          1.rand随机值

    In [2]: np.random.rand(3,2)
    Out[2]:
    array([[ 0.04287046,  0.68212741],
           [ 0.25322512,  0.50287344],
           [ 0.75530125,  0.55308281]])
    

        2.randn返回样本具有标准正太分布

    In [4]: np.random.randn(3,2)
    Out[4]:
    array([[-2.26840223, -0.24799291],
           [-0.81557012,  0.92537801],
           [ 0.04456033, -0.03864446]])
    

      3.randint返回随机整数

    In [8]: np.random.randint(2, size=10)
    Out[8]: array([0, 1, 1, 0, 0, 1, 0, 0, 0, 0])
    

      

    In [9]: np.random.randint(1, size=5)
    Out[9]: array([0, 0, 0, 0, 0])
    

      

    In [10]: np.random.randint(9, size=(4,5))
    Out[10]:
    array([[2, 5, 3, 0, 0],
           [5, 5, 8, 0, 5],
           [8, 3, 3, 8, 1],
           [5, 5, 7, 4, 3]])
    

      4.random([size])返回随机浮点数位于半开区间[0.0,1.0)

    In [12]: np.random.random((3,5))
    Out[12]:
    array([[ 0.9406723 ,  0.88534251,  0.48993398,  0.04959344,  0.69200616],
           [ 0.8317934 ,  0.02332241,  0.07543021,  0.26467834,  0.29640229],
           [ 0.79139576,  0.72745639,  0.04238559,  0.15145797,  0.40844399]])
    

      5.choice从给定的数字中生成一个随机样本

    #从np.arange(8)中选取大小问为3的样本
    In [13]: np.random.choice(8,3)
    Out[13]: array([0, 2, 5])
    

      

    In [14]: a = [3,5,6,8,2,6,8]
    
    In [15]: np.random.choice(a,1)
    Out[15]: array([3])
    
    In [16]: np.random.choice(a,1)
    Out[16]: array([3])
    
    In [17]: np.random.choice(a,3)
    Out[17]: array([2, 6, 8])
    
    In [18]: np.random.choice(a,4)
    Out[18]: array([6, 3, 2, 8])
    

      6.shuffle(x)打乱x的顺序

    In [22]: arr = np.arange(9)
    
    In [23]: np.random.shuffle(arr)
    
    In [24]: arr
    Out[24]: array([6, 0, 2, 7, 1, 3, 5, 8, 4])
    

    更多详细内容参考:http://www.mamicode.com/info-detail-507676.html

    二、tf.reduce_sum()中的参数reduction_indices详解

    distance = tf.reduce_sum(tf.abs(tf.add(x_train,tf.negative(x_test))),reduction_indices=1)
    

      reduce_sum() 就是求和,由于求和的对象是tensor,所以是沿着tensor的某些维度求和。reduction_indices是指沿tensor的哪些维度求和。

      具体见下图详细解释:

    三、eval函数

      1.Python中的eval函数的作用是把字符串有效的表达式并返回结果。

      直接上代码例子:

      

    In [1]: str1 = '1+4'
    
    In [2]: str2 = '[1,2,3,4,5,6,7]'
    
    In [3]: str3 = '[[1,],[2],[3,]]'
    
    In [6]: type(eval(str1))
    Out[6]: int
    
    In [7]: type(eval(str2))
    Out[7]: list
    
    In [8]: type(eval(str3))
    Out[8]: list
    

      2.TensorFlow中应用的Tensor.eval()函数:

     print("Accuracy:",accuracy.eval({x:mnist.test.images,y:mnist.test.labels}))
    

      Tensor.eval()是对Session.run()的代替,避免变量持有会话。

      常用案例如下:

    mat = tf.matmul(a,b)
    
    print(mat.eval())
    

      

     四、Python格式化字符串 format()

      

    用法:

      它通过{}和:来代替传统%方式

      1、使用位置参数

      要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表

    >>> li = ['hoho',18]
    >>> 'my name is {} ,age {}'.format('hoho',18)
    'my name is hoho ,age 18'
    >>> 'my name is {1} ,age {0}'.format(10,'hoho')
    'my name is hoho ,age 10'
    >>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')
    'my name is hoho ,age 10 hoho'
    >>> 'my name is {} ,age {}'.format(*li)
    'my name is hoho ,age 18'

      

      2、使用关键字参数

      要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可

    >>> hash = {'name':'hoho','age':18}
    >>> 'my name is {name},age is {age}'.format(name='hoho',age=19)
    'my name is hoho,age is 19'
    >>> 'my name is {name},age is {age}'.format(**hash)
    'my name is hoho,age is 18'
    

      

      3、填充与格式化

      :[填充字符][对齐方式 <^>][宽度]

    >>> '{0:*>10}'.format(10)  ##右对齐
    '********10'
    >>> '{0:*<10}'.format(10)  ##左对齐
    '10********'
    >>> '{0:*^10}'.format(10)  ##居中对齐
    '****10****'
    

      4、精度与进制

    >>> '{0:.2f}'.format(1/3)
    '0.33'
    >>> '{0:b}'.format(10)    #二进制
    '1010'
    >>> '{0:o}'.format(10)     #八进制
    '12'
    >>> '{0:x}'.format(10)     #16进制
    'a'
    >>> '{:,}'.format(12369132698)  #千分位格式化
    '12,369,132,698'
    

      5、使用索引

    >>> li
    ['hoho', 18]
    >>> 'name is {0[0]} age is {0[1]}'.format(li)
    'name is hoho age is 18
    

      

  • 相关阅读:
    程序员书单合集,持续整理中
    informatica9.5.1后最一步出错(ICMD_10033,INFACMD_10053)
    Informatica9.5.1配置域名错误(ICMD_10033,INFASETUP_10002,RSVCSHARED_00021)
    程序员书单_UML篇
    程序员书单_J2EE专题
    程序员书单_求职面试
    程序员书单_java专项进阶篇
    程序员书单_HTML篇
    程序员书单_数据结构和算法篇
    程序员书单_HeadFirst系列
  • 原文地址:https://www.cnblogs.com/zhangshilin/p/7224930.html
Copyright © 2011-2022 走看看