NotImplementedError: numpy() is only available when eager execution is enabled; while using TF2.4.1
NotImplementedError: numpy() is only available when eager execution is enabled; while using TF2.4.1
使用 tensorflow 2.4.1,我在 keras 中覆盖 SimpleRNNCell.call
,在此处找到:
具体偏置部分如下:
if self.bias is not None:
bias_inv = np.arctanh(self.bias)
h = K.bias_add(h, bias_inv)
我收到以下错误:
NotImplementedError: in user code:
<ipython-input-12-a2655e34a197>:72 call *
inputs, mask=mask, training=training, initial_state=initial_state)
<ipython-input-55-87c0b5bbed00>:23 call *
bias_inv = np.arctanh(self.bias)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/resource_variable_ops.py:483 __array__ **
return np.asarray(self.numpy())
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/resource_variable_ops.py:620 numpy
"numpy() is only available when eager execution is enabled.")
NotImplementedError: numpy() is only available when eager execution is enabled.
我确定 eager execution 已启用,可能是什么问题?
@Ramy Hanna
AFAIK,Keras 在执行时将所有层和模型转换为图形。因此,即使开启了 Eager 模式,您也可能会遇到此类错误。您可以通过以下任一方式避免它们:
- 将图层用作函数(以测试您所做的更改)
- 设置
dynamic=True
标志(在文档中检查一次)
您需要使用 tensorflow 函数来实现您的层,而不是 numpy 函数。在这种情况下,您应该将 np.arctanh
替换为 tf.math.atanh
:
bias_inv = tf.math.atanh(self.bias)
使用 tensorflow 2.4.1,我在 keras 中覆盖 SimpleRNNCell.call
,在此处找到:
具体偏置部分如下:
if self.bias is not None:
bias_inv = np.arctanh(self.bias)
h = K.bias_add(h, bias_inv)
我收到以下错误:
NotImplementedError: in user code:
<ipython-input-12-a2655e34a197>:72 call *
inputs, mask=mask, training=training, initial_state=initial_state)
<ipython-input-55-87c0b5bbed00>:23 call *
bias_inv = np.arctanh(self.bias)
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/resource_variable_ops.py:483 __array__ **
return np.asarray(self.numpy())
/usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/resource_variable_ops.py:620 numpy
"numpy() is only available when eager execution is enabled.")
NotImplementedError: numpy() is only available when eager execution is enabled.
我确定 eager execution 已启用,可能是什么问题?
@Ramy Hanna
AFAIK,Keras 在执行时将所有层和模型转换为图形。因此,即使开启了 Eager 模式,您也可能会遇到此类错误。您可以通过以下任一方式避免它们:
- 将图层用作函数(以测试您所做的更改)
- 设置
dynamic=True
标志(在文档中检查一次)
您需要使用 tensorflow 函数来实现您的层,而不是 numpy 函数。在这种情况下,您应该将 np.arctanh
替换为 tf.math.atanh
:
bias_inv = tf.math.atanh(self.bias)