2017-06-08 67 views
0

我想计算矢量x = np.random.normal(0,1,[1,500])的矩。当我做mean, std = tf.nn.moments(x,axes=[0]),它抛出这个错误:无法使用张量流得到矩

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。什么是正确的语法?

回答

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])}) 

注:这种特殊的计算并没有太大的意义,因为只有一个数据值。您可能希望将形状增加到[32,500]之类,或者更可能将轴从[0]更改为[1]。

无论如何,计算将完成不出现错误,尽管计算的标准偏差等于0,这是因为力矩沿与一名维计算。

+0

方差是不是标准偏差的平方?即方差= tf.square(std) – jasekp