如何修复plaidbench keras测试的keras错误?

mkshixfv  于 7个月前  发布在  其他
关注(0)|答案(2)|浏览(95)

我正在尝试安装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上工作]
如何解决上述错误?
谢谢你,谢谢

nwlqm0z1

nwlqm0z11#

Plaidbench没有针对较新的python版本进行测试。它的翻译错误消息也掩盖了这个问题。我使用python 3.10,得到了相同的错误消息。/site-packages/plaidbench/frontend_keras.py的第321行是

importlib.import_module('plaidml.keras').install_backend()

字符串
我手动运行它,它实际上抛出以下ImportError

ImportError: cannot import name 'Iterable' from 'collections' in Python


在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虚拟环境,只需执行以下操作即可

pip install plaidml-keras plaidbench


或者重新创建,并满足以下要求,以防您想要确定版本

cffi==1.16.0
click==8.1.7
colorama==0.4.6
enum34==1.1.10
h5py==3.10.0
Keras==2.2.4
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
numpy==1.24.4
plaidbench==0.7.0
plaidml==0.7.0
plaidml-keras==0.7.0
pycparser==2.21
PyYAML==6.0.1
scipy==1.10.1
six==1.16.0


这也适用于Python 3.8,但你必须保持在3.7或更低版本,才能在PyPI中支持tensorflow。
只是一个侧记:Anaconda使罐装解决方案更容易,但受到有限的包选择的困扰。当必须混合来自不同来源或仅通道的包时,可能会出现潜在问题。PyPI有更多的选择,但更多的组合需要测试,有时仍然需要从源代码编译。

j2cgzkjk

j2cgzkjk2#

我通过使用Anaconda创建一个虚拟环境来解决这个问题。请注意,我在Windows上工作,所以这可能不是解决您问题的解决方案。如果我不得不猜测,我之前安装的东西会导致Python包问题。我认为这与tensorflow库有关,但我还没有深入研究。我建议您在Mac上尝试一个新的虚拟环境,安装plaidml包的地方。之前的错误消息是完全相同的。

相关问题