欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-26 23:19:59
...

错误信息:
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列表。