Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在apachespark中并行训练Keras模型_Python_Apache Spark_Pyspark_Deep Learning - Fatal编程技术网

Python 在apachespark中并行训练Keras模型

Python 在apachespark中并行训练Keras模型,python,apache-spark,pyspark,deep-learning,Python,Apache Spark,Pyspark,Deep Learning,\我正在尝试使用ApacheSpark和Elephas并行训练多个Keras模型。以下是我尝试执行的代码: train_data = pd.read_csv("csv_files/stats.csv") timesteps = 30 model_1, rdd1 = train_LSTM_model(spark_context = sc, dataframe= train_data, column_number=1 ,timesteps = 30) model_2, rdd2 = train_L

\我正在尝试使用ApacheSpark和Elephas并行训练多个Keras模型。以下是我尝试执行的代码:

train_data = pd.read_csv("csv_files/stats.csv")
timesteps = 30

model_1, rdd1 = train_LSTM_model(spark_context = sc, dataframe= train_data, column_number=1 ,timesteps = 30)
model_2, rdd2 = train_LSTM_model(spark_context = sc, dataframe = train_data, column_number=2,timesteps = 30)
model_3, rdd3 = train_LSTM_model(spark_context = sc, dataframe = train_data, column_number=3,timesteps = 30)
model_4, rdd4 = train_LSTM_model(spark_context = sc, dataframe = train_data, column_number=4,timesteps = 30)
model_5, rdd5 = train_LSTM_model(spark_context = sc, dataframe = train_data, column_number=5,timesteps = 30)
model_6, rdd6 = train_LSTM_model(spark_context = sc, dataframe = train_data, column_number=6,timesteps = 30)
# Fitting model to RDD
spark_model_1 = fit_to_spark_model(keras_model=model_no_programs_run, rdd = rdd1)
spark_model_2 = fit_to_spark_model(keras_model=model_duration_time, rdd = rdd2)
spark_model_3 = fit_to_spark_model(keras_model=model_avg_duration_time, rdd = rdd3)
spark_model_4 = fit_to_spark_model(keras_model=model_no_processed_records, rdd = rdd4)
spark_model_5 = fit_to_spark_model(keras_model=model_status_states, rdd = rdd5)
spark_model_6 = fit_to_spark_model(keras_model=model_failure_within_period, rdd = rdd6)


# HOW TO RUN THE SCRIPT
#spark-submit --driver-memory 1G ./stats_app.py
很多代码都被抽象掉了,但基本上,
train\LSTM\u model()
函数返回的是一个编译过的Keras模型和一个RDD。rdd_1、rdd_2、rdd_35;等来自:
rdd=to\u simple\u rdd(spark\u上下文、X\u序列、y\u序列)
函数内部。X_列和y_列已从传入的数据帧中提取到每个
train_LSTM_model()
函数中

另外,下面是
fit\u to\u spark\u model()
函数的作用:

def fit_to_spark_model(keras_model, rdd):
   spark_model = SparkModel(keras_model, frequency='epoch', mode='asynchronous')
   spark_model.fit(rdd, epochs=20, batch_size=32, verbose=0, validation_split=0.25)
   return spark_model

这对于在Spark Worker节点上同时训练多个Keras模型有意义吗?还是我必须采取不同的方法?不确定我是否只需要一个RDD或多个RDD,就像我目前正在做的那样。非常感谢。

我希望您在实施Spark&Elephas之前充分了解其工作原理。如果您所做的这些步骤是通过Spark创建并行化,那么让我澄清一下,这是绝对不必要的。并行性是在内部实现的,无需用户端进行任何显式编码

train_LSTM_model()-这将返回一个Keras模型,并使用Elephas的
to_simple_rdd
方法创建一个rdd

根据Elephas的基本文档,我怀疑从
列车运行模式返回的所有rdd和模型都是相同的(如果您没有对列车运行模式代码块中的数据尺寸进行任何更改)。因此,您将在同一数据帧上多次构建类似的模型

即使我关于模型和数据相同的假设是错误的,我建议您单独运行每个模型,因为这可能会阻塞spark服务器,可能不会为每个模型释放足够的工作节点,从而导致每次运行模型花费大量时间