Bạn có thể chỉ định thao tác "khởi tạo" khi thêm biểu đồ meta vào gói SavedModel của mình với tf.saved_model.builder.SavedModelBuilder.add_meta_graph
, sử dụng số main_op
hoặc legacy_init_op
kwarg. Bạn có thể sử dụng một hoạt động đơn lẻ, hoặc nhóm lại với nhau một số hoạt động với tf.group
nếu bạn cần nhiều hơn một.
Lưu ý rằng trong Công cụ Cloud ML, bạn sẽ phải sử dụng legacy_init_op
. Tuy nhiên trong tương lai runtime_version
s bạn sẽ có thể sử dụng main_op
(IIRC, bắt đầu với runtime_version == 1.2
)
Module saved_model cung cấp một xây dựng trong tf.saved_model.main_op.main_op
để quấn lên hành động khởi chung trong một op duy nhất (khởi biến địa phương, và bảng khởi tạo).
Vì vậy, trong Tóm lại, mã nên giống như thế này (chuyển thể từ this example):
exporter = tf.saved_model.builder.SavedModelBuilder(
os.path.join(job_dir, 'export', name))
# signature_def gets constructed here
with tf.Session(graph=prediction_graph) as session:
# Need to be initialized before saved variables are restored
session.run([tf.local_variables_initializer(), tf.tables_initializer()])
# Restore the value of the saved variables
saver.restore(session, latest)
exporter.add_meta_graph_and_variables(
session,
tags=[tf.saved_model.tag_constants.SERVING],
signature_def_map={
tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature_def
},
# Relevant change to the linked example is here!
legacy_init_op=tf.saved_model.main_op.main_op()
)
Chú ý: Nếu bạn đang sử dụng các thư viện cấp cao (như tf.estimator
) này nên là mặc định, và nếu bạn cần chỉ định các hành động khởi tạo bổ sung, bạn có thể chỉ định chúng như là một phần của đối tượng tf.train.Scaffold
mà bạn chuyển đến tf.estimator.EstimatorSpec
trong model_fn của mình.
Nguồn
2017-05-31 00:29:47