diese Frage in Bezug auf das gemeinsame Problem der Ausbildung auf mehrere große Dateien in Keras, die gemeinsam zu groß sind, auf GPU-Speicher zu passen. Ich benutze Keras 1.0.5 und ich möchte eine Lösung, die 1.0.6 nicht erfordert. Eine Möglichkeit, dies zu tun, wurde von fchollet beschrieben here und here:Keras: Batch-Training für mehrere große Datensätze
# 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)
aber ich fürchte, dass der Zustand des Modells wird nicht gespeichert, sondern, dass das Modell nicht nur zwischen den Epochen neu initialisiert wird, sondern auch zwischen den Datensatz . Jede "Epoche 1/1" stellt Ausbildung auf einem anderen Daten-Set unter:
~~~~~ Epoch 0 ~~~~~~
Epoch 1/1 295806/295806 [===== =========================] - 13s - Verlust: 15,7517
Epoch 1/1 407890/407890 [======= =======================] - 19s - Verlust: 15,8036
Epoch 1/1 383188/383188 [========= =====================] - 19s - Verlust: 15,8130
~~~~~ Epoch 1 ~~~~~~
Epoch 1/1 295806/295806 [==============================] - 14s - Verlust: 15.7517
Epoche 1/1 407890/407.890 [==============================] - 20s - Verlust: 15,8036
Epoch 1/1 383188/383188 [===========================] - 15s - verlust: 15.8130
mir ist bewusst, dass man modell verwenden kann .fit_generator, aber da die obige Methode immer wieder als eine Art Batch-Training vorgeschlagen wurde, würde ich gerne wissen, was ich falsch mache.
Danke für Ihre Hilfe,
Max
Haben Sie (sollten selbsterklärend sein) versucht Ihr Experiment auf CPU in kleinen Chargen laufen durch Ihre große Dateien in kleinere Stücke zu brechen? –
ziemlich sicher, dass Sie benötigen fit_generator verwenden, finden Sie https://keras.io/models/sequential/ – shell
Beule, jeder ein? Mit fit_generator scheint nicht der kürzeste Weg zu sein. – kulssaka