Как инициализировать веса в функции модели оценки TensorFlow, используя предварительно обученные переменные? - PullRequest
0 голосов
/ 31 мая 2018

Я хочу обернуть мою модель, используя API tf.Estimator из TensorFlow, поэтому у меня есть следующее model_fn:

    def model_fn(features, labels, mode, params):
        # Load vocabulary
        n_vocab = params['n_vocab']

        if mode != tf.estimator.ModeKeys.PREDICT:
            labels = tf.reshape(labels, (-1, 1))

        embedding = tf.Variable(tf.random_uniform((tf.cast(n_vocab, tf.int32),
                                                  tf.cast(params['embed_space'], tf.int32)), 0, 1), name='embedding')
        embedding_layer = tf.nn.embedding_lookup(embedding, features[INPUT_TENSOR_NAME], name='embedding_layer')

        ...

Она инициализирует переменные встраивания и выполняет некоторые другие действия в дальнейшем.Теперь я не хочу инициализировать эти веса, используя tf.random_uniform, но использую вес из сохраненной модели, которую я тренировал ранее, и замораживаю их, чтобы они не могли быть обучены.Как мне этого добиться?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете использовать tf.estimator.WarmStartSettings.Estimator предоставляет простой способ создать это, добавив аргумент warm_start_from.

. При создании оценщика вы должны передать каталог сохраненной модели:

estimator = tf.estimator.Estimator(
    model_fn, model_dir, warm_start_from=SAVED_MODEL_DIR)

.может потребоваться незамерзшая версия сохраненной модели.

...