【问题标题】:How to do prediction using trained and stored tensorflow model如何使用经过训练和存储的张量流模型进行预测
【发布时间】:2019-01-30 23:25:32
【问题描述】:

我有一个现有的训练模型(特别是 tensorflow word2vec https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb)。我将现有模型恢复得很好:

model1 = tf.train.import_meta_graph("models/model.meta")
model1.restore(sess, tf.train.latest_checkpoint("model/"))

但我不知道如何使用新加载(和训练)的模型进行预测。如何使用恢复的模型进行预测?

编辑:

模型代码来自官方 tensorflow repo https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/word2vec/word2vec_basic.py

【问题讨论】:

    标签: python tensorflow word2vec


    【解决方案1】:

    根据您加载检查点的方式,我认为这应该是使用它进行推理的最佳方式。

    加载占位符:

    input = tf.get_default_graph().get_tensor_by_name("Placeholders/placeholder_name:0")
    ....
    

    加载你用来执行预测的操作:

    prediction = tf.get_default_graph().get_tensor_by_name("SomewhereInsideGraph/prediction_op_name:0")
    

    创建一个会话,执行预测操作,并在占位符中提供数据。

    sess = tf.Session()
    sess.run(prediction, feed_dict={input:input_data})
    

    另一方面,我更喜欢在类的构造函数中创建整个模型。然后,我会做以下事情:

    tf.reset_default_graph()
    model = ModelClass()
    loader = tf.train.Saver()
    sess = tf.Session()
    sess.run(tf.global_variables_initializer())
    loader.restore(sess, path_to_checkpoint_dir)
    

    由于您想将经过训练的 word2vec 模型的嵌入加载到另一个模型中,您应该执行以下操作:

    embeddings_new_model = tf.Variable(...,name="embeddings")
    embedding_saver = tf.train.Saver({"embeddings_word2vec": embeddings_new_model})
    with tf.Session() as sess:
        embedding_saver.restore(sess, "word2vec_model_path")
    

    假设 word2vec 模型中的 embeddings 变量命名为embeddings_word2vec

    【讨论】:

    • 非常有帮助,谢谢!但是我还有一个问题。我对 tf(主要使用 keras)没有太多经验,也不知道应该使用什么命令来计算预测,尤其是对于 word2vec 模型。该代码链接到原始问题。您能否建议如何使用该模型进行预测?
    • 我查看了代码。 Word2vec(用 Skipgram 实现)不是一个可以用来进行准确预测的模型。通常,在这种情况下,您要做的是将预训练的 embedding 矩阵加载到另一个模型中,并使用加载的值初始化另一个模型的嵌入矩阵。
    • 这到底是什么意思?将嵌入用作新模型的“种子”?
    • 嗨,不完全是。训练完成后,我已经存储了嵌入,我只想生成新的嵌入。如何使用现有的基本 nn 和权重来计算新的嵌入?
    • 你不能。 word2vec 模型不是你用来对看不见的例子进行预测的东西。另一方面,您可以做的是检索 word2vec 模型已经看到的样本的学习嵌入,并将它们用于您的特定用例。阅读有关 word2vec(skip-gram、cbow)的更多信息,了解如何使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    相关资源
    最近更新 更多