您的位置:首页 > 移动开发 > Objective-C

基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数

2015-10-14 22:07 716 查看
        原地址:http://blog.csdn.net/niuwei22007/article/details/49132133可以查看更多文章

Objective(目标函数),就是常说的代价函数或者损失函数。是训练一个模型另外一个必备的参数。比较常用的就是均方误差和逻辑回归。上一个是优化器

        一、目标函数的使用方法

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


        这段代码已经见过很多次了。可以通过传递一个函数名。也可以传递一个为每一块数据返回一个标量的Theano symbolic function。而且该函数的参数是以下形式:

y_true : 实际标签。类型为Theano tensor
y_pred: 预测结果。类型为与y_true同shape的Theanotensor

        其实想一下很简单,因为损失函数的作用就是返回预测结果与实际值之间的差距。然后优化器根据差距进行参数调整。不同的损失函数之间的区别就是对这个差距的度量方式不同。这里是Keras对于目标函数实现的源代码。

        

        二、Keras内置的目标函数

mean_squared_error / mse均方误差,常用的目标函数,公式为((y_pred-y_true)^2).mean(axis=-1)就是把预测值与实际值差的平方累加求均值。
mean_absolute_error / mae绝对值均差,公式为(|y_pred-y_true|).mean(axis=-1)就是把预测值与实际值差的绝对值累加求和。
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:多分类的逻辑回归注意:using
this objective requires that your labels are binary arrays ofshape (nb_samples, nb_classes).

        参考资料:

官方教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息