Esempio n. 1
0
def convert_to_saved_model(model: BaseModel,
                           model_path: str,
                           version: str = None,
                           inputs: Optional[Dict] = None,
                           outputs: Optional[Dict] = None):
    """
    Export model for tensorflow serving
    Args:
        model: Target model
        model_path: The path to which the SavedModel will be stored.
        version: The model version code, default timestamp
        inputs: dict mapping string input names to tensors. These are added
            to the SignatureDef as the inputs.
        outputs:  dict mapping string output names to tensors. These are added
            to the SignatureDef as the outputs.
    """
    pathlib.Path(model_path).mkdir(exist_ok=True, parents=True)
    if version is None:
        version = round(time.time())
    export_path = os.path.join(model_path, str(version))

    if inputs is None:
        inputs = {i.name: i for i in model.tf_model.inputs}
    if outputs is None:
        outputs = {o.name: o for o in model.tf_model.outputs}
    sess = keras.backend.get_session()
    saved_model.simple_save(session=sess,
                            export_dir=export_path,
                            inputs=inputs,
                            outputs=outputs)

    with open(os.path.join(export_path, 'model_info.json'), 'w') as f:
        f.write(json.dumps(model.info(), indent=2, ensure_ascii=True))
        f.close()
 def _createSimpleSavedModel(self, shape):
   """Create a simple savedmodel on the fly."""
   saved_model_dir = os.path.join(self.get_temp_dir(), "simple_savedmodel")
   with session.Session() as sess:
     in_tensor = array_ops.placeholder(shape=shape, dtype=dtypes.float32)
     out_tensor = in_tensor + in_tensor
     inputs = {"x": in_tensor}
     outputs = {"y": out_tensor}
     saved_model.simple_save(sess, saved_model_dir, inputs, outputs)
   return saved_model_dir
 def _createSimpleSavedModel(self, shape):
     """Create a simple savedmodel on the fly."""
     saved_model_dir = os.path.join(self.get_temp_dir(),
                                    "simple_savedmodel")
     with session.Session() as sess:
         in_tensor = array_ops.placeholder(shape=shape,
                                           dtype=dtypes.float32)
         out_tensor = in_tensor + in_tensor
         inputs = {"x": in_tensor}
         outputs = {"y": out_tensor}
         saved_model.simple_save(sess, saved_model_dir, inputs, outputs)
     return saved_model_dir
Esempio n. 4
0
def model_export(model_name):
    export_path = "pb_models/{}/1".format(model_name)
    graph = tf.Graph()
    saver = tf.train.import_meta_graph("./ckpt_models/{}/{}.ckpt.meta".format(
        model_name, model_name),
                                       graph=graph)
    with tf.Session(graph=graph) as sess:
        saver.restore(
            sess,
            tf.train.latest_checkpoint("./ckpt_models/{}".format(model_name)))
        saved_model.simple_save(
            session=sess,
            export_dir=export_path,
            inputs={"t": graph.get_operation_by_name('t').outputs[0]},
            outputs={"z": graph.get_operation_by_name('z').outputs[0]})
Esempio n. 5
0
# -*- coding: utf-8 -*-
import tensorflow as tf
from tensorflow.python import saved_model

export_path = "pb_models/lr/1"

graph = tf.Graph()
saver = tf.train.import_meta_graph("./model/lr.ckpt.meta", graph=graph)
with tf.Session(graph=graph) as sess:
    saver.restore(sess, tf.train.latest_checkpoint("./model"))
    saved_model.simple_save(
        session=sess,
        export_dir=export_path,
        inputs={"x": graph.get_operation_by_name('x').outputs[0]},
        outputs={
            "y_pred":
            graph.get_operation_by_name('inference/y_pred').outputs[0]
        })
'''
> saved_model_cli show --dir 1 --all

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['x'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 3)
        name: x:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['y_pred'] tensor_info:
# -*- coding: utf-8 -*-
# @Time : 2020/11/5 23:10
# @Author : Jclian91
# @File : single_ckpt_2_pb.py
# @Place : Yangpu, Shanghai
import tensorflow as tf
from tensorflow.python import saved_model

export_path = "pb_models/add/1"

graph = tf.Graph()
saver = tf.train.import_meta_graph("./ckpt_models/add/add.ckpt.meta",
                                   graph=graph)
with tf.Session(graph=graph) as sess:
    saver.restore(sess, tf.train.latest_checkpoint("./ckpt_models/add"))
    saved_model.simple_save(
        session=sess,
        export_dir=export_path,
        inputs={"t": graph.get_operation_by_name('t').outputs[0]},
        outputs={"z": graph.get_operation_by_name('z').outputs[0]})