Tensorflow 入门 2
来源:互联网 发布:公务员 紧缺职位 知乎 编辑:程序博客网 时间:2024/06/16 23:17
激活函数
一共有三种常用的激活函数 sigmoid、tanh和ReLU,如下所示
目前Tensorflow提供7种不同的非线性激活函数,tf.nn.relu、tf.sigmoid和tf.tanh是其中比较常见的几个。Tensorflow也支持自定义激活函数。
- 线性激活函数在深层神经网络中没有意义,多层网络与单层网络一样。
- 非线性激活函数的多层网络可以解决异或运算(非线性可分问题)
损失函数 (cost function)
神经网络模型的效果以及优化的目标是通过损失函数来定义的。
交叉熵代价函数(cross-entropy cost function)
当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢。
对数似然函数(log-likelihood cost)
对数似然函数也常用来作为softmax回归的代价函数,在上面的讨论中,我们最后一层(也就是输出)是通过sigmoid函数,因此采用了交叉熵代价函数。而深度学习中更普遍的做法是将softmax作为最后一层,此时常用的是代价函数是log-likelihood cost。
注意对数似然函数刻画的是两个概率分布之间的距离,然而神经网络的输出却不一定是一个概率分布,因此需要将神经网络的输出转换成概率分布。Softmax回归是一个非常常用的方法。
柔性最大值(softmax)层
Softmax回归本身可以作为一个学习算法来优化分类结果,但是在Tensorflow中,softmax回归的参数被去掉了,它只是一层额外的处理层,将神经网络的输出变成一个概率分布。下图显示了加上Softmax回归的神经网络的结构图。
从公式中可以看出,原始的输出被用作置信度来生成新的输出,而新的输出满足概率分布的所有要求。
因为对数似然函数一般会和softmax一起使用,所以Tensorflow对这两个功能进行了统一的封装,并提供了tf.nn.softmax_cross_entropy_with_logits函数(用法参考)。这样通过一个命令就可以得到使用了softmax回归之后的交叉熵。
均方误差(MSE)
与分类问题不同,回归问题解决的是对具体数值的预测。解决回归问题的神经网络一般只有一个输出节点,这个节点的输出值就是预测的数值。对于回归问题,最常用的损失函数就是均方误差MSE,定义如下:
在Tensorflow中的实现如下:其中,y_是预测值,y是真值 mse = tf.reduce_mean(tf.square(y_ - y)
优化算法(optimizer)
一般的优化算法为反向传播的Gradient Descend、Momentum、Adam等。在
学习速率指数下降
tf.train.exponential_decay函数实现了指数衰减学习率,通过这个函数,可以先使用较大的学习率快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定。(代码参考)
过拟合与正则化
通过限制权重的大小,使得模型不能任意拟合训练数据中的随机噪音。在Tensorflow中,也可以优化带有正则化的损失函数,以L2正则化为例:
Tensorflow提供了tf.contrib.layers.l2_regularizer函数,他返回一个函数,这个函数可以计算一个指定的参数的L2正则化项的值。
L2正则化 (实现代码参考)
cost = J(w,b) + lambda*R(w),其中R(w)如下所示。
L1正则化
会让参数变得更加稀疏,即有很多的参数会变为0,这样可以达到类似特征选择的功能,而L2正则化不会。
cost = J(w,b) + lambda*R(w),其中R(w)如下所示。
dropout
我们都知道dropout对于防止过拟合效果不错。 dropout一般用在全连接的部分,卷积部分一般不会用到dropout, 输出层也不会使用dropout,适用范围(输入,输出)之间的全连接层,x_ = tf.nn.dropout(x, keep_prop),其中x上该层激活值
指数加权平均(指数滑动平均)
在Tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型。在初始化ExponentialMovingAverage时,需要提供一个衰减率(decay,一般在0.95-1.0之间)。这个衰减率将用于控制模型更新的速度。
- tensorflow 入门学习(2)
- Tensorflow 入门 2
- TensorFlow实战:Chapter-2(TensorFlow入门)
- 2、Tensorflow:TensorFlow深度学习入门(上)
- 01 TensorFlow入门(2)
- TensorFlow入门(2):安装
- TensorFlow入门(2)-基本概念
- 【TensorFlow】TensorFlow快速入门
- TensorFlow入门
- TensorFlow 入门
- TensorFlow入门
- TensorFlow入门
- TensorFlow入门
- Tensorflow 入门
- TensorFlow 入门
- tensorflow入门
- TensorFlow 入门
- TensorFlow 入门
- 1019. 数字黑洞
- c语言基础(二)
- SSM框架访问webapp下其他文件夹出现404错误
- Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)
- sessionid为什么关闭浏览器消失
- Tensorflow 入门 2
- 多线程基础学习九:练习-多线程获取不重复的随机数字
- PVANet中的solver.prototxt中的plateau实现
- C语言学习3:变量与算数表达式及printf函数
- NOIP2009提高组
- SSM之Mybatis对数据库的查询以及批量操作
- java 服务降级开关设计思路
- javaweb学习总结(六)log4j xml和properties两种配置
- 委托(delegate)小坑