Keras相当于Tensorflow优化器

时间:2018-08-14 09:42:10

标签: tensorflow keras

我需要将TF的NN转换为Keras。 除了Tensorflow中的“动量”优化器之外,这种方法非常简单。

我最好的猜测是,TF中的“动量”在Keras中为SGD。 它是否正确?

如果是这样,我应该在Keras中设置默认的hyparparameters“ lr,动量,衰减,nesterov”以匹配TF中的默认调用“ optimizer = momentum”吗?

谢谢!

要翻译的行:

network = regression(
network,
optimizer='momentum',
loss='categorical_crossentropy'
)

2 个答案:

答案 0 :(得分:1)

您正在尝试翻译的TensorFlow代码似乎正在使用高级API TF学习。

默认情况下,TF Learn的Momentum对象使用以下值初始化:

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)

答案 1 :(得分:0)

查看优化器上的Keras docs

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

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

或者您分别实例化一个Optimizer对象,并在将其传递给model.compile()之前指定其他选项:

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