㈠ 數學排列組合中 那個Cnn Pnn 還有Ann 是什麼意思
P和A是一樣的,都是排列,P是舊用法,現在教材上多用A,從M個元素取N個進行排列,就是說取出來N個之後,這N個還要排序,求得是排序的種數。
C是組合,就是只從M個里頭取N個,不排序,求得是取的種數。
A和C的關系就是Amn=Cmn×n!,其中的n!也就是N個數排列的種數,也就是他倆的區別。
Cnn=1 n個里選n個的組合只有一種。
Pnn=Ann=n!
㈡ C0n+C1n+C2n+……+Cnn=2^n 是什麼公式,請用具體數字舉個栗子,謝謝
這個是二項式定理來的。二項式定理高中書里有的,如下:
望採納,謝謝
㈢ 如何將cnn模型放到伺服器上運行
一、模型載入
用已經訓練好的模型來檢測,rcnn_model_file指模型路徑。
二、候選區域提取(Region proposals)
本論文採用selective search[3]方法生成候選區域,代碼作者以給出,rcnn代碼中的selective_search_boxes.m是根據selective search源代碼中的demo.m修改的,參數im是矩陣圖,不是圖片路徑,最後輸出格式為N * 4的矩陣,N表示region proposals 的個數,每行表示一個region proposal對角線坐標。
三、特徵提取(Feature extraction)
使用rcnn_features為每一個region proposals提取cnn特徵,輸出結果為N * 4096,每行表示一個region proposal的特徵。
四、分類(classification)
調用下面函數為每一個region proposal計算各類的score,結果為N * C 矩陣,C表示物體類別個數,每行表示一個region proposal對應各個類別的score。
㈣ 高中數學排列C0n(上0下n)一直加到Cnn,為什麼等於2∧n
組合的方法證明:
設有n個小球放到兩個不同的盒子中,盒子可以為空。
若對小球進行討論,每個小球有兩個選擇,共有2^n種放法。
若用分類原理,一號盒子中沒有小球的放法有cn0種,有一個小球的放法有cn1種,有兩個小球的放法有cn2種,有n個小球的放法有cnn種,共有放法cn0+cn1+cn2+…+cnn種顯然,兩種方法得到的結果相同,所以有cn0+cn1+cn2+…+cnn=2^n。
排列的定義:
從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同元素中取出m個元素的一個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號 A(n,m)表示。
計算公式:
此外規定0!=1(n!表示n(n-1)(n-2)...1,也就是6!=6x5x4x3x2x1。
組合的定義:從n個不同元素中,任取m(m≤n)個元素並成一組,叫做從n個不同元素中取出m個元素的一個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。用符號 C(n,m) 表示。
㈤ linux 如何運行benchmark循環跑
Linux 如何運行benchmark循環跑如下
benchmark中包含了跑benchmark的源碼benchncnn.cpp,感興趣的可以先看一下裡面的內容。在Linux的文件根目錄下,新建一個build文件夾並進入,當然也可以不叫build,隨便你自己起。mkdir build && cd build進入之後就可以進行編譯了,編譯之後在build文件夾下會生成一個叫benchmark的文件夾,之後的工作會在這里進行。編譯用的是cmake,這里如果有問題的話可以注意一下cmake的版本,我用的版本是3.12.3。具體命令如下:cmake .
make -j8這里cmake編譯實際上是要根據上一層文件夾的CMakeLists.txt的文本來的,這里的..其實就是表示的上一層文件夾。 Make -j後面的數字是開幾個核,根據自己電腦的實際情況來。執行完成之後就可以看到build里有了benchmark的文件夾。
入這個文件夾,可以看到一個benchncnn的可執行文件已經編譯好了,運行這個可執行文件就可以測試模型的速度。但是這個可執行文件默認的是找到當前文件夾下的param格式的文件。
所有自帶的模型文件都在ncnn根目錄下的benchmark的文件夾中,把裡面所有的param文件都拷貝到現在的benchmark文件夾,然後執行如下命令./benchncnn 4 2 0 -1
第一個數字表示測試次數,第二個表示開的線程數(這一點ncnn做的不錯),最後一個數字-1表示只測cpu。NCNN交叉編譯到rk3288(armv7架構)和rk3399(armv8架構)的方法。
㈥ 怎麼在windows下編譯fast rcnn需要的python版本的caffe介面
一、前期環境以及准備
1、安裝python
在caffe中,python2和python3的介面都有。但frcnn中只能支持python2.7,所以千萬不要裝成python3。為了方便,不用自己去pip一大堆庫,我建議安裝anaconda2,裡面已經安裝了很多第三方的庫。
另附python,Windows的第三方庫 ,裡面很全。或許有一些庫你要去官網上下載。
2、安裝(更新)顯卡驅動和cuda
NVIDIA的顯卡驅動安裝應該不用我說了吧,到官網上下載吧。我要說明一點的是,我的1080ti在安裝顯卡驅動時,說和Windows不匹配。怎麼解決呢?更新Windows,到官網上下驅動,再安裝。成功!還有就是記得更新你的顯卡驅動,以防老的驅動不支持cuda。
CUDA安裝的話,也是傻瓜試的安裝。提醒一點的是,不要改變他的安裝路徑,默認路徑。然後去NVIDIA的官網上下載cudnn庫,這個庫的話需要去NVIDIA注冊一個賬號,然後問你用這個來完成什麼工作之類的巴拉巴拉。這個庫長什麼樣呢?下載完解壓縮,得到一個cuda的文件夾,裡面有3個文件夾
然後打開你的CUDA文件夾,默認路徑是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
把cudnn庫裡面的3個文件夾裡面的文件,分別加到cuda裡面對應的文件夾。
然後打開cuda需要編譯的部分,默認路徑是C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
因為我用的VS2015,那麼我就用打開2015的那個,然後改成release運行。
至此,顯卡計算的環境就搭建完成了。
3、cmake和git
cmake的話,我建議直接下載編譯好的能運行的文件(到官網上下載),然後解壓文件,把bin的路徑添加到Path中。
git:因為frcnn裡面有很多linux的腳本,你可以不用,但用的話會很方便的。所以我建議安裝git。同樣,傻瓜式的安裝,直接到官網上下載。
二、py-faster-rcnn
1、編譯caffe的python介面GPU版本(如果你編譯過了就不用了)
因為frcnn的編譯過程用需要用到python的caffe包,所以必須要先編譯一次caffe。如果你已經編譯過caffe的py介面就不用了。
下載微軟的Caffe,git的地址
你可以用git直接下載,或者在git的地址里下載,隨便你。
[plain] view plain
git clone
cd caffe
git checkout windows
打開caffe\scripts,然後編輯build_win.cmd文件
第7行的VERSION是你VS的版本,VS2015對應的是14,VS2013對應的應該是12;第8行改為0;第9行改為0(如果你不用GPU,那就還是1);13行的python_version是你的python版本,2.x就是2,3.x就是3;24,28行是你的python的安裝目錄,如果你是anaconda就改你的anaconda的目錄,否則就不改。
同樣69-95行同樣修改。以上2張圖是我的cmake文件配置。
進入caffe\scripts,打開cmd,直接執行build_win.cmd。注意他會自動下載需要的庫,因為伺服器呢都不在國內,所以我建議掛個VPN,不然你且等呢吧。
這樣cmake後呢,python的介面就已經編譯好了,不用再編譯一遍了。把caffe\python下的caffe的文件夾到python的第三方包的文件夾就ok。
這樣caffe的python介面就好了,你可以進cmd的python試一下import caffe。如果說,他提示少了什麼包,你直接pip這個包就好了,找不到的話,網路一下就有。但只要你跟著上面我的方法做應該不會出現什麼問題。
2、編譯py-faster-rcnn依賴庫
首先呢,我們先去編譯一下frcnn的依賴庫。Windows下,不能使用自帶的lib,把自帶的lib刪了,重新下載,這里給出git的地址。
好了,現在你的庫應該長成這樣,有setup.py和setup_cuda.py。進cmd,install這2個文件。
現在你肯定會遇到問題,提示你VC版本不對
怎麼辦呢,先set一下:輸入SET VS90COMNTOOLS=%VS140COMNTOOLS%,VS後面的數字就是你的版本。還有不要忘了把你VS的c1.exe加到path下。
編譯好frcnn的依賴庫後,應該是這個樣子的。
3、給caffe加frcnn的層
現在,我們再下載一個caffe,跟前面一樣,把build_win.cmd進行修改。然後我們就可以把frcnn的一些特有的層加到caffe里編譯了。
1)添加層和文件
打開py-faster-rcnn\caffe-fast-rcnn\src\caffe\layers文件夾,找到4個文件分別為
然後到你新的caffe的對應文件夾caffe\src\caffe\layers里。
接著我們添加頭文件,打開py-faster-rcnn\caffe-fast-rcnn\include\caffe,把fast_rcnn_layers.hpp這文件到caffe的對應文件夾下caffe\include\caffe。
2)配置2個新層
打開你的caffe\src\caffe\proto下的caffe.proto,進行編輯。
在407行左右
往原來的文件里添加新的層的配置信息
[plain] view plain
optional ROIPoolingParameter roi_pooling_param = 8266711;
optional SmoothL1LossParameter smooth_l1_loss_param = 8266712;
message ROIPoolingParameter {
// Pad, kernel size, and stride are all given as a single value for equal
// dimensions in height and width or as Y, X pairs.
optional uint32 pooled_h = 1 [default = 0]; // The pooled output height
optional uint32 pooled_w = 2 [default = 0]; // The pooled output width
// Multiplicative spatial scale factor to translate ROI coords from their
// input scale to the scale used when pooling
optional float spatial_scale = 3 [default = 1];
}
message SmoothL1LossParameter {
// SmoothL1Loss(x) =
// 0.5 * (sigma * x) ** 2 -- if x < 1.0 / sigma / sigma
// |x| - 0.5 / sigma / sigma -- otherwise
optional float sigma = 1 [default = 1];
}
3)cmake新的caffe的python介面
就是再執行一遍build_win.cmd就行。編譯好之後,把caffe根目錄下的python文件夾替換py-faster-rcnn\caffe-fast-rcnn的python文件夾。
三、demo
完成以上步驟你的py-faster-rcnn就已經編譯成功了。如果你想用demo測試一下的話可以用.\data\scripts里的腳本去下載已經訓練好的model,文件挺大的、速度挺慢的。所以給大家提供一個網路5,把caffemodel文件放在data\faster_rcnn_models,然後執行tools\demo.py就能看到結果了
㈦ texcnn著作
《深入TextCNN》系列文章是結合PyTorch對TextCNN從理論到實戰的詳細教程。
對於文本分類問題,常見的方法無非就是抽取文本的特徵,比如使用doc2evc或者LDA模型將文本轉換成一個固定維度的特徵向量,然後在基於抽取的特徵訓練一個分類器。 然而研究證明,TextCnn在文本分類問題上有著更加卓越的表現。從直觀上理解,TextCNN通過一維卷積來獲取句子中n-gram的特徵表示。TextCNN對文本淺層特徵的抽取能力很強,在短文本領域如搜索、對話領域專注於意圖分類時效果很好,應用廣泛,且速度快,一般是首選;對長文本領域,TextCNN主要靠filter窗口抽取特徵,在長距離建模方面能力受限,且對語序不敏感。
㈧ 如何把cnn分類程序變為回歸程序
你要看你的圖像是什麼。如果是彩色數字,先轉成灰度。用MNIST訓練網路。如果是各種主題,用彩色的imageNET訓練。如果你的數據量大到足以與數據集媲美,那麼直接用你的數據訓練網路即可。
在流行的數據集上訓練完,你需要固定卷積池化層,只訓練後面的全連接層參數,用你自己的數據集。
CNN一是調整網路結構,幾層卷積幾層池化,卷積的模板大小等。而是在確定結構上調整參數,weight scale,learning rate,reg等。
你用CNN做圖像分類,無非是把CNN當成學習特徵的手段,你可以吧網路看成兩部分,前面的卷積層學習圖像基本-中等-高層特徵,後面的全連接層對應普通的神經網路做分類。
需要學習的話,首先你去看UFLDL教程。然後cs231n
與其問別人,首先你看了imageNet數據集了嗎?
對於把流行數據集與自己數據混合訓練模型的方法。如果兩種數據十分相似,也未嘗不可。但是對於流行數據集而言,自己的標注數據量一般不會太大,如果是1:1000,1:100這種比例,那麼可能不加自己的數據,完全用數據集訓練的模型就能得到一個還好的結果。
如果自己的數據和數據集有些差別,那混在一起我認為自己的是在用自己的數據當做雜訊加到數據集中。cnn認為圖像是局部相關的,而欺騙CNN的方法則主要出於,自然圖像分布在一種流形結構中,訓練的模型需要這種流形假設,而人工合成的圖像由於添加非自然噪點,不滿足模型假設,所以能用肉眼難分辨的雜訊嚴重干擾分類結果。
如果二者相差過大,數據集是一種分布,你的數據是另一種,放到一起訓練,我沒試過,但我認為結果不會太好。
這時候只能把數據集用來訓練cnn的特徵提取能力。而後用於分類的全連接層,視你的數據量調整規模。
㈨ 文本分類用cnn還是rnn
這裡面有幾個關鍵點:一個是文本跟圖片不一樣,圖片有長寬,然後還有深度(RGB)。對應到文本上,假設文章總共N個詞,每個詞嵌入維度K維,那麼輸入是N * K的,N可以理解為高度,K作為長度,深度為1。那麼卷積的時候的特徵抽取器(filter)高度h一般設置多大呢?一般可以從3開始
㈩ cnn+ctc的實驗,如何利用tensorflow的ctc_loss去實現
batch為10意思是你一個批次計算10個數據樣本,每一個數據樣本的形式應該是m*n的矩陣,所以你的實際輸入是10*m*n的三維矩陣,其中m為time_step,n為feature_num;經過卷積和全連接後你的輸出是10*p*q,其中q表示m經過卷積運算後得到的time_step,可能等於m也可能不等於,看你的卷積核設置。q為num_classes,最後一層的全連接是輸出層,用來做分類的,num_classes就是數據集對應的類別數(實際類別 + 1個空白類 )