keras中的目标函数和优化函数
目标函数就是我们常说的损失函数,优化函数就是我们常说的反调参数的函数,包括:梯度下降函数、随机梯度下降函数等。
这些我相信大家都很清楚了,下面我就简单的介绍一下keras提供的常见的目标函数和优化函数,本人能力有限,平时用到的酒多说几句,用不到的就把名字写出来,欢迎大家补充和指正。
目标函数:
keras文档: http://keras.io/objectives/
- mean_squared_error / mse 均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean()
- mean_absolute_error / mae 绝对值均差,公式为(|y_pred-y_true|).mean()
- mean_absolute_percentage_error / mape公式为:(|(y_true - y_pred) / clip((|y_true|),epsilon, infinite)|).mean(axis=-1) * 100,和mae的区别就是,累加的是(预测值与实际值的差)除以(剔除不介于epsilon和infinite之间的实际值),然后求均值。
- mean_squared_logarithmic_error / msle公式为: (log(clip(y_pred, epsilon, infinite)+1)- log(clip(y_true, epsilon,infinite)+1.))^2.mean(axis=-1),这个就是加入了log对数,剔除不介于epsilon和infinite之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。
- squared_hinge 公式为:(max(1-y_true*y_pred,0))^2.mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的平方的累加均值。
- hinge 公式为:(max(1-y_true*y_pred,0)).mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的的累加均值。
- binary_crossentropy: 常说的逻辑回归, 就是常用的交叉熵函数
- categorical_crossentropy: 多分类的逻辑, 交叉熵函数的一种变形吧,没看太明白
model = Sequential()
model.add(Dense(64, init='uniform', input_dim=10))
model.add(Activation('tanh'))
model.add(Activation('softmax')) sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
下面是默认的SGD优化器的使用和参数介绍:
model.compile(loss='mean_squared_error', optimizer='sgd')
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
Stochastic gradient descent, with support for momentum, learning rate decay, and Nesterov momentum.
<span style="color:#ff0000;">随机梯度下降算法, 看到这个名字是不是很熟了</span>
Argumentslr: float >= 0. Learning rate.
momentum: float >= 0. Parameter updates momentum.(<span class="s1" style="font-family: Arial, Helvetica, sans-serif;">参数更新的动量, 我也不知道啥意思</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>
decay: float >= 0. Learning rate decay over each update.(学习率衰减量,具体是每次都衰减)
nesterov: boolean. Whether to apply Nesterov momentum.(是否启用nesterov动量)
上面好多名词都不明白什么意思,应该把实现的源码贴出来大家看一下
class SGD(Optimizer):'''Stochastic gradient descent, with support for momentum,learning rate decay, and Nesterov momentum.# Argumentslr: float >= 0. Learning rate.momentum: float >= 0. Parameter updates momentum.decay: float >= 0. Learning rate decay over each update.nesterov: boolean. Whether to apply Nesterov momentum.'''def __init__(self, lr=0.01, momentum=0., decay=0., nesterov=False,*args, **kwargs):super(SGD, self).__init__(**kwargs)self.__dict__.update(locals())self.iterations = K.variable(0.)self.lr = K.variable(lr)self.momentum = K.variable(momentum)self.decay = K.variable(decay)def get_updates(self, params, constraints, loss):grads = self.get_gradients(loss, params)lr = self.lr * (1. / (1. + self.decay * self.iterations))self.updates = [(self.iterations, self.iterations + 1.)]# momentumself.weights = [K.variable(np.zeros(K.get_value(p).shape)) for p in params]for p, g, m in zip(params, grads, self.weights):v = self.momentum * m - lr * g # velocityself.updates.append((m, v))if self.nesterov:new_p = p + self.momentum * v - lr * gelse:new_p = p + v# apply constraintsif p in constraints:c = constraints[p]new_p = c(new_p)self.updates.append((p, new_p))return self.updatesdef get_config(self):return {"name": self.__class__.__name__,"lr": float(K.get_value(self.lr)),"momentum": float(K.get_value(self.momentum)),"decay": float(K.get_value(self.decay)),"nesterov": self.nesterov}
源码就不解释了,接着说优化函数,上面以最常用的随机 梯度下降法(sgd)说了怎么用,下面再说说其他的。
keras中的目标函数和优化函数相关推荐
- keras中的回调函数
keras训练 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, v ...
- keras中的mini-batch gradient descent (转)
深度学习的优化算法,说白了就是梯度下降.每次的参数更新有两种方式. 一. 第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度.这种方法每更新一次参数都要把数据集里的所有样本都看 ...
- 【随感】在Keras中如何按最大似然(Max Likewood)训练模型
在Keras中如何按最大似然(Max Likewood)训练模型 按照生成模型的思路,模型的参数是和数据分布无关的,利用极大似然准则就可以训练模型.但是在类似Keras这种神经网络库中,如何训练类似如 ...
- 深度学习布料交换:在Keras中实现条件类比GAN
2017年10月26日SHAOANLU 条件类比GAN:交换人物形象的时尚文章(链接) 给定三个输入图像:人穿着布A,独立布A和独立布B,条件类比GAN(CAGAN)生成穿着布B的人类图像.参见下图. ...
- CNN在Keras中的实践|机器学习你会遇到的“坑”
2018-12-16 23:43:37 本文作为上一节<卷积之上的新操作>的补充篇,将会关注一些读者关心的问题,和一些已经提到但并未解决的问题: 到底该如何理解padding中的valid ...
- 神经网络在Keras中不work!博士小哥证明何恺明的初始化方法堪比“CNN还魂丹”...
铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 南巴黎电信学院(Télécom SudParis)的在读博士生Nathan Hubens在训练CNN时遇到点难题. 使用在CIFAR10数据 ...
- Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法
Keras中提供了一个神经网络可视化的函数plot,并可以将可视化结果保存在本地.plot使用方法如下: from keras.utils.visualize_util import plot plo ...
- Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)——回归预测
Keras之ML~P:基于Keras中建立的回归预测的神经网络模型(根据200个数据样本预测新的5+1个样本)--回归预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: u ...
- Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)——概率预测
Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)--概率预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: ...
最新文章
- 补psp进度(11月4号-9号)
- Python2/3 list set性能测试
- 意想不到的JavaScript(每日一题1)
- JMeter 保持sessionId
- Overleaf v2 评测
- linux 普通io实现pwm,用普通IO口做PWM输出 - 51单片机 -
电子工程世界-论坛 -
手机版...
- android bitmap大小计算,android 之Bitmap 内存大小计算
- python画xy轴折线在拐点处加汉字_解决python中画图时x,y轴名称出现中文乱码的问题...
- oracle11g导出空表
- 配置tfs2017的agent
- 计算机应用 格式,《计算机应用》投稿格式.pdf
- webots自学笔记(七)通过定义顶点构件3D形状(IndexedFaceSet节点)
- ES6深入浅出_汇总贴
- 新手必看:PS钢笔抠图教程
- Sitemap和网站地图在线生成工具
- mysql asc_mysql – 在字符串列上使用asc和desc的索引
- Selenium面试问题及答案30题版
- Zerotier+Microsoft远程桌面 实现内网穿透搭建异地局域网内远程连接控制桌面
- edge打开pdf不显示印章_win10 Edge浏览器打不开pdf文件的解决方法
- CF140C New Year Snowmen(贪心+优先队列)