Keras学习笔记03——常用重要模块
来源:互联网 发布:数据连接自动打开 编辑:程序博客网 时间:2024/06/03 15:34
一、目标函数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()时传递一个预定义优化器名。在后者情形下,优化器的参数将使用默认值。
所有优化器都可用的两个参数(用于对梯度进行裁剪):
- clipnorm
# all parameter gradients will be clipped to# a maximum norm of 1.sgd = SGD(lr=0.01, clipnorm=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 Kdef 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
0 0
- Keras学习笔记03——常用重要模块
- keras学习笔记2——Keras模块概述
- keras学习随笔03——常用keras layers
- Keras学习笔记02——常用的网络层
- Deep learning基于theano的keras学习笔记(4)-其他重要模块
- keras学习笔记(1)-Keras的模块架构
- 0——keras学习笔记
- keras学习笔记——基本概念
- keras学习笔记(3)—优化器
- keras学习笔记(4)—损失函数
- keras——常用层
- Python常用的第三方模块——学习笔记
- 【Python】学习笔记——-14、常用第三方模块
- <32>python学习笔记——常用模块
- Keras学习笔记01——快速搭建神经网络结构
- Keras学习笔记(2)——多层感知机
- Keras学习笔记一:常用层keras.layers.core部分函数
- keras-学习笔记
- adaboost训练 之 弱分类器训练的opencv源码详解 1
- 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递
- adapter.notifyDataSetChanged()"失效"
- wireshark如何分析加密的WIFI数据包
- 8.2.1.3 Range Optimization
- Keras学习笔记03——常用重要模块
- 成本中心通过利润中心来和公司代码对应
- 预置联系人
- app 版本的更新
- Java面试题大全(Java基础四)
- 嵌入式开发中常用的Linux 网络命令
- es6中的set
- dubbo启动报java.lang.ClassNotFoundException: javassist.ClassPath
- 平台即服务(PaaS)如何改变应用开发?