2017-08-01 6 views
0

Ich möchte eine Reihe von vortrainierten Gewichte von Tensorflow nach Keras exportieren. Das Problem besteht darin, dass Chargennormalisierungsschichten in Tensorflow nur Beta und Gamma als trainierbare Gewichte einbetten, während wir in Keras auch Moving_mean und Moving_variance haben. Ich bin verwirrt, wo diese Gewichte von erhalten werden.Moving_mean und Moving_variance in BatchNormalisierung Schicht von Keras

Antwort

1

Versuchen Sie tf.train.NewCheckpointReader. Ich habe kürzlich ein CNN-Modell von TF nach Keras konvertiert, und es gibt kein Problem damit, die Moving-Mean/Varianz-Gewichte damit zu exportieren.

reader = tf.train.NewCheckpointReader(ckpt_file) 
for key in reader.get_variable_to_shape_map(): 
    path = os.path.join(output_folder, get_filename(key)) 
    arr = reader.get_tensor(key) 
    np.save(path, arr) 
    print("tensor_name: ", key) 

wo get_filename() ist nur eine Funktion Tensor Namen zu richtigen Dateinamen zu konvertieren. (z. B. Ersetzen von Schrägstrichen durch Unterstriche)

Die full code kann hilfreich sein, wenn Sie an weiteren Details interessiert sind.

+0

Danke für Ihre Antwort. Ich habe es geschafft, sie aus 'tf.model_variables()' zu holen und sie in keras-Layer zu exportieren. – Monaj

Verwandte Themen