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

  

posted @ 2017-07-23 16:41  故笙  阅读(1316)  评论(0编辑  收藏  举报