首页 > 解决方案 > 如何在训练 TensorFlow Lite 模型时删除数据集中可能导致错误的元素

问题描述

我正在尝试使用 TensorFlow Lite 训练一个简单的图像分类模型。我正在按照这个文档编写我的代码。如文档中所述,为了训练我的模型,我编写了model = image_classifier.create(train_data, model_spec=model_spec.get('mobilenet_v2'), validation_data=validation_data). 然而,经过几秒钟的训练,我得到了一个InvalidArgumentError. 我相信错误是由于我的数据集中的某些东西造成的,但是手动从数据集中消除所有错误来源太困难了,因为它由数千张图像组成。经过一番研究,我找到了一个潜在的解决方案——我可以使用tf.data.experimental.ignore_errors它“生成一个包含与输入相同元素的数据集,但默默地删除任何导致错误的元素”。但是,从文档中(这里) 我不知道如何将此转换功能与我的代码集成。如果我dataset = dataset.apply(tf.data.experimental.ignore_errors())在训练模型之前放置线,系统不知道要删除哪些元素。如果我把这条线放在后面,系统永远不会到达这条线,因为训练中会出现错误。此外,系统会给出错误消息AttributeError: 'ImageClassifierDataLoader' object has no attribute 'apply'。如果有人能告诉我如何tf.data.experimental.ignore_errors()与我的模型或我面临的问题的可能替代方案集成,我将不胜感激。

标签: tensorflow

解决方案


嗨,如果您完全遵循文档,那么 tf.data.experimental.ignore_errors您将无法使用,因为您没有使用 tf.data 加载数据,您很可能正在使用from tflite_model_maker.image_classifier import DataLoader.

注意:请提及完整的代码片段以帮助您解决问题


推荐阅读