Python Can';t在Keras的ImageDataGenerator中使用预处理_输入作为预处理_函数

Python Can';t在Keras的ImageDataGenerator中使用预处理_输入作为预处理_函数,python,keras,Python,Keras,当试图提供从CNN软件包(例如keras.applications.resnet)导入的预处理输入时,模型在试图适应生成的数据时会引发错误: “JpegImageFile”对象不可订阅 代码: Keras版本:2.1.5通过将Keras降级到2.1.4来解决问题: pip uninstall keras pip install keras==2.1.4 或者使用Lambda层添加预处理作为模型的第一步: model.add(keras.layers.Lambda(preprocess_inpu

当试图提供从CNN软件包(例如keras.applications.resnet)导入的预处理输入时,模型在试图适应生成的数据时会引发错误:

“JpegImageFile”对象不可订阅

代码:


Keras版本:2.1.5

通过将Keras降级到2.1.4来解决问题:

pip uninstall keras
pip install keras==2.1.4
或者使用Lambda层添加预处理作为模型的第一步:

model.add(keras.layers.Lambda(preprocess_input, name='preprocessing', input_shape=(224, 224, 3)))

通过将Keras降级至2.1.4来解决此问题:

pip uninstall keras
pip install keras==2.1.4
或者使用Lambda层添加预处理作为模型的第一步:

model.add(keras.layers.Lambda(preprocess_input, name='preprocessing', input_shape=(224, 224, 3)))

如果问题完全是由使用预处理引起的(并且您仍然可以在不进行预处理的情况下使用
ImageDataGenerator
),还可以创建包装生成器:

def wrapperGenerator(dataGenerator, preprocess):
    while True:
        x, y = next(dataGenerator)
        x = preprocess(x)
        yield(x,y)

如果问题完全是由使用预处理引起的(并且您仍然可以在不进行预处理的情况下使用
ImageDataGenerator
),还可以创建包装生成器:

def wrapperGenerator(dataGenerator, preprocess):
    while True:
        x, y = next(dataGenerator)
        x = preprocess(x)
        yield(x,y)

我在考虑这个解决方案,但不确定它是否会被Keras适当地并行化。谢谢你的建议!隐马尔可夫模型。。。。然后一个更复杂的方法是实现一个定制的
keras.utils.Sequence
。我考虑过这个解决方案,但不确定它是否会被keras正确地并行化。谢谢你的建议!隐马尔可夫模型。。。。然后一个更复杂的方法是实现一个定制的
keras.utils.Sequence