ImportError:无法从 keras 导入名称“_obtain_input_shape”
Posted
技术标签:
【中文标题】ImportError:无法从 keras 导入名称“_obtain_input_shape”【英文标题】:ImportError: cannot import name '_obtain_input_shape' from keras 【发布时间】:2018-08-13 06:23:42 【问题描述】:在 Keras 中,
我正在尝试按如下方式导入_obtain_input_shape
:
from keras.applications.imagenet_utils import _obtain_input_shape
但是,我收到以下错误:
ImportError: 无法导入名称 '_obtain_input_shape'
我尝试导入_obtain_input_shape的原因是为了确定输入形状(以便加载VGG-Face如下:
我用它来确定输入张量的正确输入形状如下:
input_shape = _obtain_input_shape(input_shape,
default_size=224,
min_size=48,
data_format=K.image_data_format(),
require_flatten=include_top)`
请帮忙? 提前致谢。
【问题讨论】:
可能有更好的方法来做你正在尝试的事情。你到底想用_obtain_input_shape
做什么?
嗨@DanielMöller,我已经编辑了我的问题以包含更多信息。
你知道 keras 没有 VGG-Face,对吧?创建模型时,您应该选择输入形状。如果你想要默认的输入形状,只需传递(224,224,3)
。
感谢丹尼尔的回复,是的,我知道。我想加载 VGG-face 预训练的权重。我会尝试你的建议并让你知道。
有人知道如何为 tensorflow.keras 导入这个吗?
【参考方案1】:
您不必降级 Keras 2.2.2。
在Keras 2.2.2
中keras.applications.imagenet_utils
模块中没有_obtain_input_shape
方法。您可以在 keras-applications 下找到它,模块名称为 keras_applications(下划线)。
因此您不必将 Keras 降级到 2.2.0 只需更改:
from keras.applications.imagenet_utils import _obtain_input_shape
到
from keras_applications.imagenet_utils import _obtain_input_shape
【讨论】:
这应该被接受为正确答案@Tshilidzi Mudau @Geeocode 知道如何通过 tensorflow.keras 导入它吗? @Austin 请给我一个更具体的问题以便能够回答。 @Geeocode 我可以从 TensorFlow 1.12 导入 _obtain_input_shape 吗?【参考方案2】:我找到了一种行之有效的方法。您只需使用
from keras_applications.imagenet_utils import _obtain_input_shape
注意:是keras_applications
而不是keras.application
。
【讨论】:
我有 keras 2.2.4 并且在建议的更改之后,我也看到了同样的问题。任何帮助,请。 从 keras_applications.imagenet_utils 导入 _obtain_input_shape【参考方案3】:这个问题是因为keras的版本造成的。
就我而言,我将 keras 2.2.2 降级到 2.2.0,问题就解决了。
【讨论】:
如何将kerns 2.2.2升级到低于2.2.2的版本 使用'pip install keras==2.2.0' @W.Sam 您不必降级 Keras,请参阅下面的答案。【参考方案4】:在 Colab 中,我通过导入 Keras
并安装解决了这个问题:
import keras
!pip install keras_applications
from keras_applications.imagenet_utils import _obtain_input_shape
【讨论】:
【参考方案5】:keras_applications.imagenet_utils 已弃用
Traceback(最近一次调用最后一次): 文件“inception_v3.py”,第 36 行,在 从 keras_applications.imagenet_utils 导入 _obtain_input_shape ModuleNotFoundError:没有名为“keras_application”的模块
【讨论】:
【参考方案6】:from keras.applications.imagenet_utils import obtain_input_shape
不是 _obtain_input_shape。这适用于 keras==2.5.0rc0 (pip install keras==2.5.0rc0)
【讨论】:
【参考方案7】:对于 keras 2.2.4: 更改如下所示的行以使其工作。
from keras_applications.imagenet_utils import _obtain_input_shape
注意:它是从 keras_applications 导入的,而不是像以前那样从 keras.applications 导入。
【讨论】:
以上是关于ImportError:无法从 keras 导入名称“_obtain_input_shape”的主要内容,如果未能解决你的问题,请参考以下文章
tensorflow.keras.layers:ImportError:无法导入名称“CuDNNLSTM”
Keras - ImportError:无法导入名称'CuDNNLSTM'
ImportError:无法导入名称“model_to_dot”
ImportError: 无法导入 pydot。您必须安装 pydot 和 graphviz 才能使 `pydotprint` 工作