使用keras可以方便的构造出我们自己的模型,但是由于keras是一种集成度但同时也缺乏一定的灵活性,本文主要介绍keras在构造模型的complie接口几个主要参数,帮大家理解如何根据自己的需求灵活的构造合适的参数
model.compile中有几个主要的参数,其大概如下:
model.compile(loss=[None, total, total, total, total, total, total],
loss_weights=[0, 20, 1, 1, 10, 1000, 600],
optimizer=MyAdam(lr=lr), metrics={'all_loss': total})
1. loss表示训练过程的损失,可以是一个list,注意如果输出是一个多维的,但是loss只有一个话,训练过程会对每一个输出都执行同一个loss函数,如果需要不同的输出执行不同的loss需要多个loss分开
2. loss_weigths:表示每个输出对应的损失的权重
3. optimizer:优化器的类型,我们可以根据需求重写优化器的函数,实现自己的优化器
4. metrics:监控的变量,支持list或者字典,但要注意,如果是list则表示输出的每一个维度都需要经过该函数,比如输出是[a,b],如果metrics是[fn(1),fn(2)],则表示a,b既需要经过fn(1)计算有需要经过fn(2)计算,最终输出的是4个值。
注意:此时在训练过程中输出的值损失包括总的损失和每一个损失函数对应的损失。
在模型存储的时候,我们往往会采用
checkPoint = ModelCheckpoint(filepath=filePath1, monitor="all_loss_total_4", verbose=1,
save_best_only=True, save_weights_only=True,
)
其中monitor表示每一个损失对应的名字,如果输出有多个损失的话需要根据对应的名字选择对应的损失进行监控
本文详细介绍了Keras中模型编译的关键参数,包括损失函数(loss)的使用,如支持多输出损失和权重(loss_weights)的设定,以及自定义优化器(optimizer)的实现。此外,还讲解了监控指标(metrics)的配置,特别是当输出有多个损失时的处理方式。在模型保存时,通过ModelCheckpoint回调函数指定监控的损失名称(monitor),以实现最佳模型的保存。通过理解这些参数,开发者可以更灵活地调整模型以适应不同任务需求。


被折叠的 条评论
为什么被折叠?



