您的位置:首页 > 其它

keras中的优化算法

2015-06-01 19:50 351 查看
使用优化器

优化参数是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 .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  keras-优化