aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/cc
diff options
context:
space:
mode:
authorGravatar Karmel Allison <karmel@google.com>2018-07-23 16:40:25 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-07-23 16:43:51 -0700
commit7087243b8594faa92b274b92d586cbb2d3b24bfe (patch)
tree35d10514b3f436c1159a532f2f758ec41101a431 /tensorflow/cc
parent806105c2f5c43cee58ab997b1822286bc3f15ad7 (diff)
Automated rollback of commit cf94a46c34f8568608d78b77e9a1c4369ebcafa2
PiperOrigin-RevId: 205746329
Diffstat (limited to 'tensorflow/cc')
-rw-r--r--tensorflow/cc/saved_model/loader.cc39
1 files changed, 31 insertions, 8 deletions
diff --git a/tensorflow/cc/saved_model/loader.cc b/tensorflow/cc/saved_model/loader.cc
index d47b025743..07807ed2f3 100644
--- a/tensorflow/cc/saved_model/loader.cc
+++ b/tensorflow/cc/saved_model/loader.cc
@@ -86,11 +86,10 @@ bool HasMainOp(const MetaGraphDef& meta_graph_def) {
Status RunMainOp(const RunOptions& run_options, const string& export_dir,
const MetaGraphDef& meta_graph_def,
const std::vector<AssetFileDef>& asset_file_defs,
- Session* session, const string& main_op_key) {
- LOG(INFO) << "Running MainOp with key " << main_op_key
- << " on SavedModel bundle.";
+ Session* session) {
+ LOG(INFO) << "Running MainOp on SavedModel bundle.";
const auto& collection_def_map = meta_graph_def.collection_def();
- const auto main_op_it = collection_def_map.find(main_op_key);
+ const auto main_op_it = collection_def_map.find(kSavedModelMainOpKey);
if (main_op_it != collection_def_map.end()) {
if (main_op_it->second.node_list().value_size() != 1) {
return errors::FailedPrecondition(
@@ -142,6 +141,30 @@ Status RunRestore(const RunOptions& run_options, const string& export_dir,
nullptr /* outputs */, &run_metadata);
}
+Status RunLegacyInitOp(const RunOptions& run_options, const string& export_dir,
+ const MetaGraphDef& meta_graph_def,
+ const std::vector<AssetFileDef>& asset_file_defs,
+ Session* session) {
+ LOG(INFO) << "Running LegacyInitOp on SavedModel bundle.";
+ const auto& collection_def_map = meta_graph_def.collection_def();
+ const auto init_op_it = collection_def_map.find(kSavedModelLegacyInitOpKey);
+ if (init_op_it != collection_def_map.end()) {
+ if (init_op_it->second.node_list().value_size() != 1) {
+ return errors::FailedPrecondition(strings::StrCat(
+ "Expected exactly one serving init op in : ", export_dir));
+ }
+ std::vector<std::pair<string, Tensor>> inputs;
+ AddAssetsTensorsToInputs(export_dir, asset_file_defs, &inputs);
+ RunMetadata run_metadata;
+ const StringPiece legacy_init_op_name =
+ init_op_it->second.node_list().value(0);
+ return session->Run(run_options, inputs, {},
+ {legacy_init_op_name.ToString()}, nullptr /* outputs */,
+ &run_metadata);
+ }
+ return Status::OK();
+}
+
Status GetAssetFileDefs(const MetaGraphDef& meta_graph_def,
std::vector<AssetFileDef>* asset_file_defs) {
const auto& collection_def_map = meta_graph_def.collection_def();
@@ -181,11 +204,11 @@ Status LoadSavedModelInternal(const SessionOptions& session_options,
if (HasMainOp(bundle->meta_graph_def)) {
TF_RETURN_IF_ERROR(RunMainOp(run_options, export_dir,
bundle->meta_graph_def, asset_file_defs,
- bundle->session.get(), kSavedModelMainOpKey));
+ bundle->session.get()));
} else {
- TF_RETURN_IF_ERROR(RunMainOp(
- run_options, export_dir, bundle->meta_graph_def, asset_file_defs,
- bundle->session.get(), kSavedModelLegacyInitOpKey));
+ TF_RETURN_IF_ERROR(RunLegacyInitOp(run_options, export_dir,
+ bundle->meta_graph_def, asset_file_defs,
+ bundle->session.get()));
}
return Status::OK();
}