卷積網路一些小知識點整理 tf

2021-08-30 13:56:20 字數 2125 閱讀 9686

1:定義卷積層的權重時候

def weight_variable(shape):

initial = tf.truncated_normal(shape, stddev=0.1)

return tf.variable(initial)

w_conv1 = weight_variable([5,5,1,32])

通俗說法:5*5的卷積來做運算,1代表的是處理的影象顏色通道只有1個,32指有32個卷積 即提取32個特徵

更通俗的說明:我們使用了32個filters,每乙個都有乙個大小為5*5的視窗。我們必須定義乙個tensor來儲存shape為[5,5,1,32]權重矩陣w:前兩個引數是視窗的大小,第三個引數是channel的數量。最後乙個定義了我們想使用多少個特徵

2:定義max_pooling層的時候

def max_pool_2x2(x):

return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='same')

引數是四個,和卷積很類似:

第乙個引數value:需要池化的輸入,一般池化層接在卷積層後面,所以輸入通常是feature map,依然是[batch, height, width, channels]這樣的shape

第二個引數ksize:池化視窗的大小,取乙個四維向量,一般是[1, height, width, 1],因為我們不想在batch和channels上做池化,所以這兩個維度設為了1

第三個引數strides:和卷積類似,視窗在每乙個維度上滑動的步長,一般也是[1, stride,stride, 1]

第四個引數padding:和卷積類似,可以取'valid' 或者'same'

返回乙個tensor,型別不變,shape仍然是[batch, height, width, channels]這種形式

3:每層和每層之間的權重設定關係

w_conv1 = weight_variable([5,5,1,32])

第乙個卷積層中,每個size都是5*5,然後因為影象channel是1(mnist是灰色影象 不是rgb格式),32是指由32個卷積,形成32層深的乙個輸出

因為上層有32個輸出,就相當於一幅影象是32個channel了,所以這塊第3個引數必須是32,64就代表有64個卷積

w_conv2 = weight_variable([5,5,32,64])

最後一層是全連線層的權重,7*7*64這應該是計算好了的,不是隨便寫,1024就說明全連線層輸出是1024個神經元,或者說是1024個特徵

w_fc1 = weight_variable([7*7*64, 1024])

4:tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=none, name=none)

input:是乙個tensor,代表的是要輸入到網路裡面做卷積的影象,他的shape是[batch_size, height, width, channels],代表的含義是[乙個batch的大小 bacth_size, 高度,寬度,是幾通道的 灰色影象是1通道 常見的影象都是3通道]

filter:是神經網路中的卷積核,提取特徵的一種媒介。他也必須是乙個tensor,他的shape是[height, width, channels, channels_out],具體的含義是[卷積核的高度,卷積核的寬,影象的通道數是多少 和前面的input對應,這樣的卷積核有多少個 有n個就會提取出來n個特徵]

strides:卷積時在影象每一維的步長,這是一維向量,長度是4,第乙個數字和最後乙個數字對應的是batch上和channel上,我們幾乎不會在這兩個維度上做什麼操作 所以取值都是1,這個strides的取值一般是[1,height,width,1]

padding:取same的時候,卷積運算時會為了保證輸出size和原影象的size保持不變,會同時進行外圍補0,至於具體補多少0,是有這樣乙個公式。p = (f-1)/2   p代表的是補0時候的圈數

具體的計算可以轉到這篇部落格中進行檢視21個專案完整深度學習-第一章核心卷積模型原始碼

地信GIS面試前的一些小知識點(整理)

它是隨著地理科學 計算機技術 遙感技術和資訊科學的發展而產生的一門科學。就應用而言,是對空間資料進行 組織 管理 分析 顯示 的系統。其實本質上它 的就是座標資訊的問題。資料採集 監測與編輯 資料處理與變換 矢柵轉換 製圖綜合 資料儲存與組織 向量和柵格模型 空間查詢與分析 空間檢索 空間拓撲 疊加...

C Primer Plus 知識點整理(一)

變數的命名不能以數字開頭 變數名中只能包含字母 下劃線和數字,不能有空格。變數名不能與標準資料庫的變數名衝突 盡量不要將下劃線作為第乙個字元 變數名區分大小,字元長度由編譯器決定。變數 常量 函式 語句塊等的名字都稱為識別符號 變數是可讀 寫的記憶體單元 常量是只可讀的記憶體單元 宣告指定了乙個變數...

linux c c 知識點整理 一

在c 中,申請動態記憶體是使用new和delete,這兩個關鍵字實際上是運算子,並不是函式。而在c中,申請動態記憶體則是使用malloc和free,這兩個函式是c的標準庫函式,使用它們必須包含stdlib.h,才能編譯通過。new delete和malloc free的相同之處在於,new和mall...