微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NotImplementedError: numpy() 仅在启用急切执行时可用;使用 TF2.4.1 时

如何解决NotImplementedError: numpy() 仅在启用急切执行时可用;使用 TF2.4.1 时

使用 tensorflow 2.4.1,我在 keras 中覆盖 SimpleRNNCell.call在这里找到:

https://github.com/tensorflow/tensorflow/blob/85c8b2a817f95a3e979ecd1ed95bff1dc1335cff/tensorflow/python/keras/layers/recurrent.py#L1362

正是偏差部分如下:

    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,可能有什么问题?

解决方法

@拉米汉娜
AFAIK,Keras 在执行时将所有层和模型转换为图形。因此,即使开启了 Eager 模式,您也可能会遇到此类错误。您可以通过以下任一方式避免它们:

  1. 将图层用作函数(以测试您所做的更改)
  2. 设置 dynamic=True 标志(在文档中检查一次)
,

您需要使用 tensorflow 函数来实现您的层,而不是 numpy 函数。在这种情况下,您应该将 np.arctanh 替换为 tf.math.atanh

bias_inv = tf.math.atanh(self.bias)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。