擅长:python、mysql、java
<p><strong>编辑:</strong>此答案已过时,请改用Lucas Venezian Povoa的解决方案。它更简单更快。</p>
<p>可以使用以下方法计算tensorflow内部的中值:</p>
<pre><code>def get_median(v):
v = tf.reshape(v, [-1])
mid = v.get_shape()[0]//2 + 1
return tf.nn.top_k(v, mid).values[-1]
</code></pre>
<p>如果X已经是向量,则可以跳过重塑。</p>
<p>如果您关心中值是偶数大小向量的两个中间元素的平均值,则应改为使用此值:</p>
<pre><code>def get_real_median(v):
v = tf.reshape(v, [-1])
l = v.get_shape()[0]
mid = l//2 + 1
val = tf.nn.top_k(v, mid).values
if l % 2 == 1:
return val[-1]
else:
return 0.5 * (val[-1] + val[-2])
</code></pre>