首页 > 解决方案 > Elephas 教程错误 - ValueError:无法解释优化器标识符

问题描述

我正在尝试在 Colab 上运行这个 elephas 教程。

我准备了环境

!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://downloads.apache.org/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz
!tar xf spark-2.4.6-bin-hadoop2.7.tgz
!pip install -q findspark
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-2.4.6-bin-hadoop2.7"
import findspark
findspark.init("spark-2.4.6-bin-hadoop2.7")
!pip install elephas

当我适合模型时

pipeline = Pipeline(stages=[estimator])
fitted_pipeline = pipeline.fit(df)

我收到以下错误消息

>>> Fit model
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-6d2ae7604dd2> in <module>()
      1 # Fitting a model returns a Transformer
      2 pipeline = Pipeline(stages=[estimator])
----> 3 fitted_pipeline = pipeline.fit(df)

11 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/optimizers.py in get(identifier)
    901   else:
    902     raise ValueError(
--> 903         'Could not interpret optimizer identifier: {}'.format(identifier))

ValueError: Could not interpret optimizer identifier: 1e-06

如您所见,错误与衰减 ( decay=1e-6) 有关。无论如何,即使更改此值,我仍然会遇到相同的错误。

sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
sgd_conf = optimizers.serialize(sgd)

有任何想法吗?

标签: machine-learningkeraspysparkdeep-learningelephas

解决方案


如果您使用的是 Tensorflow 2.0 API,这可能与不兼容有关。我建议使用最新版本重试:https ://github.com/danielenricocahall/elephas/releases/tag/1.0.0 ,它现在包含对 Tensorflow 2.1.x 和 Tensorflow 2.3.x 的支持。


推荐阅读