我想使用TensorFlow的tf.Estimator API包装我的模型,所以我有以下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
初始化这些权重,但是使用我之前训练过的已保存模型的权重,并冻结它们以使它们不可训练。我怎样才能做到这一点?
答案 0 :(得分:1)
您可以使用tf.estimator.WarmStartSettings
。 Estimator通过添加名为clipsToBounds
的参数提供了一种简单的方法来创建它。
创建估算器时,应传递已保存的模型目录:
true
请注意,您可能需要已保存模型的未冻结版本。