用戶:pdeantihuman/沙盒
2024年1月1日;2022年1月1日;2020年1月1日;2019年1月1日;2018年1月1日;2017年1月1日;2016年3月21日;2014年8月26日;2013;1950
開發者 | www |
---|---|
當前版本 | 1.0.60([1]) |
原始碼庫 | github |
作業系統 | Windows、Linux |
許可協議 | GPLv3+ |
網站 | www |
libev 是一個全功能和高性能的事件循環庫,libev 參考並模仿了 libevent 和 perl 模塊 Event[2]。它用於GNU虛擬專用以太網[3]、rxvt-unicode[4]、auditd[5]、Deliantra MORPG[6]伺服器和客戶端以及許多其他程序。
原作者 | Marc Lehmann, Emanuele Giaquinta. |
---|---|
當前版本 | 4.31(2019年12月21日 | )
程式語言 | C語言 |
類型 | 網絡函式庫 |
許可協議 | GPLv2[7] |
libev 由 Marc Lehmann 和 Emanuele Giaquinta 創建,以GPLv2協議發佈[8]。
與 libevent 的區別
在設計理念上,創建 libev 是為了改進 libevent 中的一些架構決策[9]。例如,
- 全局變量的使用使得在多線程環境中很難安全地使用libevent。
- 觀察器結構很大,因為它們將輸入/輸出、時間和信號處理程序合二為一。
- 額外的組件(如http和dns伺服器)的實現質量參差不齊。
- 計時器不精確,不能很好地處理時間跳躍。
Libev 的解決方案是
- 不使用全局變量,而是每個函數都有一個循環上下文。
- 對每種事件類型使用小的觀察器(一個I/O觀察器在 x86_64 機器上使用 56 字節,而用 libevent 的話使用136位元組)。
- 沒有 http 庫等組件。libev 的功能非常少。
- 允許更多事件類型,例如基於Wall Clock或者單調時間的計時器、線程間中斷等等。
更簡單地說,libev 的設計遵循UNIX工具箱的哲學,儘可能好地只做一件事。
原作者 | Marc Lehmann, Emanuele Giaquinta. |
---|---|
當前版本 | 4.31(2019年12月21日 | )
程式語言 | C語言 |
類型 | 網絡函式庫 |
許可協議 | GPLv2[10] |
參考資料
CNN
機器學習與資料探勘 |
---|
此條目可參照外語維基百科相應條目來擴充。 |
卷積神經網絡(Convolutional Neural Network, CNN)是一種前饋神經網絡,它的類神經元可以響應一部分覆蓋範圍內的周圍單元,[11]對於大型圖像處理有出色表現。
卷積神經網絡由一個或多個卷積層和頂端的全連通層(對應經典的神經網絡)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網絡能夠利用輸入數據的二維結構。與其他深度學習結構相比,卷積神經網絡在圖像和語音辨識方面能夠給出更好的結果。這一模型也可以使用反向傳播演算法進行訓練。相比較其他深度、前饋神經網絡,卷積神經網絡需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構[12]。
定義
「卷積神經網絡」表示在網絡採用稱為卷積的數學運算。卷積是一種特殊的線性操作。卷積網絡是一種特殊的神經網絡,它們在至少一個層中使用卷積代替一般矩陣乘法
概覽
發展
結構
卷積神經網絡結構由一個輸出層,一個輸出層以及多個隱藏層組成。CNN的隱藏層一般包含多個卷積層。啟用功能一般是一個 ReLU 層。後面跟的是附加的層,例如卷積層,完全連接層和
卷積層
卷積層是由一系列參數濾波器,卷積層是一組平行的特徵圖(feature map),它通過在輸入圖像上滑動不同的卷積核並執行一定的運算而組成。此外,在每一個滑動的位置上,卷積核與輸入圖像之間會執行一個元素對應乘積並求和的運算以將感受野內的資訊投影到特徵圖中的一個元素。這一滑動的過程可稱爲步幅 ,步幅 是控制輸出特徵圖尺寸的一個因素。卷積核的尺寸要比輸入圖像小得多,且重疊或平行地作用於輸入圖像中,一張特徵圖中的所有元素都是通過一個卷積覈計算得出的,也即一張特徵圖共用了相同的權重和偏置項。
線性整流層
線性整流層(Rectified Linear Units layer, ReLU layer)使用線性整流(Rectified Linear Units, ReLU) 作為這一層神經的激勵函數(Activation function)。它可以增強判定函數和整個神經網絡的非線性特性,而本身並不會改變卷積層。
事實上,其他的一些函數也可以用於增強網絡的非線性特性,如雙曲正切函數 , ,或者Sigmoid函數 。相比其它函數來說,ReLU函數更受青睞,這是因為它可以將神經網絡的訓練速度提升數倍[13],而並不會對模型的泛化準確度造成顯著影響。
池化層
池化(Pooling)是卷積神經網絡中另一個重要的概念,它實際上是一種非線性形式的降採樣。有多種不同形式的非線性池化函數,而其中「最大池化(Max pooling)」是最為常見的。它是將輸入的圖像劃分為若干個矩形區域,對每個子區域輸出最大值。
直覺上,這種機制能夠有效地原因在於,一個特徵的精確位置遠不及它相對於其他特徵的粗略位置重要。池化層會不斷地減小數據的空間大小,因此參數的數量和計算量也會下降,這在一定程度上也控制了過擬合。通常來說,CNN的網絡結構中的卷積層之間都會周期性地插入池化層。池化操作提供了另一種形式的平移不變性。因為卷積核是一種特徵發現器,我們通過卷積層可以很容易地發現圖像中的各種邊緣。但是卷積層發現的特徵往往過於精確,我們即使高速連拍拍攝一個物體,相片中的物體的邊緣像素位置也不大可能完全一致,通過池化層我們可以降低卷積層對邊緣的敏感性。
池化層每次在一個池化窗口(depth slice)上計算輸出,然後根據步幅移動池化窗口。下圖是目前最常用的池化層,步幅為2,池化窗口為 的二維最大池化層。每隔2個元素從圖像劃分出 的區塊,然後對每個區塊中的4個數取最大值。這將會減少75%的數據量。
除了最大池化之外,池化層也可以使用其他池化函數,例如「平均池化」甚至「L2-範數池化」等。過去,平均池化的使用曾經較為廣泛,但是最近由於最大池化在實踐中的表現更好,平均池化已經不太常用。
由於池化層過快地減少了數據的大小,目前文獻中的趨勢是使用較小的池化濾鏡,[14]甚至不再使用池化層。[15]
RoI池化(Region of Interest)是最大池化的變體,其中輸出大小是固定的,輸入矩形是一個參數。[16]
池化層是基於 Fast-RCNN [17]架構的卷積神經網絡的一個重要組成部分。
完全連接層
最後,在經過幾個卷積和最大池化層之後,神經網絡中的進階推理通過完全連接層來完成。就和常規的非卷積類神經網絡中一樣,完全連接層中的神經元與前一層中的所有啟用都有聯絡。因此,它們的啟用可以作為仿射變換來計算,也就是先乘以一個矩陣然後加上一個偏差(bias)偏移量(向量加上一個固定的或者學習來的偏差量)。
損失函數層
損失函數層(loss layer)用於決定訓練過程如何來「懲罰」網絡的預測結果和真實結果之間的差異,它通常是網絡的最後一層。各種不同的損失函數適用於不同類型的任務。例如,Softmax交叉熵損失函數常常被用於在K個類別中選出一個,而Sigmoid交叉熵損失函數常常用於多個獨立的二分類問題。歐幾里德損失函數常常用於標籤取值範圍為任意實數的問題。
應用
影像辨識
卷積神經網絡通常在影像辨識系統中使用。
視像分析
相比影像辨識問題,視像分析要難許多。CNN也常被用於這類問題。
自然語言處理
卷積神經網絡也常被用於自然語言處理。 CNN的模型被證明可以有效的處理各種自然語言處理的問題,如語意分析[18]、搜尋結果提取[19]、句子建模[20] 、分類[21]、預測[22]、和其他傳統的NLP任務[23] 等。
藥物發現
卷積神經網路已在藥物發現中使用。卷積神經網絡被用來預測的分子與蛋白質之間的相互作用,以此來尋找靶向位點,尋找出更可能安全和有效的潛在治療方法。
圍棋
卷積神經網絡在電腦圍棋領域也被使用。2016年3月,AlphaGo對戰李世乭的比賽,展示了深度學習在圍棋領域的重大突破。
微調(fine-tuning)
卷積神經網絡(例如Alexnet、VGG網絡)在網絡的最後通常為softmax分類器。微調一般用來調整softmax分類器的分類數。例如原網絡可以分類出2種圖像,需要增加1個新的分類從而使網絡可以分類出3種圖像。微調(fine-tuning)可以留用之前訓練的大多數參數,從而達到快速訓練收斂的效果。例如保留各個卷積層,只重構卷積層後的全連接層與softmax層即可。
經典模型
可用包
- roNNie: 是一個簡易入門級框架,使用Tensorflow 計算層.可於python下載 pip3 ronnie
- Caffe: Caffe包含了CNN使用最廣泛的庫。它由伯克利視覺和學習中心(BVLC)研發,擁有比一般實現更好的結構和更快的速度。同時支援CPU和GPU計算,底層由C++實現,並封裝了Python和MATLAB的介面。
- Torch7(www.torch.ch)
- OverFeat
- Cuda-convnet
- MatConvnet
- Theano:用Python實現的神經網絡包[24]
- TensorFlow
- Paddlepaddle(www.paddlepaddle.org)
- Keras
參考
- ^ Ventoy releases. GitHub. ventoy.net. [2021-04-22]. (原始內容存檔於2021-04-10).
- ^ libev 的 README. [2020-02-25].
- ^ gvpe. software.schmorp.de. [2020-02-24].
- ^ rxvt-unicode. software.schmorp.de. [2020-02-24].
- ^ Audit. people.redhat.com. [2020-02-24].
- ^ Deliantra MMORPG. www.deliantra.net. [2020-02-24].
- ^ LICENSE. Github. [25 Feburary 2020].
- ^ LICENSE. [2020-02-25].
- ^ What's the difference between libev and libevent?. Stack Overflow. [2020-02-24].
- ^ LICENSE. Github. [25 Feburary 2020].
- ^ Convolutional Neural Networks (LeNet) - DeepLearning 0.1 documentation. DeepLearning 0.1. LISA Lab. [31 August 2013].
- ^ Convolutional Neural Network. [2014-09-16].
- ^ Krizhevsky, A.; Sutskever, I.; Hinton, G. E. Imagenet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems. 2012, 1: 1097–1105. (原始內容存檔於2015-02-16).
- ^ Graham, Benjamin. Fractional Max-Pooling. 2014-12-18. arXiv:1412.6071 [cs.CV].
- ^ Springenberg, Jost Tobias; Dosovitskiy, Alexey; Brox, Thomas; Riedmiller, Martin. Striving for Simplicity: The All Convolutional Net. 2014-12-21. arXiv:1412.6806 [cs.LG].
- ^ Grel, Tomasz. Region of interest pooling explained. deepsense.io. 2017-02-28 (英語).
- ^ Girshick, Ross. Fast R-CNN. 2015-09-27. arXiv:1504.08083 [cs.CV].
- ^ Grefenstette, Edward; Blunsom, Phil; de Freitas, Nando; Hermann, Karl Moritz. A Deep Architecture for Semantic Parsing. 2014-04-29. arXiv:1404.7296 [cs.CL].
- ^ Learning Semantic Representations Using Convolutional Neural Networks for Web Search – Microsoft Research. research.microsoft.com. [2015-12-17].
- ^ Kalchbrenner, Nal; Grefenstette, Edward; Blunsom, Phil. A Convolutional Neural Network for Modelling Sentences. 2014-04-08. arXiv:1404.2188 [cs.CL].
- ^ Kim, Yoon. Convolutional Neural Networks for Sentence Classification. 2014-08-25. arXiv:1408.5882 [cs.CL].
- ^ Collobert, Ronan, and Jason Weston. "A unified architecture for natural language processing: Deep neural networks with multitask learning."Proceedings of the 25th international conference on Machine learning. ACM, 2008.
- ^ Collobert, Ronan; Weston, Jason; Bottou, Leon; Karlen, Michael; Kavukcuoglu, Koray; Kuksa, Pavel. Natural Language Processing (almost) from Scratch. 2011-03-02. arXiv:1103.0398 [cs.LG].
- ^ 深度網絡:Theano專案首頁。