テンソルフローのリストの中央値はどのようにして計算できますか? Tensorflowの中央値
node = tf.median(X)
同様にXがnumpyのではプレースホルダ
ですが、私は直接、中央値を取得するためにnp.median使用することができます。テンソルフローでnumpy演算を使用するにはどうすればよいですか?
テンソルフローのリストの中央値はどのようにして計算できますか? Tensorflowの中央値
node = tf.median(X)
同様にXがnumpyのではプレースホルダ
numpy関数を使用する必要はありません。 Xがすでに整形をスキップすることができますベクトルの場合
def get_median(v):
v = tf.reshape(v, [-1])
m = v.get_shape()[0]//2
return tf.nn.top_k(v, m).values[m-1]
を:あなたが使用してtensorflow内の中央値を計算することができます。
現在TFにはno median functionが存在します。 TFでnumpy操作を使用する唯一の方法は、グラフを実行した後です。
import tensorflow as tf
import numpy as np
a = tf.random_uniform(shape=(5, 5))
with tf.Session() as sess:
np_matrix = sess.run(a)
print np.median(np_matrix)
私はnumpyには1つの欠点があると考えました。それは、それがテンソル計算ではないためCPUで実行する必要があります。したがって、大規模なndarrayの場合、残念ながら多くのメモリが消費され、パフォーマンスが低下します。 –
tensorflow
で配列の中央値を計算するには、quantile
の関数を使用できます。これは、50%分位がmedian
であるためです。 interpolation
パラメータはlower
、higher
又はnearest
サンプル値に結果を近似するため
import tensorflow as tf
import numpy as np
np.random.seed(0)
x = np.random.normal(3.0, .1, 100)
median = tf.contrib.distributions.percentile(x, 50.0)
tf.Session().run(median)
このコードは、np.median
の同じ動作をしていません。
あなたが使用することができ、同じ動作をする場合:そのほかに
median = tf.contrib.distributions.percentile(x, 50.0, interpolation='lower')
median += tf.contrib.distributions.percentile(x, 50.0, interpolation='higher')
median /= 2.
tf.Session().run(median)
、上記のコードはnp.percentile(x, 50, interpolation='midpoint')
と同等です。
ご協力ありがとうございます。定義されたXは、入力データのサイズが未知であるため、[None、5]行列です。どうすればこの問題を把握できますか? –
@ YingchaoXiong合計のマトリックスの中央値または次元の1つに沿って中央値を計算しますか? – BlueSun
寸法に沿って。私はこの問題を理解していた。新しい問題は、行列のサイズ、または関数内のmの値を定義する方法です。プレースホルダのサイズは[なし、5]です。トレーニングパートでは、バッチサイズを10([10,5])に設定し、予測はサイズを[1,5]に設定します。フィードのサイズに基づいてmの値を変更するにはどうすればよいですか?どうもありがとうございます!!! –