Как повторно использовать / поделиться восстановленным графиком тензорного потока? - PullRequest
0 голосов
/ 19 июня 2020

У меня есть замороженный предварительно обученный график потери восприятия. Этот график должен быть общим для некоторых переменных. Я написал свой код ниже. Проблема этого кода в том, что он, кажется, два раза восстанавливает график в память. Он будет работать и тренироваться, но это неэффективно и глупо.

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.

...