2017-09-29 15 views
0

私は、約700mbの事前秤量[h5df]のケラスモデルを持っています。私はApache Sparkでブロードキャスト変数として使用したいと思います。 ケラスモデル自体がスパークを認識せず、シリアライズできないため、これは可能ではないようです。 2.グーグルグーグルで、私はElephasのライブラリを見つけました。そこでElephasTransformerでKeras pretrainedモデルをラップしてみました。これは(私はPython 2.7を使用して)複数のエラーを投げています。例えば、Elephasのファイルml_model.pyの "pyspark.ml.util import keyword_only"から、インポートは利用できません。これをコメントしてコードを適切に修正しようとしても、稠密層の1つにテンソル誤差を投げるので、ケラスモデルのブロードキャストを処理できないようです。KerkモデルをApache Spark&Elephasのブロードキャスト変数として使用する

pretrained kerasモデルをapache sparkのブロードキャスト変数として使用する方法はありますか?

+0

。私は、オブジェクトがブロードキャスト変数であるための唯一の要件は、シリアル化可能でなければならないということです。それはPythonについてはあまり確かではないので、Java内部で簡単に行うことができます。私たちが見ることができるいくつかのコードを共有することは可能ですか? –

答えて

0

は私がSparkFiles

spark.sparkContext.addFile("model_file.h5") 

を使用してモデルを配布し、ローカルにロードしたい:私は成功した放送変数内の900メガバイトのデータ間で共有

from pyspark import SparkFiles 
from keras.models import load_model 

def f(it): 
    path = SparkFiles.get("mode_file.h5") 
    model = load.model(path) 

    for i in it: 
     yield ... # Do something 


rdd.mapPartitions(f) 
関連する問題