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