为了账号安全,请及时绑定邮箱和手机立即绑定

keras 回调列表生成错误:“元组”对象没有属性“set_model”

keras 回调列表生成错误:“元组”对象没有属性“set_model”

慕莱坞森 2022-06-02 16:25:57
我正在编写一个 keras 模型,我想在其中使用一些内置的 keras 回调,但是我可能在某个我无法发现的地方犯了语法错误。给我带来麻烦的代码如下:from keras.callbacks import EarlyStopping, ModelCheckpoint, TensorBoard......es = EarlyStopping(monitor='val_loss', min_delta=0.01, verbose=1, patience=5)tb = TensorBoard(log_dir=logdir, write_graph=True, write_images=True, histogram_freq=0)mc = ModelCheckpoint(filepath=filepath, save_best_only=True, monitor='val_loss', mode='min')history = model.fit(X_train, y_train,                    batch_size=batch_size,                    epochs=n_epochs,                    verbose=1,                    validation_split=0.3,                    callbacks=[es, tb, mc])但是这样做我得到了错误'tuple' object has no attribute 'set_model'。参考这个另一个问题,问题似乎是由es, tb每个 sé 已经是元组的事实产生的,因此将它们定位到一个列表中(在 call 中callbacks=[es, tb, mc])会引发错误。实际上print(type(es))print(type(tb))print(type(mc))<class 'tuple'><class 'tuple'><class 'keras.callbacks.ModelCheckpoint'>这就是说,我不明白如何解决它。EarlyStopping并TensorBoard返回元组,它们应该如何在 keras 回调列表中调用?
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

解包你的元组——在这种情况下,它很简单:(object,)[0] == object——但一般来说,你可能有(object1, object2),等等,你可以通过callbacks=[*es, *tb, *mc].


解* 包迭代- 作为演示:


def print_unpacked(*positional_args):

    print(positional_args)

    print(*positional_args)

a = 1

b = ('dog',5)

print_unpacked(a,b)

# >> (1, ('dog',5))

# >> 1 ('dog',5)

print(a,b)

# >> 1 ('dog',5)

print(a,*b)

# >> 1 'dog' 5


查看完整回答
反对 回复 2022-06-02
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您应该删除上面发布的代码中以下行末尾的逗号


es = EarlyStopping(monitor='val_loss', min_delta=0.01, verbose=1, patience=5),

tb = TensorBoard(log_dir=logdir, write_graph=True, write_images=True, histogram_freq=0),



查看完整回答
反对 回复 2022-06-02
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信