Ich habe zwei verschiedene Arten von Daten (Bild-Volumen und Koordinaten) und ich möchte ein Faltungs neuronales Netzwerk auf die Bild-Volumendaten verwenden und dann möchte ich einige zusätzliche hinzufügen Information (dh die Koordinaten des Volumens).Merge zwei verschiedene Deep Learning-Modelle in Keras
Unabhängig davon sollte dies eine ziemlich solide Vorhersage für meine Funktion erstellen. Wie kann ich das mit Keras umsetzen?
Die einzigen Antworten, die ich online gefunden habe, sind entweder mehrdeutig oder verwenden die veralteten Methoden, die ich arbeiten muss. Aber ich würde das gerne mit der aktuellen API implementieren, so dass ich das Modell leichter für die spätere Verwendung speichern kann.
model = Sequential()
model.add(Conv3D(32, kernel_size=(3, 3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv3D(64, (3, 3, 3), activation='relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
print(model.output_shape)
# The additional data (the coordinates x,y,z)
extra = Sequential()
extra.add(Activation('sigmoid', input_shape=(3,)))
print(extra.output_shape)
merged = Concatenate([model, extra])
# New model should encompass the outputs of the convolutional network and the coordinates that have been merged.
# But how?
new_model = Sequential()
new_model.add(Dense(128, activation='relu'))
new_model.add(Dropout(0.8))
new_model.add(Dense(32, activation='sigmoid'))
new_model.add(Dense(num_classes, activation='softmax'))
new_model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
Vielen Dank für die Erläuterung des Beispiels in der API. Ich schätze es! – JahKnows
Noch eine Frage, wie kann ich diese Art von Modell speichern und laden. Reicht es aus, nur das FullModel zu speichern? – JahKnows
Leider konnte ich noch nie ein Modell in Keras speichern. Ich weiß nicht warum. Was ich mache ist 'fullModel.save_weights (Dateiname)' und 'fullModel.load_weights (Dateiname)'. Dies ist ausreichend, um ein gelerntes Modell zu speichern und zu laden, kann jedoch Schwierigkeiten verursachen, wenn Sie das Training erneut beginnen möchten (der Optimierer geht dabei verloren und muss sich während des Trainings neu einstellen). –