在MNIST beginner tutorial中,有一条语句
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
tf.cast
基本上改变了对象的张量类型,但是 tf.reduce_mean
和 np.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.mean
和tensorflow.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会立即进行计算。
我希望这是有道理的。
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的熊猫 - pythonpd.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应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…