我正在尝试安装plaidml-keras,这样我就可以在python/jupyter中使用非Nvidia GPU和Keras。在清除了其他几个障碍之后,我就可以:
plaidbench keras mobilenet
字符串
但它出错了两次
ImportError: cannot import name 'object_list_uid' from 'keras.utils.generic_utils' (/Users/me/sprinthive/src/notebooks/nbenv/lib/python3.7/site-packages/keras/utils/generic_utils.py)
File "/Users/me/sprinthive/src/notebooks/nbenv/lib/python3.7/site-packages/plaidbench/frontend_keras.py", line 321, in __init__
raise core.ExtrasNeeded(['plaidml-keras'])
plaidbench.core.ExtrasNeeded: Missing needed packages for benchmark; to fix, pip install plaidml-keras
型
尽管已经安装了plaidml-keras,但仍存在以下问题:
pip freeze | grep plaid
plaidbench==0.6.4
plaidml==0.6.4
plaidml-keras==0.6.4
型
[我正在使用0.6.4使其在macOS 10.13 High Sierra上工作]
如何解决上述错误?
谢谢你,谢谢
2条答案
按热度按时间nwlqm0z11#
Plaidbench没有针对较新的python版本进行测试。它的翻译错误消息也掩盖了这个问题。我使用python 3.10,得到了相同的错误消息。/site-packages/plaidbench/frontend_keras.py的第321行是
字符串
我手动运行它,它实际上抛出以下ImportError
型
在Python 3.10中,Iterable类从集合中删除(有关详细信息,请参阅https://stackoverflow.com/a/72032097)。PyPi和https://github.com/plaidml/plaidbench/blob/master/setup.cfg表明,plaidbench指定Python 3.5,https://github.com/plaidml/plaidml/blob/plaidml-v1/environment.yml指定Python 3.7。使用全新的Python 3.7虚拟环境,只需执行以下操作即可
型
或者重新创建,并满足以下要求,以防您想要确定版本
型
这也适用于Python 3.8,但你必须保持在3.7或更低版本,才能在PyPI中支持tensorflow。
只是一个侧记:Anaconda使罐装解决方案更容易,但受到有限的包选择的困扰。当必须混合来自不同来源或仅通道的包时,可能会出现潜在问题。PyPI有更多的选择,但更多的组合需要测试,有时仍然需要从源代码编译。
j2cgzkjk2#
我通过使用Anaconda创建一个虚拟环境来解决这个问题。请注意,我在Windows上工作,所以这可能不是解决您问题的解决方案。如果我不得不猜测,我之前安装的东西会导致Python包问题。我认为这与tensorflow库有关,但我还没有深入研究。我建议您在Mac上尝试一个新的虚拟环境,安装plaidml包的地方。之前的错误消息是完全相同的。