У меня есть замороженный предварительно обученный график потери восприятия. Этот график должен быть общим для некоторых переменных. Я написал свой код ниже. Проблема этого кода в том, что он, кажется, два раза восстанавливает график в память. Он будет работать и тренироваться, но это неэффективно и глупо.
def frozen_facenet(x):
frozen_graph = './frozen_facenet.pb'
with tf.gfile.GFile(frozen_graph, 'rb') as f:
restored_graph_def = tf.GraphDef()
restored_graph_def.ParseFromString(f.read())
embeddings = tf.import_graph_def(
restored_graph_def,
input_map={'image_batch:0': x, 'phase_train': tf.constant(False)},
return_elements=['embeddings:0'],
name='facenet'
)[0]
return embeddings
embedding_fake = frozen_facenet(fakeimage) # Facenet accepts (?, 160, 160, 3)
embedding_true = frozen_facenet(trueimage)
print(embedding_fake)
print(embedding_true)
<tf.Tensor 'facenet/embeddings:0' shape=(2, 512) dtype=float32>
<tf.Tensor 'facenet_1/embeddings:0' shape=(2, 512) dtype=float32>
Из-за зависимости библиотеки я не могу использовать Keras. Версия Tensorflow - 1.12.0.