代码之家  ›  专栏  ›  技术社区  ›  Mauro Gentile

与tensorflow优化器等价的Keras

  •  0
  • Mauro Gentile  · 技术社区  · 7 年前

    有点直截了当,除了Tensorflow中的“动量”优化器。

    我最好的猜测是TF中的“动量”是Keras中的SGD。

    如果是,我应该在Keras中设置什么样的默认hyparparameters“lr,momentum,decay,nesterov”来匹配TF中的默认调用“optimizer=momentum”?

    谢谢您!

    network = regression(
    network,
    optimizer='momentum',
    loss='categorical_crossentropy'
    )
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Lescurel    7 年前

    似乎您要翻译的TensorFlow代码使用的是高级API TF learn。

    默认情况下,TF learn中的动量对象初始化为以下值:

    def __init__(self, learning_rate=0.001, momentum=0.9, lr_decay=0.,
                 decay_step=100, staircase=False, use_locking=False,
                 name="Momentum"):
    

    github repo 更多信息。

    要将其翻译成Keras,我将使用:

    #define all your layers in the network variable
    momentum = keras.optimizers.SGD(lr=0.001, momentum=0.9, decay=0., nesterov=False)
    network.compile(loss='categorical_crossentropy', optimizer=momentum)
    
        2
  •  0
  •   sdcbr    7 年前

    看看路边石 docs 在优化器上。

    有两个选项:在编译模型时按名称定义优化器,在这种情况下,将应用默认选项:

    model.compile(loss=..., optimizer='sgd')
    

    或者单独实例化优化器对象并在将其传递给 model.compile() :

    from keras import optimizers
    optimizer = optimizers.SGD(lr=..., momentum=...) # specify options such as momentum here
    model.compile(loss=..., optimizer=optimizer)