• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Numpy的np.mean和和Tensorflow中tf.reduce_mean之间的区别?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在MNIST beginner tutorial中,有accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

tf.cast基本上改变了对象的张量类型,那么tf.reduce_meannp.mean有什么不同?

这是tf.reduce_mean上的文档:

reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)
input_tensor: The tensor to reduce. Should have numeric type.
reduction_indices: The dimensions to reduce. If `None` (the defaut),
    reduces all dimensions.

# 'x' is [[1., 1. ]]
#         [2., 2.]]
tf.reduce_mean(x) ==> 1.5
tf.reduce_mean(x, 0) ==> [1.5, 1.5]
tf.reduce_mean(x, 1) ==> [1.,  2.]

对于一维矢量,它看起来像np.mean == tf.reduce_mean,但我不明白tf.reduce_mean(x, 1) ==> [1., 2.]中发生了什么。 tf.reduce_mean(x, 0) ==> [1.5, 1.5]类型是有道理的,因为[1,2]和[1,2]的平均值是[1.5,1.5],但是tf.reduce_mean(x,1)是怎么回事?

最佳解决方法

numpy.meantensorflow.reduce_mean的功能是一样的。他们做同样的事情。从文档numpy和tensorflow,你可以看到。让我们通过一个例子来了解,

c = np.array([[3.,4], [5.,6], [6.,7]])
print(np.mean(c,1))

Mean = tf.reduce_mean(c,1)
with tf.Session() as sess:
    result = sess.run(Mean)
    print(result)

输出

[ 3.5  5.5  6.5]
[ 3.5  5.5  6.5]

在这里你可以看到,当axis(numpy)或者reduction_indices(tensorflow)是1时,它计算了(3,4)和(5,6)和(6,7)中的平均值,所以1定义在哪个轴上计算平均值。当它是0时,通过(3,5,6)和(4,6,7)计算均值,依此类推。

现在他们之间有什么区别?

你可以在python的任何地方计算numpy操作。但是为了进行张量运算,必须在TensorflowSession内完成。你可以在这里阅读更多资料。也就是说,当你需要对张量流Tensorflow图进行任何计算(或者如果你愿意的话)时,必须在张量流Session内完成。

让我们再看另一个例子。

npMean = np.mean(c)
print(npMean+1)

tfMean = tf.reduce_mean(c)
Add = tfMean + 1
with tf.Session() as sess:
    result = sess.run(Add)
    print(result)

我们可以自然地在numpy中增加1,但是为了在tensorflow中做同样的事情,需要在Session中执行,而不使用Session,无法这样做。换句话说,当你计算tfMean = tf.reduce_mean(c)时,tensorflow不会计算它。它只在会话中计算。但是当你写np.mean()时,numpy立即计算出来。

参考资料

  • Difference between np.mean and tf.reduce_mean in Numpy and Tensorflow?


鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
在Windows上,如何在Anaconda Python中安装Keras和Theano?发布时间:2022-05-14
下一篇:
如何以正确的方式平滑曲线?发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap