层顺序从未被调用,因此没有定义的输入

-2 投票
1 回答
64 浏览
提问于 2025-04-13 14:17

我在我的Anaconda虚拟环境里运行一个简单的脚本。

from deepface import DeepFace

face_analysis = DeepFace.analyze(img_path = "face3.jpeg")
print(face_analysis)

但是我一直收到这个错误。

Action: age:  25%|██████████████████████████▊                                                                                | 1/4 [00:02<00:06,  2.08s/it]
Traceback (most recent call last):
  File "C:\Users\Ctrend.pk\Cheer-Check\test2.py", line 9, in <module>
    analysis = DeepFace.analyze(img_path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\deepface\DeepFace.py", line 222, in analyze
    return demography.analyze(
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\deepface\modules\demography.py", line 157, in analyze
    apparent_age = modeling.build_model("Age").predict(img_content)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\deepface\modules\modeling.py", line 57, in build_model
    model_obj[model_name] = model()
                            ^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\deepface\extendedmodels\Age.py", line 32, in __init__
    self.model = load_model()
                 ^^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\deepface\extendedmodels\Age.py", line 61, in load_model
    age_model = Model(inputs=model.input, outputs=base_model_output)
                             ^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\keras\src\ops\operation.py", line 228, in input
    return self._get_node_attribute_at_index(0, "input_tensors", "input")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Ctrend.pk\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\keras\src\ops\operation.py", line 259, in _get_node_attribute_at_index
    raise ValueError(
ValueError: The layer sequential_1 has never been called and thus has no defined input.

Deepface版本:0.0.87

TensorFlow版本:2.16.1

我觉得它能获取年龄,但之后就不继续了。我是不是漏掉了什么?

1 个回答

1

从tensorflow 2.16开始,keras 3成为默认的keras版本。以前的keras功能不再可用了。如果你想继续使用旧版的keras,可以在导入tensorflow之前,把TF_USE_LEGACY_KERAS这个环境变量设置为1,并安装tf_keras包。

这个环境变量需要设置,而tf_keras的安装在deepface的最新版本0.0.89中是强制要求的,适用于使用tf 2.16或更高版本的用户。

简单来说:如果你把deepface包升级到最新版本,就不需要担心这个问题了。

撰写回答