3

Ich habe große Unterschiede beim Testen eines Keras LSTM-Modells, nachdem ich es trainiert habe, wenn ich das trainierte Modell aus einer .h5 Datei laden (Genauigkeit der ersten ist immer > 0,85 aber von der späteren ist immer unter < 0.2 dh eine zufällige Schätzung).Zeigen Sie Modell Layout/Design (mit allen Verbindungen) in Keras

Jedoch habe ich die Gewichte geprüft, sie sind identisch und auch das spärliche Layout Keras geben Sie mir über plot_model das gleiche ist, aber da dies nur eine grobe Übersicht ruft:

Gibt es weg das volle Layout zeigen ein Keras-Modell (insbesondere Knotenverbindungen)?

Antwort

3

Wenn Sie das Tensorflow-Backend verwenden, können Sie neben plot_model auch keras.callbacks.TensorBoard Callback verwenden, um das gesamte Diagramm im Tensorboard zu visualisieren. Beispiel:

callback = keras.callbacks.TensorBoard(log_dir='./graph', 
             histogram_freq=0, 
             write_graph=True, 
             write_images=True) 
model.fit(..., callbacks=[callback]) 

Dann tensorboard --logdir ./graph aus dem gleichen Verzeichnis ausgeführt werden.

Dies ist eine schnelle Abkürzung, aber Sie können sogar noch weiter gehen. Fügen Sie zum Beispiel tensorflow Code zu definieren (Last) das Modell in benutzerdefinierten tf.Graph Beispiel wie folgt aus:

from keras.layers import LSTM 
import tensorflow as tf 

my_graph = tf.Graph() 
with my_graph.as_default(): 
    # All ops/variables in the LSTM layer are created as part of our graph 
    x = tf.placeholder(tf.float32, shape=(None, 20, 64)) 
    y = LSTM(32)(x) 

.. nach dem Sie list all graph nodes with dependencies, evaluate any variable, display the graph topology und so weiter, um die Modelle zu vergleichen.

Ich persönlich denke, der einfachste Weg ist, Ihre eigene Sitzung einzurichten. Es funktioniert in allen Fällen mit minimalem Patching:

import tensorflow as tf 
from keras import backend as K 

sess = tf.Session() 
K.set_session(sess) 
... 
# Now can evaluate/access any node in this session, e.g. `sess.graph`