この質問は、GPUメモリに合わせるには大きすぎるKerasの複数の大きなファイルのトレーニングに関する共通の問題に関するものです。 Keras 1.0.5を使用していますが、1.0.6を必要としないソリューションが必要です。これを行うための 一つの方法は、fchollet hereと hereで説明したKeras:複数の大規模データセットのバッチトレーニング
# Create generator that yields (current features X, current labels y)
def BatchGenerator(files):
for file in files:
current_data = pickle.load(open("file", "rb"))
X_train = current_data[:,:-1]
y_train = current_data[:,-1]
yield (X_train, y_train)
# train model on each dataset
for epoch in range(n_epochs):
for (X_train, y_train) in BatchGenerator(files):
model.fit(X_train, y_train, batch_size = 32, nb_epoch = 1)
しかし、私はモデルの状態は、モデルはエポックの間だけでなく、データセットの間だけでなく、再初期化されるということを、保存されていないことを恐れます。各 "エポック1/1" は、以下の異なるデータセットに関する研修を表し:エポック0 ~~~~~
~~~~~~
エポック1/1 295806分の295806 [===== ======================================================損失:15.7517
エポック1/1 407890/407890 [======= ========================================================================================================損失:15.8036
エポック1/1 383188/383188 [========= =====================] - 19秒 - 損失:15.8130
~~~~~~
エポック1/1 295806/295806 [==============] - 14秒 - 損失:15.7517
エポック1/1 407890/407890 [===============] - 20秒 - 損失:15.8036
エポック1/1 383188/383188 [===============] - 15秒 - 損失:15.8130
私はモデルを使用できることを知っています.fit_generatorですが、上記の方法がバッチトレーニングの方法として繰り返し提案されているので、私が間違っていることを知りたいと思います。私はその問題に直面していましたが、私は、私は、すなわちmodel = Sequential(); model.fit_generator(...)
を
Kera's functionality to provide data through Python generatorsを使用したことを覚えているので、あなたの助けを
おかげで、
マックス
は、あなたが小さな塊にあなたの大きいファイルを壊すことによって、小さなバッチで、CPU上のあなたの実験を実行しようとしたことがありますか? –
fit_generatorを使用する必要があることは確かです。https://keras.io/models/sequential/ – shell
バンプ、いずれかを参照してください。 fit_generatorを使うことは最短の方法ではないようです。 – kulssaka