Keras学习笔记03——常用重要模块

原创 2016年09月28日 10:53:06

一、目标函数objectives

编译模型必选两个参数之一

可以通过传递预定义目标函数名字指定目标函数,也可以传递一个Theano/TensroFlow的符号函数作为目标函数,该函数对每个数据点应该只返回一个标量值,并以下列两个参数为参数:

  • y_true:真实的数据标签,Theano/TensorFlow张量
  • y_pred:预测值,与y_true相同shape的Theano/TensorFlow张量

真实的优化目标函数是在各个数据点得到的损失函数值之和的均值。

可用的目标函数:

  • mean_squared_error或mse
  • mean_absolute_error或mae
  • mean_absolute_percentage_error或mape
  • mean_squared_logarithmic_error或msle
  • squared_hinge
  • hinge
  • binary_crossentropy(亦称作对数损失,logloss)
  • categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,需要将标签转化为形如(nb_samples, nb_classes)的二值序列
  • sparse_categorical_crossentrop:如上,但接受稀疏标签。注意,使用该函数时仍然需要你的标签与输出值的维度相同,你可能需要在标签数据上增加一个维度:np.expand_dims(y,-1)
  • kullback_leibler_divergence:从预测值概率分布Q到真值概率分布P的信息增益,用以度量两个分布的差异.
  • poisson:即(predictions - targets * log(predictions))的均值
  • cosine_proximity:即预测值与真实标签的余弦距离平均值的相反数

二、优化器optimizers

编译模型必选两个参数之一

可以在调用model.compile()之前初始化一个优化器对象,然后传入该函数(如上所示),也可以在调用model.compile()时传递一个预定义优化器名。在后者情形下,优化器的参数将使用默认值。

所有优化器都可用的两个参数(用于对梯度进行裁剪):

  1. clipnorm
# all parameter gradients will be clipped to
# a maximum norm of 1.
sgd = SGD(lr=0.01, clipnorm=1.)
  1. clipvalue
# 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)

常用的优化算法有:

1. SGD

随机梯度下降法,支持动量参数,支持学习衰减率,支持Nesterov动量。

keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)

参数:

  • lr:大于0的浮点数,学习率
  • momentum:大于0的浮点数,动量参数
  • decay:大于0的浮点数,每次更新后的学习率衰减值
  • nesterov:布尔值,确定是否使用Nesterov动量

2. RMSprop

除学习率可调整外,建议保持优化器的其他默认参数不变,该优化器通常是面对递归神经网络时的一个良好选择。

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)

参数:

  • lr:大于0的浮点数,学习率
  • rho:大于0的浮点数
  • epsilon:大于0的小浮点数,防止除0错误

3. Adagrad

建议保持优化器的默认参数不变。

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-06)

参数:

  • lr:大于0的浮点数,学习率
  • epsilon:大于0的小浮点数,防止除0错误

4. Adadelta

建议保持优化器的默认参数不变。

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-06)

参数:

  • lr:大于0的浮点数,学习率
  • rho:大于0的浮点数
  • epsilon:大于0的小浮点数,防止除0错误

参考文献
Adadelta - an adaptive learning rate method

5.Adam

该优化器的默认值来源于参考文献。

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)

参数:

  • lr:大于0的浮点数,学习率
  • beta_1/beta_2:浮点数,接近1
  • epsilon:大于0的小浮点数,防止除0错误

参考文献
Adam - A Method for Stochastic Optimization

三、 激活函数Activations

激活函数可以通过设置单独的激活层实现,也可以在构造层对象时通过传递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)

预定义的激活函数有:

  • softmax:对输入数据的最后一维进行softmax,输入数据应形如(nb_samples, nb_timesteps, nb_dims)或(nb_samples,nb_dims)
  • softplus
  • softsign
  • relu
  • tanh
  • sigmoid
  • hard_sigmoid
  • linear
版权声明:本文为博主原创文章,未经博主允许不得转载。

DeepLearning tutorial(6)易用的深度学习框架Keras简介

之前我一直在使用Theano,前面五篇Deeplearning相关的文章也是学习Theano的一些笔记,当时已经觉得Theano用起来略显麻烦,有时想实现一个新的结构,就要花很多时间去编程,所以想过将...
  • u012162613
  • u012162613
  • 2015年04月30日 17:03
  • 48857

Keras中自定义目标函数(损失函数)的简单方法

机器学习 python keras
  • Kyf_Coffee
  • Kyf_Coffee
  • 2016年12月28日 22:27
  • 10137

keras中的目标函数和优化函数

目标函数就是我们常说的损失函数,优化函数就是我们常说的反调参数的函数,包括:梯度下降函数、随机梯度下降函数等。 这些我相信大家都很清楚了,下面我就简单的介绍一下keras提供的常见的目标函数和优化函...
  • zjm750617105
  • zjm750617105
  • 2016年05月05日 15:27
  • 8325

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-03-优化器

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-03-优化器 -- optimizers(优化器)。机器学习包括两部分内容,一部分是如何构建模型,另一部分就是如何训练模...
  • niuwei22007
  • niuwei22007
  • 2015年10月14日 21:26
  • 11350

keras 设置学习率的办法

错误的方法: model.optimizer.lr.assign(0.01) model(X,y,nb_epoch=50) 正确的方法: import keras.backend a...
  • lujiandong1
  • lujiandong1
  • 2017年08月03日 10:37
  • 1301

keras使用技术技巧

从keras的github issue中学习了几个技巧,记录如下: (一)return best model Is the only -- currently existing -- soluti...
  • u011037837
  • u011037837
  • 2016年06月06日 08:54
  • 2735

python keras (一个超好用的神经网络框架)的使用以及实例

先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行,所以自己装了一个双系统。这才感到linux系统的强大之初,难怪大公司都是用这个做开发,妹的,谁用谁知道啊!!!...
  • Star_Bob
  • Star_Bob
  • 2015年09月20日 17:18
  • 69387

keras 调参, 优化, 一些设置等

1. 关闭GPU,只使用CPU 2.设置keras占用GPU内存的比例: 3.Call back 中设置learning rate等Shedule, 使用Early Stop:...
  • xiaojiajia007
  • xiaojiajia007
  • 2017年06月06日 16:25
  • 3404

深度学习(十)keras学习笔记

keras学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/49095199 作者:hjimce keras与torch7的使用非常相...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月27日 11:04
  • 3926

深度学习(十)keras学习笔记

keras与torch7的使用非常相似,是最近才火起来的深度学习开源库,底层是用了theano。keras可以说是python版的torch7,对于快速构建CNN模型非常方便。同时也包含了一些最新文献...
  • hjimce
  • hjimce
  • 2015年10月13日 10:38
  • 34442
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Keras学习笔记03——常用重要模块
举报原因:
原因补充:

(最多只允许输入30个字)