Angenommen, Sie haben das Google-Modell von InceptionNet im Bereich InceptionV1
und möchten es mit Ausnahme der letzten Ebene im Bereich InceptionRetrained
, die Sie umschulen möchten, laden.
Vorausgesetzt, dass Sie bereits damit begonnen, die letzte Schicht Umschulung und Sie erstellt last_layer.ckpt Datei von saver2.save(session, 'last_layer.ckpt')
, hier ist, wie das Netz von beiden Checkpoints wiederherzustellen.
saver1 = tf.train.Saver(var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='InceptionV1'))
saver1.restore(session, 'inception_model_from_google.ckpt')
saver2 = tf.train.Saver(var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='InceptionRetrained'))
saver2.restore(session, 'last_layer.ckpt')
Wenn Sie nur die letzte Schicht Umschulung sind, vergessen Sie nicht, die Ausbreitung des Gradienten das Netzwerk (spart Zeit) bis zu deaktivieren, indem das Optimierungsprogramm mit var_list
Argument aufrufen.
tf.train.Optimizer(0.0001).minimize(
loss, var_list=tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='Inceptionretrained'))