2017-06-08 3 views
0

ベクトルのモーメントを計算したいx = np.random.normal(0,1,[1,500])テンソルを使ってモーメントを得ることができません

File "/tmp/venv/local/lib/python2.7/site-packages/tensorflow/python/ops/nn.py", line 830, in moments 
y = math_ops.cast(x, dtypes.float32) if x.dtype == dtypes.float16 else x 
TypeError: data type not understood 

私はtensorflow==0.11.0を使用しています:私はmean, std = tf.nn.moments(x,axes=[0])を行うと、このエラーがスローされます。正しい構文は何ですか?

答えて

0

tf.nn.momentsのドキュメントに示されているように、入力xはテンソルでなければなりません。

次のようなものを使用する必要があります

x = tf.placeholder("float", [None,500]) 
mean, std = tf.nn.moments(x, axes=[0]) 

sess = tf.Session() 
sess.run(tf.global_variables_initializer()) 
sample_mean, sample_std = sess.run([mean, std], 
    feed_dict={x: np.random.normal(0,1,[1,500])}) 

注:のみ1つのデータ値があるので、この特定の計算では、あまり意味がありません。図形を[32、500]のように増やしたり、軸を[0]から[1]に変更したりすることもできます。

計算された標準偏差が0に等しいにもかかわらず、モーメントが1次元の軸に沿って計算されるため、計算はエラーなく完了します。

+0

分散は標準偏差の平方和ではありませんか?すなわち分散= tf.square(std) – jasekp

関連する問題