keras_8_优化器 Optimizers

1. 优化器的使用

  1. 优化器(optimizer)是编译Keras模型的所需的两个参数之一:

    from keras import optimizers
    
    model = Sequential()
    model.add(Dense(64, kernel_initializer='uniform', input_shape=(10,)))
    model.add(Activation('tanh'))
    model.add(Activation('softmax'))
    
    # 你可以先实例化一个优化器对象,然后将它传入model.compile()
    sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
    model.compile(loss='mean_squared_error', optimizer=sgd)
    
    # 或者你可以通过名称来调用优化器。在后一种情况下,将使用优化器的默认参数。
    # 传入优化器名称: 默认参数将被采用
    model.compile(loss='mean_squared_error', optimizer='sgd')

2. Keras优化器的公共参数

  • 参数clipnormclipvalue能在所有的优化器中使用,用于控制梯度裁剪(Gradient Clipping):

    # Gradient Clipping可以理解为:gradient过大时把它降一点,比如取其一半;梯度过小时把它放大一点,比如取其1.5倍
    
    from keras import optimizers
    # 所有参数梯度将被裁剪,让其l2范数最大为1:g * 1 / max(1, l2_norm)
    sgd = optimizers.SGD(lr=0.01, clipnorm=1.)
    
    from keras import optimizers
    # 所有参数d 梯度将被裁剪到数值范围内:
    # 最大值0.5
    # 最小值-0.5
    sgd = optimizers.SGD(lr=0.01, clipvalue=0.5)

3. keras支持的Optimizers

  1. SGD
    • 随机梯度下降优化器。包含扩展功能的支持: - 动量(momentum)优化, - 学习率衰减(每次参数更新后) - Nestrov动量(NAG)优化
  2. RMSprop
    • RMSProp优化器。建议使用优化器的默认参数 (除了学习率lr,它可以被自由调节)。这个优化器通常是训练循环神经网络RNN的不错选择。
  3. Adagrad
    • Adagrad优化器。Adagrad是一种具有特定参数学习率的优化器,它根据参数在训练期间的更新频率进行自适应调整。 参数接收的更新越多,更新越小。建议使用优化器的默认参数。
  4. Adadelta
    • Adadelta优化器。Adadelta是Adagrad的一个具有更强鲁棒性的的扩展版本,它不是累积所有过去的梯度,而是根据渐变更新的移动窗口调整学习速率。 这样,即使进行了许多更新,Adadelta仍在继续习。与Adagrad相比,在Adadelta的原始版本中,您无需设置初始学习率。 在此版本中,与大多数其他Keras优化器一样,可以设置初始学习速率和衰减因子。建议使用优化器的默认参数。
  5. Adam(cs231n推荐用这个)
    • Adam优化器。默认参数遵循原论文中提供的值。
  6. Adamax
    • Adamax优化器,来自Adam论文的第七小节。它是Adam算法基于无穷范数(infinity norm)的变种。 默认参数遵循论文中提供的值。
  7. Nadam
    • Nesterov版本Adam优化器。正像Adam本质上是RMSProp与动量momentum的结合, Nadam是采用Nesterov momentum版本的Adam优化器。默认参数遵循论文中提供的值。 建议使用优化器的默认参数。

4. TFOptimizer

  • 原生Tensorlfow优化器的包装类(wrapper class)。

转载于:https://www.cnblogs.com/LS1314/p/10380634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值