宣告:這裡記錄的是李金洪老師《深度學習之tensorflow》一書上的知識點
tensorflow裡使用tf.nn.conv2d函式來實現卷積,其格式如下。
tf . nn. conv2d (input, filter, strides, padding, use_ cudnn on_ gpu=none,name=none)
除去引數name引數用以指定該操作的name,與方法有關的共有5個引數。
(1)input: 指需要做卷積的輸入影象,它要求是乙個tensor, 具有[batch, in_height,in_width, in_channels]這樣的形狀,具體含義是「訓練時乙個batch的數量, 高度,寬度,影象通道數」,注意這是乙個四維的tensor,要求型別為float32和float64其中之一。
(2)filter: 相當於padding: 定義元素邊框與元素內容之間的空間。string型別的量,只能是same和valid其中之一,這個值決定了不同的卷積方式,padding 的值為valid時,表示邊緣不填充,當其為』same時,表示填充到濾波器可以到達影象邊緣。
(5)use cudnn on gpu: bool型別,是否使用cudnn加速,預設為true.
(6)返回值: tf.nn.conv2d函式結果返回乙個tensor, 這個輸出就是常說的feature map.
注意:在卷積函式中, padding引數是最容易引起歧義的,該引數僅僅決定是否要補0,
因此一定要清楚padding設為same的真正含義。在設為same的情況下,只有在步長為1時生成的feature map才會與輸入值相等。
padding屬性的意義是定義元素邊框與元素內容之間的空間。
在tf.nn.conv2d函式中,當變數padding為valid和same時,行列數具體是怎麼計算的呢?其實是有公式的。為了方便演示,先來定義幾個變數:
valid情況
輸出寬和高的公式**分別為:
output_width = (in_width - filter_width + 1)/strides_width (結果問上取整)same情況output_height = (in_height - filter_height + 1)/strides_height (結果向上取整)
輸出的寬和高將與卷積核沒有關係,具休公式**如下:
out_height = in_height / strides_height (結果向上取整)這裡有乙個很重要的知識點一補零的規則,見如下**:out_width = in_width / strides_width (結果向上取整)
pad_height = max( (out_height - 1) x strides_height + filter_height - in_height,0)我們可以看到補零的規則是優先在輸入矩陣的右邊和底邊補零,例如補零的行數為三行則top一行,bottom兩行;如果補零的行數為一行,則補在bottom。因為filter是從左向右從上到下滑動的,所以滑動到右邊或者底邊的時候有可能會因為大步長而損失邊界資訊,所以優先在右邊和底邊補零。pad_width = max((out_width - 1) x strides_width + filter_width - in_width, 0)
pad_top = pad_height / 2(結果取整)
pad_bottom = pad_height - pad_ top
pad_left = pad_width / 2(結果取整)
pad_right = pad_width - pad_left
注:pad_height代表高度方向填充0的行數,pad_width代表寬度方向填充0的列數,以此類推。
卷積神經網路 有趣的卷積神經網路
一 前言 最近一直在研究深度學習,聯想起之前所學,感嘆數學是一門樸素而神奇的科學。f g m1 m2 r 萬有引力描述了宇宙星河運轉的規律,e mc 描述了恆星發光的奧秘,v h d哈勃定律描述了宇宙膨脹的奧秘,自然界的大部分現象和規律都可以用數學函式來描述,也就是可以求得乙個函式。神經網路 簡單又...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...
神經網路 卷積神經網路
1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...