Tensorflow中构建神经网络所需要的神经元函数,包括各种激活函数,卷积函数,池化函数,损失函数,优化器等。
激活函数运行时激活神经网络中某一部分神经元,将激活信息向后传入下一层的神经网络。神经网络之所以能解决非线性问题(如语音,图像识别),本质上就是激活函数加入非线性因素,弥补了线性模型的表达力,把“激活的神经元的特征”通过函数保留并映射到下一层。
tf.nn.relu()
tf.nn.sigmoid()
tf.nn.tanh()
tf.nn.elu()
tf.nn.bias_add()
tf.nn.crelu()
tf.nn.relu6()
tf.nn.softplus()
tf.nn.softsign()
tf.nn.dropout()#防止过拟合,用来舍弃某些神经元
激活函数输入均要计算x,输出均为与x数据类型相同的张量。
import tensorflow as tf
a = tf.constant([[1.0,2.0],[1.0,2.0],[1.0,2.0]])
with tf.Session() as sess:
print(sess.run(tf.sigmoid(a)))
卷积函数:
卷积函数时构建神经网络的重要支架,是在一批图像上扫描的二维过滤器。
这个函数计算N维卷积之和
tf.nn.convolution(input,filter,padding,strides = None,dilation_rate = None,name = None,data_format = None)
这个函数对一个4维的输入数据input和4维的卷积核filter进行操作,然后对输入数据进行一个二维的卷积操作,最后得到卷积之后的结果
tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu = None,data_format = None,name = None)
input_data = tf.Variable(np.random.rand(10,9,9,3),dtype=np.float32)
filter_data = tf.Variable(np.random.rand(2,2,3,2),dtype=np.float32)
y = tf.nn.conv2d(input_data,filter_data,strides=[1,1,1,1],padding='SAME')
tf.nn.depthwise_conv2d(input,filter,strides,padding,rate = None,name = None,data_format = None)
tf.nn.separable_conv2d(input,depthwise_filter,pointwise_filter,strides,padding,rate = None,name = None,data_format = None)
tf.nn.atrous_conv2d(value,filter,rate,padding,name=None)
tf.nn.conv2d_transpose(value,filter,output_shape,strides,padding=’SAME’,data_format=’NHWC’,name=None)
tf.nn.convld(value,filters,strides,padding,use_cudnn_on_gpu=None,data_format=None,name=None)
tf.nn.conv3d(input,filter,strides,padding,name=None)
tf.nn.conv3d_transpose(value,fliter,output_shape,strides,padding=’SAME’,name=None)
池化函数:
在神经网络中,池化函数一般跟在卷积函数的下一层
tf.nn.avg_pool()
tf.nn.max_pool()
tf.nn.max_pool_with_argmax()
tf.nn.avg_pool3d()
tf.nn.max_pool3d()
tf.nn.fractional_avg_pool()
tf.nn.fractional_max_pool()
tf.nn.pool()
input_data = tf.Variable(np.random.rand(10,6,6,3),dtype = np.float32)
filter_data = tf.Variable(np.random.rand(2,2,3,10),dtype = np.float32)
y = tf.nn.conv2d(input_data,filter_data,strides = [1,1,1,1],padding = 'SAME')
output = tf.nn.avg_pool(value = y,ksize = [1,2,2,1],strides = [1,1,1,1],padding = 'SAME')
分类函数:
tensorflow中常见的分类函数主要有:
tf.nn.sigmoid_cross_entropy_with_logits()
tf.nn.softmax()
tf.nn.log_softmax()
tf.nn.softmax_cross_entropy_with_logits()
tf.nn.sparse_softmax_cross_entropy_with_logits()