tensorflow中的一些函数 tf.reduce,tf.argmax,tf.equal

tensorflow中 tf.reduce_mean函数

2018年04月03日 08:44:42 -牧野- 阅读数:18695

 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/dcrmg/article/details/79797826

tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。

 
  1. reduce_mean(input_tensor,

  2. axis=None,

  3. keep_dims=False,

  4. name=None,

  5. reduction_indices=None)

  • 第一个参数input_tensor: 输入的待降维的tensor;
  • 第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
  • 第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;
  • 第四个参数name: 操作的名称;
  • 第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;

以一个维度是2,形状是[3,3]的tensor举例:

 
  1. import tensorflow as tf

  2.  
  3. x = [[1,2,3],

  4. [1,2,3]]

  5.  
  6. xx = tf.cast(x,tf.float32)

  7.  
  8. mean_all = tf.reduce_mean(xx, keep_dims=False)

  9. mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False)

  10. mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False)

  11.  
  12.  
  13. with tf.Session() as sess:

  14. m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1])

  15.  
  16. print m_a # output: 2.0

  17. print m_0 # output: [ 1. 2. 3.]

  18. print m_1 #output: [ 2. 2.]

如果设置保持原来的张量的维度,keep_dims=True ,结果:

 
  1. print m_a # output: [[ 2.]]

  2. print m_0 # output: [[ 1. 2. 3.]]

  3. print m_1 #output: [[ 2.], [ 2.]]

  4.  
  5.  
  6.  
  7.  

类似函数还有:

  • tf.reduce_sum :计算tensor指定轴方向上的所有元素的累加和;
  • tf.reduce_max  :  计算tensor指定轴方向上的各个元素的最大值;
  • tf.reduce_all :  计算tensor指定轴方向上的各个元素的逻辑和(and运算);
  • tf.reduce_any:  计算tensor指定轴方向上的各个元素的逻辑或(or运算);

tf.equal的使用

2017年05月16日 00:17:41 UESTC_C2_403 阅读数:38506

tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的

 
  1. import tensorflow as tf

  2. import numpy as np

  3.  
  4. A = [[1,3,4,5,6]]

  5. B = [[1,3,4,3,2]]

  6.  
  7. with tf.Session() as sess:

  8. print(sess.run(tf.equal(A, B)))


输出:

[[ True  True  True False False]]

tf.argmax是tensorflow用numpy的np.argmax实现的,它能给出某个tensor对象在某一维上的其数据最大值所在的索引值,常用于metric(如acc)的计算

tf.argmax()函数中有个axis参数(轴),该参数能指定按照哪个维度计算。
如 在矩阵的结构中,axis可被设置为0或1,分别表示
0:按列计算,1:行计算

下面是具体的示例,便于直观理解(因tf.argmax()的axis的用法与numpy中的argmax相同,为方便起见,本文使用了numpy.argmax()用于示例)

  1.  

axis=0

当axis=0时,以列为单位,第一列的最大值为索引为3的8,所以第一个值为3,以此类推

  1.  

axis=1

当axis=1时,以行为单位,第一行的最大值为索引为2的3,所以第一个结果为2

小礼物走一走,来简书关注我



作者:柴柴总
链接:https://www.jianshu.com/p/1aec70f77b36
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_38859557/article/details/88419446
今日推荐