如何使用预先训练的变量初始化TensorFlow估计器模型函数中的权重?

如何使用预先训练的变量初始化TensorFlow估计器模型函数中的权重?,tensorflow,tensorflow-estimator,Tensorflow,Tensorflow Estimator,我想使用TensorFlow的tf.Estimator API包装我的模型,因此我有以下模型\u fn: def model_fn(features, labels, mode, params): # Load vocabulary n_vocab = params['n_vocab'] if mode != tf.estimator.ModeKeys.PREDICT: labels = tf.reshape(la

我想使用TensorFlow的tf.Estimator API包装我的模型,因此我有以下
模型\u 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
初始化这些权重,而是使用我以前训练过的保存模型的权重,并将其冻结,使其无法训练。如何实现这一点?

您可以使用。Estimator通过添加一个名为
warm\u start\u的参数,提供了一种简单的创建方法

创建估计器时,应传递保存的模型目录:

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

请注意,您可能需要保存模型的未冻结版本。

甚至在使用“tf.estimator.LinearRegressor”开始训练之前,我们需要初始化定义模型的权重,tensorflow中的哪个API会这样做?你能给我指一下吗?tf本身可能在做,但如何做以及从何处开始?。感谢您给出了在哪里加载预先训练的重量的答案,但是tf在第一次跑步中从哪里开始还不清楚。