np.mean和tf.reduce_mean有什么区别? - python

在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:要减少的张量。应为数字类型。

reduction_indices:要减小的尺寸。如果是None(默认值),请减小所有尺寸。

# '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操作。但是为了进行张量流操作,必须在tensorflow Session内部完成。您可以阅读有关它的更多信息here。因此,当您需要对tensorflow图(或结构)进行任何计算时,必须在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)

我们可以自然而然地在1中增加numpy的均值,但是要在tensorflow中做到这一点,您需要在Session中执行,而不能使用Session则无法做到这一点。换句话说,当您计算tfMean = tf.reduce_mean(c)时,tensorflow不会对其进行计算。它仅以Session进行计算。但是,当您编写np.mean()时,numpy会立即进行计算。
我希望这是有道理的。

减少后,Python映射的对象变为空 - python

A = map(lambda x: x * 2, [1, 2]) z = reduce(lambda x, y: x + y, A) print(z, list(A)) # outputs: 6 [] 如此混乱以至于规范的map reduce FP操作导致了破坏性的结果。表面之下发生了什么? 参考方案 map返回一个迭代器。您的reduce完全消耗了该迭代器…

Python:对音乐文件执行FFT - python

我试图对我创建的歌曲(wav格式的音频文件,大约3分钟)进行FFT,以防万一它是相关的。ffmpeg -i "$1" -vn -ab 128k -ar 44100 -y -ac 1 "${1%.webm}.wav" 其中$1是webm文件的名称。这是应该显示给定文件的FFT的代码:import numpy as np …

pd.NA vs np.nan的熊猫 - python

pd.NA vs np.nan表示熊猫。与熊猫一起使用哪一个,为什么要使用?每个大熊猫的主要利弊是什么?一些同时使用它们的示例代码:import pandas as pd import numpy as np df = pd.DataFrame({ 'object': ['a', 'b', …

我们如何只替换特定行中的NaN? - python

我只需要在数据框的特定行中替换NaN值。我原来的样子是这样的:import pandas as pd import numpy as np pd.DataFrame.from_dict({'col1': 'A B A D E B C D E A'.split(), 'col2': [np.nan, …

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…