2017-06-16 5 views
0

Angenommen, ich habe ein Keras-Modell und eine Funktion train_model(data), um es auf einige Daten zu trainieren.Keras verteilte Modell und Daten

Ich würde gerne wissen, ob es möglich ist, identische Architektur, identische Hyperparam-Modelle, die separat/unabhängig trainiert wurden, zu kombinieren/zusammenführen?

python train_model(data1) ### one one epoch 
python train_model(data2) ### one one epoch 
... 

dann

load(model1) 
load(model2) 
model3 = combine(model1, model2) 
### model3 equivalent to 2 epochs of learning. 

Ich versuche, einen Weg zu verstehen/finden Sie das Lernen zu verteilen.

+0

Sie zwei Netzwerke aufbauen sollte (genau gleich), die ausgebildet wurde, laden dann die Gewichte für jeden von ihnen getrennt. Dann können Sie die Ausgaben mit der Merge-Ebene kombinieren. Denken Sie daran, Sie sollten 'Model' API verwenden – Nain

Antwort

1

Haben Sie das schon versucht?

from keras.models import load_model 

# load models - it is just the architecture 
model1 = load_model('path/to/trained/model1.h5') 
model2 = load_model('path/to/trained/model2.h5') 

# load trained weights 
model1.load_weights('path/to/weights/from/model1.hdf5') 
model2.load_weights('path/to/weights/from/model2.hdf5') 

# create a model that will merge both 1 and 2 
model = Sequential() 
model.add(Merge([model1, model2], mode = 'concat')) 
model.add(Dense(1)) # for regression, use you last Dense layer here 
model.compile(#your compiling parameters) 

# use your merged model 
model.predict(dataset_to_be_predicted) 

Die Idee ist von here

+0

Ihre Antwort wird die beiden geladenen Modell zu einer neuen Architektur (zwei Zweige Merging am Ende) verketten (BTW Merge geben eine veraltete Warnung für mich). Aber es ist nicht genau das, was ich will. Ich möchte Modell 1 und 2 zu einem Modell 3 kombinieren, das die gleiche Architektur wie Modell 1 und 2 hat! Auf eine Weise, dass es die Gewichte "durchschnitt" (oder etwas anderes). Model3 wird die beiden Lernmethoden der beiden Modelle mischen. –

+0

Ich bin mir nicht sicher, dass Sie das so einfach machen können. Die Gewichte werden entsprechend der Architektur gespeichert, was bedeutet, dass zwei verschiedene Architekturen unterschiedliche Gewichte haben. Sie zusammenzuführen würde bedeuten, den Mittelwert oder etwas Ähnliches zu nehmen, aber wenn es eine andere Menge gibt, würde es nicht wissen, was zu verschmelzen ist. Haben Sie die Vorhersage mit beiden Modellen in Betracht gezogen und das Ergebnis gemittelt? Wenn es eine Klassifizierung ist, könnten Sie die Klasse nehmen, die eine höhere Wahrscheinlichkeit hat. –

+0

die Architektur ist behoben, also kein Problem. Ich möchte nur wissen, ob es möglich ist, getrennt/unabhängig zu lernen und dann die Gewichte so zu kombinieren, dass ein Modell entsteht, als wäre es in zwei Epochen trainiert worden. –

Verwandte Themen