相关疑难解决方法(0)

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
查看次数

如何在脚本中加载tflite模型?

我已经使用bazel.pbtflite文件转换为文件。现在,我想在我的python脚本中加载此模型,只是为了测试天气是否为我提供了正确的输出?tflite

python tensorflow tensorflow-lite

7
推荐指数
2
解决办法
6726
查看次数

如何将 TensorFlow 模型导出为 .tflite 文件?

背景资料:

我编写了一个非常类似于TensorFlow 提供的预制虹膜分类模型的 TensorFlow模型。差异相对较小:

  • 我正在对足球运动进行分类,而不是虹膜种类。
  • 我有 10 个特征和一个标签,而不是 4 个特征和一个标签。
  • 我有 5 种不同的练习,而不是 3 种鸢尾花。
  • 我的 trainData 包含大约 3500 行,而不仅仅是 120。
  • 我的 testData 包含大约 330 行,而不仅仅是 30。
  • 我正在使用 n_classes=6 而不是 3 的 DNN 分类器。

我现在想将模型导出为.tflite文件。但根据TensorFlow 开发人员指南,我需要先将模型导出到tf.GraphDef文件,然后将其冻结,然后才能进行转换。但是, TensorFlow 提供的从自定义模型创建文件的教程.pb似乎仅针对图像分类模型进行了优化。

题:

那么如何将像虹膜分类示例模型这样的模型转换成.tflite文件呢?有没有更简单、更直接的方法来做到这一点,而不必将其导出到.pb文件,然后将其冻结等等?基于虹膜分类代码的示例或指向更明确教程的链接将非常有用!


其他信息:

  • 操作系统:macOS 10.13.4 High Sierra
  • TensorFlow 版本:1.8.0
  • Python 版本:3.6.4
  • 使用 PyCharm 社区 2018.1.3

代码:

输入以下命令可以克隆虹膜分类代码:

git clone https://github.com/tensorflow/models

但如果你不想下载整个包,这里是:

这是名为的分类器文件premade_estimator.py

    # …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pycharm tensorflow tensorflow-lite

6
推荐指数
1
解决办法
1万
查看次数