为什么 keras 模型可以编译但 fit_generator 命令会抛出“模型未编译运行时错误”?

我已经在带有张量流后端的 keras 中设置了一个带有 K 折交叉验证的自定义 CNN。在开始训练之前会调用 model.compile() 函数,但调用 model.fit_generator() 函数会导致运行时错误:“您必须先编译模型,然后才能使用它。”


我使用 ImageDataGenerator 进行数据增强并使用 fit_generator 函数进行训练。


到目前为止,我发现的唯一相关问题与 tensorflow急切执行功能有关,该功能似乎未在 Keras中启用。


这是代码:


模型定义:


model = Sequential()

model.add(Conv2D(24, (5, 5), 

          strides=(1, 1), 

          padding="valid", 

          data_format="channels_last",

          activation='relu', 

          use_bias=True,

          ))#out=96

model.add(Dropout(.25))

model.add(MaxPooling2D(pool_size=(2, 2)))#out=48

model.add(Conv2D(32, (3, 3), 

          strides=(1, 1), 

          padding="valid", 

          data_format="channels_last",

          activation='relu', 

          use_bias=True,

          ))#out=46

model.add(MaxPooling2D(pool_size=(2, 2)))#out=23

model.add(Conv2D(48, (3, 3), 

          strides=(1, 1), 

          padding="valid", 

          data_format="channels_last",

          activation='relu', 

          use_bias=True,

          ))#out=21

model.add(MaxPooling2D(pool_size=(2, 2)))#padding???

model.add(Flatten())

model.add(Dense(3, activation='softmax'))

...这里将是数据初始化...


设置 ImageGenerator:


datagen_training = ImageDataGenerator(

            rotation_range = 20,

            width_shift_range = 0.3,

            height_shift_range=0.3,

            zoom_range=0.2,

            fill_mode = "constant",

            cval = 0,

            vertical_flip = True,

            validation_split = 0.2

            )

datagen_training.fit(data)



沧海一幻觉
浏览 187回答 1
1回答

12345678_0001

模型没有编译,因为它没有被构建,它没有被构建,因为input_shape它没有在第一层中指定。我不确定你的数据的输入形状,但是你的第一层这样的东西会让模型编译:model = Sequential()model.add(Conv2D(24, (5, 5),       strides=(1, 1),       padding="valid",       data_format="channels_last",      activation='relu',       use_bias=True,      input_shape=(100,100,1)      ))#out=96
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python