TypeError: “NoneType” object is not callable in Google Colab

TypeError: “NoneType” object is not callable in Google Colab

我正在尝试使用 Keras 和 TensorFlow 训练我的模型。

出现错误的代码。

def build_model():

# define the model, use pre-trained weights for image_net 
  base_model = InceptionV3(input_shape=(resized_height, resized_width, num_channel), weights='imagenet', include_top=False, pooling='avg')

  x = base_model.output
  # x = Dense(100, activation='relu')(x)
  # predictions = Dense(6, activation='sigmoid', name='final_classifier')(x)
  # model = Model(inputs = base_model.input, outputs= predictions)

  model = Sequential()
  # # model.add(LSTM(1024, return_sequences=False, kernel_initializer='he_normal', dropout=0.15, recurrent_dropout=0.15, implementation=2))
  model = Sequential()
  model.add(Dense(1024, activation='relu', input_shape=(51200,)))(x)
  model.add(Dropout(0.5))
  model.add(Dense(512, activation='relu'))(x)
  model.add(Dropout(0.5))
  model.add(Dense(256, activation='relu'))(x)
  model.add(Dropout(0.5))
  model.add(Dense(128, activation='relu'))(x)
  model.add(Dropout(0.5))
  model.add(Dense(64, activation='relu'))(x)
  model.add(Dropout(0.5))
  model.add(Dense(6, activation='softmax', name='final_classifier'))(x)
  
  return model

构建并运行模型

model = build_model()
model_checkpoint = ModelCheckpoint(weight_file, monitor='val_loss', save_weights_only=False, save_best_only=True)

num_workers = 2

model.compile(optimizer=Adam(lr=initial_lr), loss='categorical_crossentropy', metrics=['accuracy'])

callbacks = [model_checkpoint, reduce_lr_on_plateau, tensor_board]

labels = labels_all
partition = partition_dict

model.fit_generator(generator=DataGenSequence(labels, partition['train'], current_state='train'),
                    steps_per_epoch=100,
                    epochs = 200,
                    verbose=1,
                    workers = num_workers,
                    callbacks=callbacks,
                    shuffle=False,
                    # maz_queue_size=32,
                    validation_data=DataGenSequence(labels, partition['valid'], current_state='validation'),
                    validation_steps=5
                    )

错误

注意:我遇到了这个错误,我无法解决它并高级感谢谁正在尝试解决它并且在这里评论分享答案

Sequentail().add() 没有 return 值,或者如果用 Python 说话:return None 是 [=20 类型的对象=]类型。因此,当您这样调用时: Sequential().add()(x) 您是从 class Sequential 调用方法 .add() 然后您尝试调用它的 return 值。这不起作用,因为 return 值不是函数,而是来自 NoneType.

None

请将代码更改为

def build_model():

# define the model, use pre-trained weights for image_net 
  base_model = InceptionV3(input_shape=(resized_height, resized_width, num_channel), weights='imagenet', include_top=False, pooling='avg')

  #x = base_model.output
  # x = Dense(100, activation='relu')(x)
  # predictions = Dense(6, activation='sigmoid', name='final_classifier')(x)
  # model = Model(inputs = base_model.input, outputs= predictions)

  #model = Sequential()
  # # model.add(LSTM(1024, return_sequences=False, kernel_initializer='he_normal', dropout=0.15, recurrent_dropout=0.15, implementation=2))
  model = Sequential()
  model.add(base_model)
  model.add(Flatten())
  model.add(Dense(1024, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(512, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(256, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(128, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(64, activation='relu'))
  model.add(Dropout(0.5))
  model.add(Dense(6, activation='softmax', name='final_classifier'))
  
  return model  

因为你不能在顺序对象上传递 x