1. 程式人生 > >卷積操作中特徵值大小的計算

卷積操作中特徵值大小的計算

感想

今年對我來說是非常重要的一年,面臨著找工作和發論文的壓力,因此,我打算把我機器學習刷題之路記錄下來,我認為刷題要把原理弄明白,所以我整理了分析的內容,作為對自己的提高,也希望對大家能夠有所幫助。

Problem

輸入圖片大小為200×200,依次經過一層卷積(kernel size 5×5,padding 1,stride 2),pooling(kernel size 3×3,padding 0,stride 1),又一層卷積(kernel size 3×3,padding 1,stride 1)之後,輸出特徵圖大小為:

答案:97

analysis

計算尺寸不被整除只在GoogLeNet中遇到過。卷積向下取整,池化向上取整。

(200-5+2*1)/2+1 為99.5,取99

(99-3)/1+1 為97

(97-3+2*1)/1+1 為97

答案是算出來了,我總感覺有點問題,後面的+1有點怪怪的

而我搜索的公式是下面這樣的:

這裡提供一個計算每一層輸出影象的size的公式。無論是卷積層還是pooling層,公式都是這樣的:

(( input_size + 2*padding - kernel_size ) / stride ) +1= output_size

其中,padding指對input的影象邊界補充一定數量的畫素,目的是為了計算位於影象邊界的畫素點的卷積響應;kernel_size指卷積核的大小;stride指步長,即卷積核或者pooling視窗的滑動位移。另外需要注意,上面公式建立在所有引數都為整數的假設基礎上。

如果padding在題目中指的是圖片外圍補充邊界的話,我模擬手算了一下,確實是這樣的,可能題目就是題目,我們要按照題目的意思來才行吧。

參考文獻

[1].卷積神經網路.http://blog.csdn.net/l281865263/article/details/46378149

[2].機器學習筆試題.http://blog.csdn.net/u011204487/article/details/77370278

相關推薦

操作特徵值大小計算

感想 今年對我來說是非常重要的一年,面臨著找工作和發論文的壓力,因此,我打算把我機器學習刷題之路記錄下來,我認為刷題要把原理弄明白,所以我整理了分析的內容,作為對自己的提高,也希望對大家能夠有所幫助。 Problem 輸入圖片大小為200×200,依次經過一層卷積(

TensorFlow與caffe層feature map大小計算

剛剛接觸Tensorflow,由於是做影象處理,因此接觸比較多的還是卷及神經網路,其中會涉及到在經過卷積層或者pooling層之後,影象Feature map的大小計算,之前一直以為是與caffe相同的,後來查閱了資料發現並不相同,將計算公式貼在這裡,以便查閱: caffe中: TF中:

深度學習:圖片或濾波器操作後輸出大小計算 stride vs padding

先定義幾個引數 輸入圖片大小 W×W Filter大小 F×F (相當於卷積核大小,也可看作濾波器大小,卷積也是一種濾波) 步長 S(stride) padding的畫素個數 P 於是我們可以得出 N = (W − F + 2P )/S

理解影象操作的含義

上文用生動的例子來解釋卷積記載了卷積的含義,現在就來看看卷積在影象處理中的應用吧。(ps:本文大部分內容系轉載大神的部落格,現在csdn強制圖片水印,實在感到很無奈!!!) 數字影象處理中卷積 數字影象是一個二維的離散訊號,對數字影象做卷積操作其實就是利用卷

手動實現神經網路操作(conv2d)

寫這個的原因:一來好像沒怎麼搜到別人手動實現,作為補充;二來鞏固一下基礎。 卷積操作示意 先從一張示意圖說起,卷積基礎概念和操作步驟就不囉嗦了,只講這張圖,大意就是,有in-channel,有out-channel,你需要把in-channel都做卷積操作,然

CNN操作

CNN中的卷積 很多文章都介紹過卷積的操作:用一個小的卷積核在影象上滑動,每次滑動計算出一個值,比如用3*3的卷積核卷積一個5*5的矩陣(不考慮擴充套件邊緣),過程如下: 卷積操作在二維平面上很好理解,但是在CNN中,被卷積的矩陣是有深度的: 這個

網絡輸出尺寸計算

卷積 步長 圖片 網絡 lock 素數 是我 大小 我們 先定義幾個參數 輸入圖片大小 W×W Filter大小 F×F 步長 S padding的像素數 P 於是我們可以得出 N = (W ? F + 2P )/S+1 卷積網絡輸出尺寸計算

caffe原始碼深入學習6:超級詳細的im2col繪圖解析,分析caffe操作的底層實現

在先前的兩篇部落格中,筆者詳細解析了caffe卷積層的定義與實現,可是在conv_layer.cpp與base_conv_layer.cpp中,卷積操作的實現仍然被隱藏,通過im2col_cpu函式和caffe_cpu_gemm函式(後者實現矩陣乘法)實現,在此篇部落格中,筆者旨在向大家展示,caf

0024-利用OpenCV的filter2D函式作影象的操作和協相關操作

影象的卷積操作是影象處理中最常用的操作之一,一般是用核算子來實現卷積操作。什麼叫核算子?請移步博文https://blog.csdn.net/lehuoziyuan/article/details/84101788 OpenCV用函式filter2D來實現對影象或矩陣的卷積操作。這個函式本質上做

運算的兩種padding的取值,VALID和SAME

模板來源於(https://blog.csdn.net/wuzqchom/article/details/74785643) 加入了一些自己的理解 在用tensorflow寫CNN的時候,呼叫卷積核api的時候,會有填padding方式的引數,找到原始碼中的函式定義如下(max pooling也

pytorch 自定義核進行操作

一 卷積操作:在pytorch搭建起網路時,大家通常都使用已有的框架進行訓練,在網路中使用最多就是卷積操作,最熟悉不過的就是 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation

後feature map尺寸計算公式

畫素寬度:W(Width) 填充大小:P(Padding) 卷積核大小:K(Kernel-size) 步長大小:S(stride)   卷積後所得feature map尺寸大小計算公式如下:   補充: 1.Padding的作用用於解決影象邊

OpenCV--如何對影象進行操作(9)

附程式碼如下: import cv2 as cv import numpy as np def blur1(): src = cv.imread("D:/matplotlib/0.jpg") cv.imshow("input",src) blur2 = cv.blur(

總結CNN的發展歷程,以及一些操作的變形,附帶基礎的深度學習知識與公式

1.Lenet-5  :最先出現的卷積神經網路,1998年,由於當時的硬體還不成熟,因此到了2012年出現了AlexNet 2.AlexNet:可以說是現在卷積神經網路的雛形 3.VGGNet:五個模組的卷積疊加,網路結構如下: 4.GoogleNet:ince

操作和反捲操作的數學解釋

三個月沒更新了啊,回來更一發~~ csdn上主要講一些coding過程中遇到的函式,問題,解決方案。偏實踐 另外,如果你想看一些理論方面的東西,歡迎加我的知乎知乎主頁 csdn私信幾乎不看,有問題交流可以發郵箱:[email protec

對深度學習操作的理解

本文介紹對了對卷積核、濾波器、通道等概念的理解。 二維卷積 二維卷積就是卷積核(指的是一個小的權值矩陣)在二維輸入資料上滑動遍歷整張圖片,對當前輸入的部分元素進行矩陣乘法,將一個二維矩陣轉換為另一個二維矩陣,然後將結果輸出,輸出特徵實際上是在輸入資料相同位置

神經網路的引數計算

前言 這篇文章會簡單寫一下卷積神經網路上引數的計算方法,然後計算各個常見神經網路的引數。一個是加強對網路結構的瞭解,另一方面對網路引數的量級有一個大概的認識,也可以當作備忘錄,免得想知道的時候還要再算。 引數計算方法 全連線的引數計算就不說了,比較簡單。 首先,

AndroidBitmap大小計算

Bitmap.Config是Bitmap中的一個內部類,在Bitmap類裡createBitmap(intwidth, int height, Bitmap.Config config)方法裡會用到,打開個這個類一看 public static final Bitm

CNN後輸出size的計算

來個詳細版的如下:來個簡版的如下:padding =“SAME”的情況:這裡插一句幫助理解:自動補全的話,考慮步長為1,每一卷積從第一個維度開始一步一步移動,直到最後一個維度,那麼輸出肯定是和原來的維度一樣,如果步長不是1比如為2 就要向上取整。比如7*7的影象採用3*3大小

深度學習介紹(四)操作

接下來介紹一下,CNNs是如何利用空間結構減少需要學習的引數數目的 如果我們有一張1000x1000畫素的影象,有1百萬個隱層神經元,那麼他們全連線的話(每個隱層神經元都與影象的每一個畫素點相連),這樣就有1000x1000x1000000=10^12個連線,