keras中的优化算法

本文介绍了Keras中常用的优化算法,如SGD、Adagrad、Adadelta、RMSprop和Adam。讨论了各个优化器的关键参数,如学习率、动量、衰减项等,并提到了Nesterov动量和自适应学习率方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用优化器
优化参数是keras模型编译参数其中的一个:

model = Sequential()
model.add(Dense(20, 64, init='uniform'))
model.add(Activation('tanh'))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

先建立网络模型,使用SGD优化算法,学习率为0.1,衰减项1e-6,动量0.9,使用nesterov最优梯度优化算法。模型编译第一个参数使用平方误差作为损失函数,优化算法使用sgd。
基类

keras.optimizers.Optimizer(**kwargs)

所有的优化器都来自这个类,支持以下的关键字参数:

clipnorm: float >= 0.

注意:这是集成优化器的基类,并不是用来训练模型的的实际的优化器。以下是几种常见的优化算法。

SGD

keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)

参数:

  • lr: float >= 0. 学习率
  • momentum: float >= 0. 动量参数更新
  • decay: float >= 0. 每次迭代更新学习率衰减项
  • nesterov: boolean. 是否使用Nesterov 动量方法.布尔型

Adagrad

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)

以上参数建议使用默认值。
参数:
- lr: float >= 0. 学习率
- epsilon: float >= 0.

Adadelta

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)

参数:

  • lr: float >= 0. 学习率.一般选择默认值
  • float >= 0.
  • epsilon: float >= 0. 模糊因子
    详细请参考Matthew Zeiler:“Adadelta: an adaptive learning rate method”

RMSprop

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)

参数:

  • lr: float >= 0.学习率
  • rho: float >= 0
  • epsilon: float >= 0.

Adam

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8, kappa=1-1e-8)

Kingma and Lei Ba提出的Adam优化器 Adam: A Method For Stochastic Optimization.
这篇文章中会给出默认的参数值,这里kappa替代原文中的lambda。
参数:

  • lr: float >= 0. 学习率
  • beta_1, beta_2: floats, 0 < beta < 1. 一般接近于1.
  • epsilon: float >= 0.
  • kappa: float 0 < kappa < 1. 原文中的Lambda .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值