SystemML: невозможно импортировать подмодуль mllearn (и, следовательно, функцию Keras2DML) - PullRequest
0 голосов
/ 20 октября 2018

Я использую IBM Watson Studio (среда Python по умолчанию) и пытаюсь преобразовать модель Keras в systemml DML и обучить ее на Spark.

!pip install systemml 
import systemml

это выполняется просто отлично.Но это -

from systemml import mllearn 

выдает SyntaxError: импорт * разрешен только на уровне модуля

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, но безуспешно.Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

Код работает с ядром 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.

0 голосов
/ 01 июня 2019

окончательно, это прекрасно работает, если вы работаете с облачным ноутбуком 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

~
~

0 голосов
/ 20 октября 2018

Вам нужно выполнить команду dir (systemml.mllearn), чтобы увидеть функции mllearn.

>>> dir(systemml.mllearn)
['Caffe2DML', 'Keras2DML', 'LinearRegression', 'LogisticRegression', 
'NaiveBayes', 'SVM', '__all__', '__builtins__', '__doc__', '__file__', 
'__name__', '__package__', '__path__', 'estimators']

Пожалуйста, установите SystemML 1.2 с pypi.org.1.2 является последней версией от августа 2018 года. Релиз 1.0 имел только экспериментальную поддержку.

Можете ли вы попробовать импортировать только MLContext, просто чтобы посмотреть, работает ли загрузка основного файла JAR SystemML и какую версию использует ваша установка?

>>> 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
...
...