我正在使用IBM Watson Studio(默认Spark python环境),并尝试将Keras模型转换为systemml DML并在Spark上进行训练。
!pip install systemml
import systemml
这执行得很好。但这-
from systemml import mllearn
抛出 SyntaxError:import *仅在模块级别允许
dir(systemml)
不显示mllearn。
我尝试从http://www.romeokienzler.com/systemml-1.0.0-SNAPSHOT-python.tar.gz和https://sparktc.ibmcloud.com/repo/latest/systemml-1.0.0-SNAPSHOT-python.tar.gz安装它 和一个git克隆,但没有成功。我在做什么错了?
答案 0 :(得分:2)
您需要执行dir(systemml.mllearn)才能查看mllearn函数。
>>> dir(systemml.mllearn)
['Caffe2DML', 'Keras2DML', 'LinearRegression', 'LogisticRegression',
'NaiveBayes', 'SVM', '__all__', '__builtins__', '__doc__', '__file__',
'__name__', '__package__', '__path__', 'estimators']
请从pypi.org安装SystemML 1.2。 1.2是2018年8月以来的最新版本。1.0版仅具有实验性支持。
能否请您仅尝试导入MLContext,以查看是否加载主SystemML jar文件是否有效,以及您的安装使用什么版本?
>>> from systemml import MLContext
>>> ml = MLContext(sc)
Welcome to Apache SystemML!
Version 1.2.0
>>> print (ml.buildTime())
2018-08-17 05:58:31 UTC
>>> from sklearn import datasets, neighbors
>>> from systemml.mllearn import LogisticRegression
>>> y_digits = digits.target
>>> n_samples = len(X_digits)
>>> X_train = X_digits[:int(.9 * n_samples)]
>>> y_train = y_digits[:int(.9 * n_samples)]
>>> X_test = X_digits[int(.9 * n_samples):]
>>> y_test = y_digits[int(.9 * n_samples):]
>>>
>>> logistic = LogisticRegression(spark)
>>>
>>> print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))
18/10/20 00:15:52 WARN BaseSystemMLEstimatorOrModel: SystemML local memory budget:5097 mb. Approximate free memory available on the driver JVM:416 mb.
18/10/20 00:15:52 WARN StatementBlock: WARNING: [line 81:0] -> maxinneriter -- Variable maxinneriter defined with different value type in if and else clause.
18/10/20 00:15:53 WARN SparkExecutionContext: Configuration parameter spark.driver.maxResultSize set to 1 GB. You can set it through Spark default configuration setting either to 0 (unlimited) or to available memory budget of size 4 GB.
BEGIN MULTINOMIAL LOGISTIC REGRESSION SCRIPT
...
答案 1 :(得分:1)
该代码适用于Python 2.7内核,但不适用于Python 3.5内核。提交https://github.com/apache/systemml/commit/9e7ee19a45102f7cbb37507da25b1ba0641868fd修复了Python 3.5的问题。如果要在本地环境中修复较旧的发行版本,请按照以下两个步骤操作:
A。修复了Python 3.5的缩进要求:
pip install autopep8
find /<location>/systemml/ -name '*.py' | xargs autopep8 --in-place --aggressive
find /<location>/systemml/mllearn/ -name '*.py' | xargs autopep8 --in-place --aggressive
您可以使用<location>
找到pip show systemml
B。修正了更严格的Python 3.5语法: 替换mllearn / estimator.py
中的行from .keras2caffe import *
与
import keras
from .keras2caffe import convertKerasToCaffeNetwork, convertKerasToCaffeSolver, convertKerasToSystemMLModel
由于该修补程序已经交付,因此您将不得不等待下一个版本,即1.3.0。另外,您可以构建并安装最新版本:
git clone https://github.com/apache/systemml.git
cd systemml
mvn package -P distribution
pip install target/systemml-1.3.0-SNAPSHOT-python.tar.gz
谢谢
Niketan。
答案 2 :(得分:0)
最后,如果您正在使用IBM云笔记本,这将是完美的工作
1)
! pip install --upgrade https://github.com/niketanpansare/future_of_data/raw/master/systemml-1.3.0-SNAPSHOT-python.tar.gz
2)
!ln -s -f /home/spark/shared/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT-extra.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT-extra.jar
!ln -s -f /home/spark/shared/user-libs/python3/systemml/systemml-java/systemml-1.3.0-SNAPSHOT.jar ~/user-libs/spark2/systemml-1.3.0-SNAPSHOT.jar
〜
〜