tf.nn库能提供神经网络相关操作的支持,包括卷积操作(conv)、池化操作(pooling)、归一化、loss、分类操作、embedding、RNN、Evaluation等,相对tf.layer更底层一些。
1.激活函数Activation Functions
2.dropout层
3.卷积层
4.池化层
5.Normalization
6.Losses
7.Evaluation
1.激活函数Activation Functions
tf.nn.relu(features, name=None) # relu激活函数
features:必须为Tensor,类型为float32, float64, int32, int64, uint8, int16, int8
返回一个Tensor,维度和feature相同
tf.nn.relu6(features, name=None) # 计算 Rectified Linear 6: min(max(features, 0), 6).
features:必须为Tensor,类型为float32, float64, int32, int64, uint8, int16, int8
返回一个Tensor,维度和feature相同
tf.nn.softplus(features, name=None) # 计算softplus: log(exp(features) + 1)
features:必须为Tensor,类型为float32, float64, int32, int64, uint8, int16, int8
返回一个Tensor,维度和feature相同
tf.sigmoid(x, name=None) # 计算x中每个元素的sigmiod值,y = 1 / (1 + exp(-x))
x:必须为Tensor,类型为double, int32, complex64, int64, or qint32
返回一个Tensor,维度和feature相同,如果x.dtype != qint32,返回tensor类型和x相同,否则,类型为quint8
tf.tanh(x, name=None) # 计算x中每个元素的tanh值,y = tanh(x)
x:必须为Tensor,类型为double, int32, complex64, int64, or qint32
返回一个Tensor,维度和feature相同,如果x.dtype != qint32,返回tensor类型和x相同,否则,类型为quint8
2.dropout层
tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
#Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止
#工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而
#已),因为下次样本输入时它可能又得工作了。train的时候才是dropout起作用的时候,test的时候不应该让dropout
#起作用
x:输入tensor
keep_prob: float类型,每个元素被保留下来的概率,设置神经元被选中的概率,在初始化时keep_prob是一个占位符,
keep_prob = tf.placeholder(tf.float32) 。tensorflow在run时设置keep_prob具体的值