图像增强报错:TypeError: '>'不支持int与ImageDataGenerator实例比较
错误原因及修复方案
问题根源
你触发的TypeError是因为**model.fit_generator()的参数传错了**:fit_generator的第二个参数是steps_per_epoch,要求传入整数(表示每个epoch要运行多少批数据),但你传了augment(ImageDataGenerator实例),代码内部在做数值比较时,就出现了整数和ImageDataGenerator对象无法用>比较的错误。
另外,train已经是通过augment.flow_from_directory()生成的增强后数据流,不需要再把augment传给fit_generator。
修复后的代码
把fit_generator的调用改成下面这样:
# 方案1:直接移除多余的augment参数 history = model.fit_generator(train, validation_data=valid, epochs=25, verbose=2, callbacks=[earlystopping]) # 方案2:可选,显式指定steps_per_epoch(推荐,避免自动计算可能的误差) history = model.fit_generator(train, steps_per_epoch=len(train), validation_data=valid, validation_steps=len(valid), epochs=25, verbose=2, callbacks=[earlystopping])
额外提示
现在Keras(包括TensorFlow Keras)已经推荐使用model.fit()替代fit_generator(),fit()原生支持generator输入,用法更统一:
history = model.fit(train, steps_per_epoch=len(train), validation_data=valid, validation_steps=len(valid), epochs=25, verbose=2, callbacks=[earlystopping])
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

