Tensorflow從入門到禿頂(4)

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()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章