2卷积神经网络相关API详解-2.3/2.4TensorFlow之激活函数API详解(上/下)
来源:互联网 发布:mysql数据库登陆 编辑:程序博客网 时间:2024/06/05 11:46
参考:
http://www.cnblogs.com/hellcat/p/7020135.html
http://www.studyai.com/
Activation Functions
the activation ops provide different types of nonlinearities for use in neural networks。
All activation ops apply componentwise,and produce a tensor of the same shape as the input tensor。
激活函数
在神经网络中,我们有很多的非线性函数来作为激活函数,比如连续的平滑非线性函数(sigmoid,tanh和softplus),连续但不平滑的非线性函数(relu,relu6和relu_x)和随机正则化函数(dropout)。
所有的激活函数都是单独应用在每个元素上面的,并且输出张量的维度和输入张量的维
分类:
- 平滑非线性激活单元(sigmoid,tanh,elu,softplus,softsign)
- 连续但不是处处可导(微)的激活单元(relu,relu6,crelu,relu_x)
- 随机正则化激活单元(dropout)
relu:
tf.nn.relu(features, name = None)解释:这个函数的作用是计算激活函数relu,即max(features, 0)。输入参数:features: 一个Tensor。数据类型必须是:float32,float64,int32,int64,uint8,int16,int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同。
relu6:
tf.nn.relu6(features, name = None)解释:这个函数的作用是计算激活函数relu6,即min(max(features, 0), 6)。输入参数:features: 一个Tensor。数据类型必须是:float,double,int32,int64,uint8,int16或者int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同。
crelu:
tf.nn.crelu(features, name = None)解释:这个函数会倍增通道,一个是relu,一个是relu关于y轴对称的形状。输入参数:features: 一个Tensor。数据类型必须是:float32,float64,int32,int64,uint8,int16,int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同,通道加倍。
elu:
tf.nn.elu(features, name = None)解释:x小于0时,y = a*(exp(x)-1),x大于0时同relu。features: 一个Tensor。数据类型必须是:float32,float64,int32,int64,uint8,int16,int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同。
see: Fast and Accurate Deep Network Learning by Exponential Linear Units(ELUs)
softplus:
tf.nn.softplus(features, name = None)解释:这个函数的作用是计算激活函数softplus,即log( exp( features ) + 1)。输入参数:features: 一个Tensor。数据类型必须是:float32,float64,int32,int64,uint8,int16或者int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同。
softsign:
tf.nn.softsign(features, name = None)解释:这个函数的作用是计算激活函数softsign,即features / (abs(features) + 1)。输入参数:features: 一个Tensor。数据类型必须是:float32,float64,int32,int64,uint8,int16或者int8。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和features相同。
sigmoid:
tf.sigmoid(x, name = None)解释:这个函数的作用是计算 x 的 sigmoid 函数。具体计算公式为 y = 1 / (1 + exp(-x))。输入参数:x: 一个Tensor。数据类型必须是float,double,int32,complex64,int64或者qint32。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,如果 x.dtype != qint32 ,那么返回的数据类型和x相同,否则返回的数据类型是 quint8 。
sigmoid输出恒大于零,相当于加了偏置分量。
tanh:
tf.tanh(x, name = None)解释:这个函数的作用是计算 x 的 tanh 函数。具体计算公式为 ( exp(x) - exp(-x) ) / ( exp(x) + exp(-x) )。x: 一个Tensor。数据类型必须是float,double,int32,complex64,int64或者qint32。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,如果 x.dtype != qint32 ,那么返回的数据类型和x相同,否则返回的数据类型是 quint8 。
[-2,2]之间tanh最敏感
[-8,-2]之间tanh不敏感
dropout:
tf.nn.dropout(x, keep_prob, noise_shape = None, seed = None, name = None)解释:这个函数的作用是计算神经网络层的dropout。一个神经元将以概率keep_prob决定是否放电,如果不放电,那么该神经元的输出将是0,如果该神经元放电,那么该神经元的输出值将被放大到原来的1/keep_prob倍。这里的放大操作是为了保持神经元输出总个数不变。比如,神经元的值为[1, 2],keep_prob的值是0.5,并且是第一个神经元是放电的,第二个神经元不放电,那么神经元输出的结果是[2, 0],也就是相当于,第一个神经元被当做了1/keep_prob个输出,即2个。这样保证了总和2个神经元保持不变。默认情况下,每个神经元是否放电是相互独立的。但是,如果noise_shape被修改了,那么他对于变量x就是一个广播形式,而且当且仅当 noise_shape[i] == shape(x)[i] ,x中的元素是相互独立的。比如,如果 shape(x) = [k, l, m, n], noise_shape = [k, 1, 1, n] ,那么每个批和通道都是相互独立的,但是每行和每列的数据都是关联的,即要不都为0,要不都还是原来的值。输入参数:x: 一个Tensor。keep_prob: 一个 Python 的 float 类型。表示元素是否放电的概率。noise_shape: 一个一维的Tensor,数据类型是int32。代表元素是否独立的标志。seed: 一个Python的整数类型。设置随机种子。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据维度和x相同。异常:输入异常: 如果 keep_prob 不是在 (0, 1]区间,那么会提示错误。
bias_add:
tf.nn.bias_add(value, bias, name = None)解释:这个函数的作用是将偏差项 bias 加到 value 上面。这个操作你可以看做是 tf.add 的一个特例,其中 bias 必须是一维的。该API支持广播形式,因此 value 可以有任何维度。但是,该API又不像 tf.add 可以让 bias 的维度和 value 的最后一维不同,tf.nn.bias_add中bias的维度和value最后一维必须相同。输入参数:value: 一个Tensor。数据类型必须是float,double,int64,int32,uint8,int16,int8或者complex64。bias: 一个一维的Tensor,数据维度和 value 的最后一维相同。数据类型必须和value相同。name: (可选)为这个操作取一个名字。输出参数:一个Tensor,数据类型和value相同。
范例:
#!/usr/bin/env python# -*- coding: utf-8 -*-import tensorflow as tfa = tf.constant([[1.0, 2.0],[1.0, 2.0],[1.0, 2.0]])b = tf.constant([2.0,1.0]) c = tf.constant([1.0])sess = tf.Session()print sess.run(tf.nn.bias_add(a, b))# 因为 a 最后一维的维度是 2 ,但是 c 的维度是 1,所以以下语句将发生错误print sess.run(tf.nn.bias_add(a, c))# 但是 tf.add() 可以正确运行print sess.run(tf.add(a, c))
阅读全文
0 0
- 2卷积神经网络相关API详解-2.3/2.4TensorFlow之激活函数API详解(上/下)
- 2卷积神经网络相关API详解-2.5TensorFlow之损失函数API详解
- 2卷积神经网络相关API详解-2.1TensorFlow之卷积操作API
- 2卷积神经网络相关API详解-2.6TensorFlow之优化器API详解
- 2卷积神经网络相关API详解-2.2TensorFlow之池化操作API
- TensorFlow框架(4)之CNN卷积神经网络详解
- TensorFlow框架(4)之CNN卷积神经网络详解
- TensorFlow框架(4)之CNN卷积神经网络详解
- 利用Tensorflow的Slim API实现卷积神经网络
- 卷积神经网络学习--激活函数
- Bitblt函数(API)详解
- window下键盘监控api函数详解
- tensorflow激活函数relu()的详解
- API函数详解
- 详解卷积神经网络(CNN)
- 李理:详解卷积神经网络
- 李理:详解卷积神经网络
- 李理:详解卷积神经网络
- 融云SDK触达用户数破20亿
- 枚举—案例(完美立方等式poj1543)
- 阿里云CentOS7安装MySQL
- 利用jxl 将数据从后台导出为excel
- Java线程(三):Callable、Future、RunnableFuture、FutureTask
- 2卷积神经网络相关API详解-2.3/2.4TensorFlow之激活函数API详解(上/下)
- 减少caffe依赖库的手写数字识别测试
- python爬手入门-爬取百度应用市场apk信息并下载
- 压缩图片
- ios 选择联系人 发短信 通讯录开发 addressUI
- 主窗体和子窗体之间的转换
- cookie和session
- Jquery Table 的基本操作
- SqlServer实时数据同步到MySql