来自 github 上的这个问题 尝试将其添加到您的
tensorflow/__init__.py
的底部(对我来说是 .venv/Lib/site-packages/tensorflow
)
# Explicitly import lazy-loaded modules to support autocompletion.
# pylint: disable=g-import-not-at-top
if _typing.TYPE_CHECKING:
from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator
from keras.api._v2 import keras
from keras.api._v2.keras import losses
from keras.api._v2.keras import metrics
from keras.api._v2.keras import optimizers
from keras.api._v2.keras import initializers
# pylint: enable=g-import-not-at-top
问题是因为 keras 是一个特殊的类,可以实现延迟加载,而不是一个普通的模块。
编辑:通过更新 tf、vscode 或其他内容,我不再遇到此问题,并且不再需要使用上述修复。我只需使用
keras = tf.keras
而不是 from tensorflow import keras
,我现在就可以使用 Intellisense 了。
不要这样直接导入
import tensorflow as tf
import tensorflow.keras as keras
相反做
import tensorflow as tf
keras = tf.keras
此更改后,一切都得到修复并开始显示更好的建议,包括功能文档
您是否尝试清除系统上的缓存?
tensorflow.python.keras
仅供开发人员使用,不应该使用,但我认为用作“类型”就可以了。我还读到它是与 tensorflow.keras
不同的版本,所以请记住这一点。
# Those are the imports, that actualy load the correct code
import tensorflow.keras as tfk
import tensorflow.keras.layers as layers
# This is for typehinting and intllisense
import tensorflow.python.keras as _tfk
import tensorflow.python.keras.layers as _layers
# This gets highlighted as error by my linter, but it runs
tfk: _tfk
layers: _layers
# from now on, the intellisense and docstrings work
# ...
虽然
keras = tf.keras
可以解决问题,但我很惊讶我的家用机器上的 IntelliSense 无法工作。事实证明,由于窗口重新加载或其他原因,我使用的 Jupyter 笔记本没有使用正确的 Python 解释器(带有 tf 和 keras 的 conda 环境@2.11.0
)。
这对我使用 conda 与 cuda 和 tensoflow 有用:
import tensorflow as tf
from tensorflow import keras
from keras.api._v2 import keras as KerasAPI
KerasAPI.applications.ResNet50()
对于
tensorflow/__init__.py
中的张量流 2.16.2 放置:
# Explicitly import lazy-loaded modules to support autocompletion.
# pylint: disable=g-import-not-at-top
if _typing.TYPE_CHECKING:
from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator
from tensorflow import keras
import keras.api.losses
import keras.api.metrics
import keras.api.optimizers
import keras.api.initializers
# pylint: enable=g-import-not-at-top