小编Jor*_*nez的帖子

如何测试.tflite模型以证明其行为与使用相同测试数据的原始模型相同?

我已经根据训练过的模型生成了一个.tflite模型,我想测试一下tfilte模型给出与原始模型相同的结果.

给出相同的测试数据并获得相同的结果.

python tensorflow tensorflow-lite

18
推荐指数
1
解决办法
8500
查看次数

tensorflow lite模型与python模型相比给出了非常不同的准确度值

我正在使用tensorflow 1.10 Python 3.6

我的代码基于TensorFlow提供的预制虹膜分类模型.这意味着,我使用的是Tensorflow DNN预制分类器,具有以下区别:

  • 10个功能代替4.
  • 5个班而不是3个.

测试和培训文件可以从以下链接下载:https: //www.dropbox.com/sh/nmu8i2i8xe6hvfq/AADQEOIHH8e-kUHQf8zmmDMDa?dl=0

我已经制作了一个代码来将这个分类器导出为tflite格式,但是python模型的精度高于75%但是在导出时精度会降低大约45%,这意味着大约30%的精度会丢失(这太多了) .我已经尝试了使用不同数据集的代码,并且在所有这些代码中导出后的准确性降低了很多!这让我觉得TocoConverter函数出了问题,或者我输出错误,缺少参数或类似的东西.

这是我生成模型的方式:

classifier = tf.estimator.DNNClassifier(
        feature_columns=my_feature_columns,
        hidden_units=[100, 500],
        optimizer=tf.train.AdagradOptimizer(learning_rate=0.003),
        n_classes=num_labels,
        model_dir="myModel")
Run Code Online (Sandbox Code Playgroud)

这是我用来转换为tflite的功能:

converter = tf.contrib.lite.TocoConverter.from_frozen_graph(final_model_path, input_arrays, output_arrays, input_shapes={"dnn/input_from_feature_columns/input_layer/concat": [1, 10]})
        tflite_model = converter.convert()
Run Code Online (Sandbox Code Playgroud)

我分享了完整的代码,我还计算了生成的.tflite文件的准确性.

import argparse
import tensorflow as tf

import pandas as pd
import csv

from tensorflow.python.tools import freeze_graph
from tensorflow.python.tools import optimize_for_inference_lib
import numpy as np


parser = argparse.ArgumentParser()
parser.add_argument('--batch_size', default=100, type=int, help='batch size')
parser.add_argument('--train_steps', default=1000, type=int,
                    help='number of training steps')

features_global = …
Run Code Online (Sandbox Code Playgroud)

python python-3.x tensorflow tensorflow-lite

16
推荐指数
1
解决办法
1112
查看次数

我如何将 tensorflow 2.0 估算器模型转换为 tensorflow lite?

下面的代码生成了常规的 tensorflow 模型,但是当我尝试将其转换为 tensorflow lite 时它不起作用,我遵循了以下文档。

https://www.tensorflow.org/tutorials/estimator/linear 1 https://www.tensorflow.org/lite/guide/get_started

export_dir = "tmp"
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec(feat_cols))

estimator.export_saved_model(export_dir, serving_input_fn)

# Convert the model.
converter = tf.lite.TFLiteConverter.from_saved_model("tmp/1571728920/saved_model.pb")
tflite_model = converter.convert()
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "C:/Users/Dacorie Smith/PycharmProjects/JamaicaClassOneNotifableModels/ClassOneModels.py", line 208, in <module>
    tflite_model = converter.convert()
  File "C:\Users\Dacorie Smith\PycharmProjects\JamaicaClassOneNotifableModels\venv\lib\site-packages\tensorflow_core\lite\python\lite.py", line 400, in convert
    raise ValueError("This converter can only convert a single "
ValueError: This converter can only convert a single ConcreteFunction. Converting multiple functions is under development.
Run Code Online (Sandbox Code Playgroud)

文档摘录

TensorFlow Lite 转换器 TensorFlow …

python android tensorflow tensorflow-lite tensorflow-estimator

5
推荐指数
1
解决办法
1694
查看次数