Tensorflow學習五 卷積神經網路

2021-08-19 04:48:55 字數 1136 閱讀 2107

一:tf中的卷積層:

#通過tf.get_variable的方式建立過濾層的權重變數和偏置項變數。是乙個四維矩陣,前面兩個維度代表了

#過濾器的尺寸,第三個維度代表當前層的深度,第四個代表過濾器的深度

filter_weight = tf.get_variable(name='weight', shape=[5,5,3,16], initializer=tf.truncated_normal_initializer(stddev=0.1))

#偏置層只需要表現深度

biases = tf.get_variable(name='biases', shape=[16], initializer=tf.constant_initializer(0.1))

#tf.nn.conv2d提供了乙個函式實現卷積,第乙個引數是當前層的輸入,注意輸入是乙個四維矩陣,其第乙個維度對應乙個

#輸入batch,表示第幾張。

#tf.nn.conv2d第二個引數是卷積層的權重

#第三個引數是不同維度上的步長。是乙個長度為四的陣列,但是第乙個維度和最後乙個維度都必須是1.中間對應矩陣的長和寬

#最後乙個引數是填充方法,字串型別,有兩個選擇,『same'表示新增全0填充。『valid'表示不新增

conv = tf.nn.conv2d(input, filter_weight, strides=[1,1,1,1], padding='same')

#tf.nn.bias_add提供了乙個函式給每乙個節點加上偏置項。這裡不能直接上使用加法,因為矩陣不同位置上的節點需要

#加上同樣的偏置項。

bias = tf.nn.bias_add(conv, biases)

#將計算結果通過relu實現去線性化

active_conv = tf.nn.relu(bias)

二:tf中的池化層:

tf中的池化層有兩種,最大值池化和平均值池化。以下**實現了最大值池化:

pool = tf.nn.max_pool(active_conv, ksize=[1,3,3,1], strides=[1,2,2,1], padding='same')
其中ksize提供了過濾器的尺寸,strides提供了過濾器的步長資訊。

深度學習(五)卷積過程的理解

卷積過程貫穿於整個神經網路,尤為重要 卷積核是矩陣,是對輸入矩陣的線性變換 旋轉 縮放 剪下 輸出feature map 從例子出來,我們發現,我們需要對卷積核與輸入進行一維展開,卷積核h 卷積核數量 5 卷積核w 卷積核尺寸輸入維度 333 輸入h 卷積核w 輸入w 輸入尺寸 100100 輸出h...

TensorFlow實戰系列11 卷積層網路結構

圖 4 中顯示了卷積層神經網路結構中最重要的部分,這個部分被稱之為過濾器 filter 或者核心 kernel 因為 tensorflow 文件中將這個結構稱之為過濾器 filter 所以我們將統稱這個結構為過濾器。如圖 4 所示,過濾器可以將當前層神經網路上的乙個子節點 矩陣轉化為下一層神經網路上...

1 1卷積詳解

可以看作對某個區域性的加權求和 它是對應區域性感知,它的原理是在觀察某個物體時我們既不能觀察每個畫素也不能一次觀察整體,而是先從區域性開始認識,這就對應了卷積。卷積核的大小一般有1x1,3x3和5x5的尺寸。卷積核的個數就對應輸出的通道數,這裡需要說明的是對於輸入的每個通道,輸出每個通道上的卷積核是...