天天看点

keras模型训练报错: AttributeError: 'list' object has no attribute 'set_model'

错误信息:

AttributeError: ‘list’ object has no attribute ‘set_model’

根据错误提示:错误代码位于如下

model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs,
                    callbacks=[checkpoint,callbacks],
                    validation_data=(X_valid, y_valid), verbose=1)
 
 这两个回调函数的定义分别如下:callbacks, checkpoint。

 http_client = Server(jsonrpcMlClientPoint)
# 训练可视化,返回val_acc, val_loss, train_acc, train_loss
callbacks = [TrainingMonitor(http_client=http_client, model_id=modelId, model_userid=model_userid,
                             model_version=model_version, ams_id=ams_id)]

# checkpoint
if not os.path.exists(save_dir):
    os.makedirs(save_dir)
namepath = "trained_best_weights.h5"
filepath = os.path.join(save_dir, namepath)
print('current file path is : ', filepath)
checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True,
                             save_weights_only=False, mode='auto', period=1)
           

经过排查,去掉第一个callbacks 定义时包裹在外边的中括号就行了。

这是由于之前的代码里只有一个回调函数,所以直接在外边定义了一个list传入。

原因是callbcks的参数本身就是一个list列表。

继续阅读