def _no_trainable_variable_attribute(self, trainable): """A SavedModel where the VariableDef has no 'trainable' (it's false).""" class _MissingFieldsVariable(resource_variable_ops.ResourceVariable): def to_proto(self, export_scope=None): full_proto = super(_MissingFieldsVariable, self).to_proto(export_scope) return variable_pb2.VariableDef( variable_name=full_proto.variable_name, initial_value_name=full_proto.initial_value_name, initializer_name=full_proto.snapshot_name, save_slice_info_def=full_proto.save_slice_info_def, is_resource=full_proto.is_resource) export_graph = ops.Graph() with export_graph.as_default(): v = _MissingFieldsVariable(3., trainable=trainable) with session_lib.Session() as session: session.run([v.initializer]) path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) b = builder_impl.SavedModelBuilder(path) b.add_meta_graph_and_variables(session, tags=[tag_constants.SERVING], signature_def_map={}) b.save() return path
def _v1_multi_input_saved_model(self): export_graph = ops.Graph() with export_graph.as_default(): input1 = array_ops.placeholder(shape=[None], dtype=dtypes.float32, name="input1") input2 = array_ops.placeholder(shape=[None], dtype=dtypes.float32, name="input2") v = resource_variable_ops.ResourceVariable(21.) output = array_ops.identity(input1 * v + input2, name="output") with session_lib.Session() as session: session.run(v.initializer) path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) builder = builder_impl.SavedModelBuilder(path) builder.add_meta_graph_and_variables( session, tags=[tag_constants.SERVING], signature_def_map={ "serving_default": signature_def_utils.build_signature_def( { "input1": utils_impl.build_tensor_info(input1), "input2": utils_impl.build_tensor_info(input2) }, {"output": utils_impl.build_tensor_info(output)}) }) builder.save() return path
def _v1_multi_metagraph_saved_model(self): export_graph = ops.Graph() with export_graph.as_default(): start = array_ops.placeholder( shape=[None], dtype=dtypes.float32, name="start") v = resource_variable_ops.ResourceVariable(21.) first_output = array_ops.identity(start * v, name="first_output") second_output = array_ops.identity(v, name="second_output") with session_lib.Session() as session: session.run(v.initializer) path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) builder = builder_impl.SavedModelBuilder(path) builder.add_meta_graph_and_variables( session, tags=["first"], signature_def_map={ "first_key": signature_def_utils.build_signature_def( {"first_start": utils_impl.build_tensor_info(start)}, {"first_output": utils_impl.build_tensor_info( first_output)})}) builder.add_meta_graph( tags=["second"], signature_def_map={ "second_key": signature_def_utils.build_signature_def( {"second_start": utils_impl.build_tensor_info(start)}, {"second_output": utils_impl.build_tensor_info( second_output)})}) builder.save() return path
def _no_signatures_model(self): export_graph = ops.Graph() with export_graph.as_default(): inp = array_ops.placeholder(name="x", shape=[], dtype=dtypes.float32) array_ops.identity(inp + 1., name="out") with session_lib.Session() as session: path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) b = builder_impl.SavedModelBuilder(path) b.add_meta_graph_and_variables( session, tags=[tag_constants.SERVING], signature_def_map={}, assets_collection=ops.get_collection(ops.GraphKeys.ASSET_FILEPATHS)) b.save() return path
def _export_variable(self, **kwargs_for_variable): """A 1.x SavedModel with a single variable.""" export_graph = ops.Graph() with export_graph.as_default(): v = resource_variable_ops.ResourceVariable(3., **kwargs_for_variable) with session_lib.Session() as session: session.run([v.initializer]) path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) b = builder_impl.SavedModelBuilder(path) b.add_meta_graph_and_variables( session, tags=[tag_constants.SERVING], signature_def_map={}) b.save() return path
def _unfed_placeholder_signature(self): export_graph = ops.Graph() with export_graph.as_default(): x = array_ops.placeholder(name="x", shape=[], dtype=dtypes.float32) output = x * random_ops.random_normal([2]) with session_lib.Session() as session: path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) b = builder_impl.SavedModelBuilder(path) b.add_meta_graph_and_variables( session, tags=[tag_constants.SERVING], signature_def_map={ "key": signature_def_utils.build_signature_def( {}, dict(value=utils_impl.build_tensor_info(output)))}) b.save() return path
def _v1_output_shape_saved_model(self): export_graph = ops.Graph() with export_graph.as_default(): start = array_ops.placeholder( shape=[None], dtype=dtypes.float32, name="start") output = array_ops.identity(start, name="output") output.set_shape([1]) # Ok to use [1] because shape is only informational with session_lib.Session() as session: path = os.path.join(self.get_temp_dir(), "saved_model", str(ops.uid())) builder = builder_impl.SavedModelBuilder(path) builder.add_meta_graph_and_variables( session, tags=[tag_constants.SERVING], signature_def_map={ "serving_default": signature_def_utils.build_signature_def( {"start": utils_impl.build_tensor_info(start)}, {"output": utils_impl.build_tensor_info(output)}) }) builder.save() return path