导入 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'”