Android: 生成安卓可使用的Tflite文件

一:把keras模型转换为tensorflow模型

     H5-to-pb文件,H5模型必须同时包含模型结构和结构参数,

    参考文章 忘记了

    def h5_to_pb(self,h5_model, output_dir, model_name, out_prefix="output_", log_tensorboard=True):
        """.h5模型文件转换成pb模型文件
        Argument:
            h5_model: str
                .h5模型文件
            output_dir: str
                pb模型文件保存路径
            model_name: str
                pb模型文件名称
            out_prefix: str
                根据训练,需要修改
            log_tensorboard: bool
                是否生成日志文件
        Return:
            pb模型文件
        """
        if os.path.exists(output_dir) == False:
            os.mkdir(output_dir)
        out_nodes = []
        for i in range(len(h5_model.outputs)):
            out_nodes.append(out_prefix + str(i + 1))
            tf.identity(h5_model.output[i], out_prefix + str(i + 1))
        sess = backend.get_session()

        from tensorflow.python.framework import graph_util, graph_io
        # 写入pb模型文件
        init_graph = sess.graph.as_graph_def()
        main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)
        graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)
        # 输出日志文件
        if log_tensorboard:
            from tensorflow.python.tools import import_pb_to_tensorboard
            import_pb_to_tensorboard.import_to_tensorboard(os.path.join(output_dir, model_name), output_dir)

  结果:生成一个frozen模型

 

二.把pb模型转化为Tflite模型

文链:Google官方文档;

Multiple output arrays

The flag output_arrays takes in a comma-separated list of output arrays as seen in the example below. This is useful for models or subgraphs with multiple outputs.

curl https://storage.googleapis.com/download.tensorflow.org/models/inception_v1_2016_08_28_frozen.pb.tar.gz \
  | tar xzv -C /tmp
tflite_convert \
  --graph_def_file=/tmp/inception_v1_2016_08_28_frozen.pb \
  --output_file=/tmp/foo.tflite \
  --input_arrays=input \
  --output_arrays=InceptionV1/InceptionV1/Mixed_3b/Branch_1/Conv2d_0a_1x1/Relu,InceptionV1/InceptionV1/Mixed_3b/Branch_2/Conv2d_0a_1x1/Relu

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值