如何创建可轻松转换为 TensorFlow Lite 的模型?

Posted

技术标签:

【中文标题】如何创建可轻松转换为 TensorFlow Lite 的模型?【英文标题】:How to create a model easily convertible to TensorFlow Lite? 【发布时间】:2020-06-22 15:47:41 【问题描述】:

如何创建可以转换为 TensorFlow Lite (tflite) 并可以在 android 应用中使用的 TensorFlow 模型?

按照 Google ML Crash Course 中的示例,我创建了一个分类器并训练了一个模型。我已将模型导出为保存的模型。我想将模型转换为 .tflite 文件并使用它来在 Android 上进行推断

很快(实际上是稍后)我知道我的模型使用unsupported operation - ParseExampleV2

这是我用于训练模型的分类器:

classifier = tf.estimator.DNNClassifier(
        feature_columns=[tf.feature_column.numeric_column('pixels', shape=WIDTH * HEIGHT)],
        n_classes=NUMBER_OF_CLASSES,
        hidden_units=[40, 40],
        optimizer=my_optimizer,
        config=tf.estimator.RunConfig(keep_checkpoint_max=1),
        model_dir=MODEL_DIR)

有没有办法训练一个不使用tf.ParseExampleV2 运算符的模型?

【问题讨论】:

【参考方案1】:

使用Keras Sequential API 而不是Estimator API。

如果您的模型更复杂,请尝试Keras functional API。

Estimator 是一个高级 API,它增加了模型的复杂性。

这是一个顺序模型:

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1024, input_dim=WIDTH*HEIGHT, activation='relu'))
model.add(tf.keras.layers.Dense(1024, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

optimizer = tf.keras.optimizers.Adam(learning_rate=rate)
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy'])

及其架构。将其与问题中的进行比较:

有关如何将模型转换为 tflite 的完整示例,请参阅我的 classifying slashed-zeros and eights 项目。

【讨论】:

以上是关于如何创建可轻松转换为 TensorFlow Lite 的模型?的主要内容,如果未能解决你的问题,请参考以下文章

带你轻松使用 TensorFlow 创建大型线性模型

TensorFlow简单使用(基础篇)

如何将 HED 模型转换为 Tensorflow Lite 模型

TensorFlow:创建混淆矩阵时无法将图像转换为浮点数

如何轻松将旧式分区表转换为新式分区表

如何将 CoreML 模型转换为 TensorFlow 模型?