无法使用tensorflow获取时刻

时间:2017-06-08 14:54:57

标签: tensorflow

我想计算向量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。什么是正确的语法?

1 个答案:

答案 0 :(得分:0)

tf.nn.moments的文档所示,输入x必须是Tensor。

您应该使用以下内容:

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,计算也会毫无错误地完成,因为力矩是沿着一维轴计算的。