如何创建可轻松转换为 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 的模型?的主要内容,如果未能解决你的问题,请参考以下文章