我注意到 TensorFlow Serving 的每个示例中都使用了 SavedModelBuilder
中的 legacy_init_op
参数,但我没有找到关于这是什么以及为什么被称为 legacy 的清晰解释。有人知道这个参数的用途吗?
示例:
legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
builder.add_meta_graph_and_variables(
sess, [tf.saved_model.tag_constants.SERVING],
signature_def_map={
'predict_images':
prediction_signature,
tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
classification_signature,
},
legacy_init_op=legacy_init_op)
回答:
TensorFlow Serving 使用查找表来进行嵌入或词汇查找。在 TensorFlow 版本低于 1.2 时,表的初始化需要一个单独的操作。因此,您需要单独使用 tf.tables_initializer()
来初始化表。在未来的版本中,该操作将被整合到 ModelBundle 中。