使用CNN进行图像分类。当调用model.fit()
时,它开始训练模型一段时间,并在执行过程中中断并返回错误消息。
错误信息如下
InvalidArgumentError: 2 root error(s) found.
(0) Invalid argument: Input size should match (header_size + row_size * abs_height) but they differ by 2
[[{{node decode_image/DecodeImage}}]]
[[IteratorGetNext]]
[[IteratorGetNext/_4]]
(1) Invalid argument: Input size should match (header_size + row_size * abs_height) but they differ by 2
[[{{node decode_image/DecodeImage}}]]
[[IteratorGetNext]]
0 successful operations.
0 derived errors ignored. [Op:__inference_train_function_8873]
Function call stack:
train_function -> train_function
**更新:**我的建议是检查数据集的元数据,这有助于修复我的问题。
3条答案
按热度按时间fdbelqdn1#
当我尝试 * 从另一台相机 * 添加新照片到我的训练数据集时,我偶然发现了这个错误。
在阅读了评论和对“元数据”的大惊小怪之后,我想到了实际检查数据集中每一张照片的元数据。
在我的例子中,我必须确保我的照片的元数据是一致的,没有额外或更少的字段。
通常情况下,我在训练之前BulkResize(在线工具)我的图像,似乎我忘记了调整新图像的大小。这个在线工具似乎覆盖了图像的元数据,从而使每个调整大小的照片的元数据统一。
在确保所有照片的元数据一致后,错误消失了。
PS:这只是在我的情况下.但这是一个标志,你可以开始与你的元数据.我只是有以下:
希望你们都能找到这个。训练愉快!
dpiehjr42#
你不必指定参数
label_mode
。为了使用SparseCategoricalCrossentropy
作为损失函数,你需要将其设置为int
。如果你不指定它,那么它将按照文档设置为None
。您还需要根据从中读取图像的目录的结构将参数
labels
指定为inferred
。l0oc07j23#
我刚刚在另一个帖子中回答了一个非常相似的问题。事实上,潜在的问题可能是完全相同的。它包含了一个详细的解释,至少在我的情况下是怎么回事。长话短说,我被证明是正确的一个可能的原因是损坏的JPEG文件。