升级到 TensorFlow 2.8.0 后无法解决导入“tensorflow.keras”问题

djv*_*oli 30 python python-3.x tensorflow2.0

TensorFlow 2.8 最近发布了,我一发布就安装了它。我真的需要它来支持更高的 NumPy 版本和一些新功能。但是,在我的 conda 环境中安装它之后

python3 -m pip install --upgrade tensorflow

PyCharm 和 VSCode 都无法再解析导入from tensorflow.keras import ...

导入本身似乎在运行时工作,但由于导入无法解析,我无法使用代码完成、可视化函数签名等。有人遇到过类似的问题吗?

一切都可以在 TF 2.7 上运行 - 我之前的版本。

注意:我使用的是Python 3.8

与代码 在此输入图像描述

皮查姆 在此输入图像描述

我尝试通过 PyCharm 解释器选项卡检查版本,这就是我所看到的。由于某种原因,PyCharm 不知道 2.0 之后的版本(我在该环境中安装了最新版本的 pip)。我猜这是相关的,但不知道该怎么办。

在此输入图像描述

小智 35

我遇到了同样的问题并通过将其导入为来解决它

from tensorflow.python.keras.layers import Dense
Run Code Online (Sandbox Code Playgroud)

  • 只有很少的语句以这种方式起作用。我尝试了“fromtensorflow.keras.preprocessing.image import ImageDataGenerator”和“fromtensorflow.python.keras.preprocessing.image import ImageDataGenerator”,但它们都不适合我。 (5认同)

小智 18

这是当前版本的 TensorFlow 中的一个错误,如本期所述。

您可以通过以下任一方式解决它

  1. 按照引用问题的本答案site-packages/tensorflow/__init__.py中所述修改文件或
  2. 使用import keras.api._v2.keras as keras,因为这似乎是张量流加载本身的确切包。(尽管您需要_v2在此处引用 protected 成员,但这违反了 python 约定。)

这里的原因是tensorflow尝试以惰性方式加载keras模块,这意味着它仅保留对该模块的引用,直到使用该模块。只有这样 keras 模块才会被真正加载。因此,IDE 只了解 keras 模块的参考张量流,而不了解其内容。


小智 12

我在 Google Colab 中也看到了这个问题。尽管运行代码效果很好。这只是 IDE 的抱怨,据说它找不到导入。很奇怪。我希望 TensorFlow 团队的人尽快提供反馈。

无法解决错误