编译模型必选两个参数之一
可以通过传递预定义目标函数名字指定目标函数,也可以传递一个Theano/TensroFlow的符号函数作为目标函数,该函数对每个数据点应该只返回一个标量值,并以下列两个参数为参数:
真实的优化目标函数是在各个数据点得到的损失函数值之和的均值。
可用的目标函数:
编译模型必选两个参数之一
可以在调用model.compile()之前初始化一个优化器对象,然后传入该函数(如上所示),也可以在调用model.compile()时传递一个预定义优化器名。在后者情形下,优化器的参数将使用默认值。
所有优化器都可用的两个参数(用于对梯度进行裁剪):
# all parameter gradients will be clipped to
# a maximum norm of 1.
sgd = SGD(lr=0.01, clipnorm=1.)
# all parameter gradients will be clipped to
# a maximum value of 0.5 and
# a minimum value of -0.5.
sgd = SGD(lr=0.01, clipvalue=0.5)
常用的优化算法有:
随机梯度下降法,支持动量参数,支持学习衰减率,支持Nesterov动量。
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
参数:
除学习率可调整外,建议保持优化器的其他默认参数不变,该优化器通常是面对递归神经网络时的一个良好选择。
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)
参数:
建议保持优化器的默认参数不变。
keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06)
参数:
建议保持优化器的默认参数不变。
keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)
参数:
参考文献
Adadelta - an adaptive learning rate method
该优化器的默认值来源于参考文献。
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
参数:
参考文献
Adam - A Method for Stochastic Optimization
激活函数可以通过设置单独的激活层实现,也可以在构造层对象时通过传递activation参数实现。
可以通过传递一个逐元素运算的Theano/TensorFlow函数来作为激活函数:
from keras import backend as K
def tanh(x):
return K.tanh(x)
model.add(Dense(64, activation=tanh))
model.add(Activation(tanh)
预定义的激活函数有: