导入 coremltools 时出错 - 无法导入名称 ParametricSoftPlus

Posted

技术标签:

【中文标题】导入 coremltools 时出错 - 无法导入名称 ParametricSoftPlus【英文标题】:Error importing coremltools - cannot import name ParametricSoftPlus 【发布时间】:2017-11-10 19:00:36 【问题描述】:

尝试使用 Apple coreML 工具来转换使用 Keras 的简单模型。 我正在使用 Python 2.7 运行这行代码:

导入 coremltools

给出以下错误:

从 keras.layers.advanced_activations 导入 ParametricSoftPlus

ImportError: 无法导入名称 ParametricSoftPlus

注意:在我的脚本中导入 ParametricSoftPlus 没有问题:

从 keras.layers.advanced_activations 导入 ParametricSoftPlus

注意 #2:我打开了引发错误的文件,如果我使用上面相同的语句,它会失败并出现相同的错误。

起初我认为这可能是权限问题,但如果是这样,则没有脚本文件能够访问 keras 的 ParametricSoftPlus

注意#3:我可以绕过源文件中的那行代码,然后它给我同样的 SReLU 错误。

非常感谢任何帮助,在此先感谢。

【问题讨论】:

您使用的是什么版本的 Keras? coremltools 当前需要 Keras 1.2.2。如果您有不同的版本(例如 2.0),那么它将无法正常工作。 我使用的是 Keras 1.2.2 【参考方案1】:

结果我卸载了我所有的 Python 库并重新安装了最低限度(是的,Keras 是 v.1.2.2),但它仍然没有工作。

我还重新安装了 pip: pip install --upgrade --force-reinstall

然后我决定全力以赴,从我的系统中删除 Python 并重新安装它。这解决了我的问题。现在这不是一个解决方案,这只是一个解决方法和一个大警告......您需要在删除 python 后立即重新安装它,否则您的 MAC 操作系统将无法工作,您将需要重新安装您的操作系统。

可以在许多其他 SO 帖子中找到步骤:

删除 Python 2.7 框架

sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7

删除 Python 2.7 应用程序目录

sudo rm -rf "/Applications/Python 2.7"

删除 /usr/local/bin 中指向此 Python version see ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' 的符号链接 然后运行以下命令删除所有链接:

cd /usr/local/bin/
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/2.7' | awk 'print $9' | tr -d @ | xargs rm

如有必要,请编辑您的 shell 配置文件以删除将 /Library/Frameworks/Python.framework/Versions/2.7 添加到您的 PATH 环境文件。根据您使用的 shell,可能已修改以下任何文件:~/.bash_login、~/.bash_profile、~/.cshrc、~/.profile、~/.tcshrc 和/或 ~/.zprofile。

现在,我们可以安装 Python 2.7:

$ brew install python

希望这对某人有所帮助。

【讨论】:

创建一个引用 Apple 安装的 Python 版本的 virtualenv 要容易得多(也更安全)。然后,您可以在该 virtualenv 中安装所有依赖项。 (通过编写 virtualenv -p /usr/bin/python2.7 myenv 来制作 virtualenv)

以上是关于导入 coremltools 时出错 - 无法导入名称 ParametricSoftPlus的主要内容,如果未能解决你的问题,请参考以下文章

导入sklearn时Python出错..无法从'joblib.logger'导入名称'Logger'

变压器:导入包时出错。 “ImportError:无法从 'torch.optim.lr_scheduler' 导入名称 'SAVE_STATE_WARNING'”

升级 pip 后出错:无法导入名称 'main'

Oracle 导入DMP 出错

Oracle 导入DMP 出错

使用 jinja2 作为 django 模板引擎时出错:无法导入名称“环境”