我正在使用tensorflow 1.10 Python 3.6
我的代码基于TensorFlow提供的预制虹膜分类模型.这意味着,我使用的是Tensorflow DNN预制分类器,具有以下区别:
测试和培训文件可以从以下链接下载: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) 我已经使用bazel.pb将tflite文件转换为文件。现在,我想在我的python脚本中加载此模型,只是为了测试天气是否为我提供了正确的输出?tflite
背景资料:
我编写了一个非常类似于TensorFlow 提供的预制虹膜分类模型的 TensorFlow模型。差异相对较小:
我现在想将模型导出为.tflite文件。但根据TensorFlow 开发人员指南,我需要先将模型导出到tf.GraphDef文件,然后将其冻结,然后才能进行转换。但是, TensorFlow 提供的从自定义模型创建文件的教程.pb似乎仅针对图像分类模型进行了优化。
题:
那么如何将像虹膜分类示例模型这样的模型转换成.tflite文件呢?有没有更简单、更直接的方法来做到这一点,而不必将其导出到.pb文件,然后将其冻结等等?基于虹膜分类代码的示例或指向更明确教程的链接将非常有用!
其他信息:
代码:
输入以下命令可以克隆虹膜分类代码:
git clone https://github.com/tensorflow/models
但如果你不想下载整个包,这里是:
这是名为的分类器文件premade_estimator.py:
# …Run Code Online (Sandbox Code Playgroud)