如何在张量流中转换张量中的numpy数组?

时间:2021-01-14 10:53:25

标签: python numpy tensorflow

我在 tensorflow 中编写了以下代码,我将使用该函数根据输入的 X 值进行一些计算

import tensorflow as tf
import math as m

def tf_fn(x):
  pi = tf.constant(m.pi)
  miu=0.0
  o=1.0
  f1=1/(tf.sqrt(2*o**2*pi))
  f2= tf.exp(-((x - miu)**2)/ 2*o**2)
  f3= f1 * f2
  return (f3)
 
x = np.array([0,1,2,3])
tf.print(tf_fn(x))

当我尝试打印时出现以下错误:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-70-fba9acd28831> in <module>()
  1 x = np.array([0,1,2,3])
----> 2 tf.print(tf_fn(x))

7 frames
/usr/local/lib/python3.6/dist-packages/six.py in raise_from(value, from_value)

InvalidArgumentError: cannot compute Mul as input #1(zero-based) was expected to be a float 
tensor but is a double tensor [Op:Mul]

我的预期输出是:[ 0.39894228, 0.24197072, 0.05399097, 0.00443185] 我知道问题是需要转换为张量的 numpy 数组。如何做到这一点以获得我的预期输出?非常感谢!!**

1 个答案:

答案 0 :(得分:1)

在创建数组时指定要使用 float32 而不是 int64。 Numpy 默认为 64 位类型,但 TensorFlow 使用 float32 进行大多数计算。

 x = np.array([0,1,2,3], np.float32)

应该可以解决您的问题。


>>> x = np.array([0,1,2,3], np.float32)
>>> tf_fn(x)
[0.398942292 0.241970733 0.0539909676 0.00443184841]