【问题标题】:How to create a model easily convertible to TensorFlow Lite?如何创建可轻松转换为 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 运算符的模型?

【问题讨论】:

    标签: tensorflow tensorflow2.0 tensorflow-lite


    【解决方案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 项目。

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2020-12-03
      相关资源
      最近更新 更多