日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Github标星10.4k:用 NumPy 实现所有主流机器学习模型

發布時間:2025/3/12 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Github标星10.4k:用 NumPy 实现所有主流机器学习模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用 NumPy 手寫所有主流 ML 模型,普林斯頓博士后 David Bourgin 最近開源了一個非常剽悍的項目。超過 3 萬行代碼、30 多個模型,這也許能打造「最強」的機器學習基石?(編輯:機器之心)

項目簡介

NumPy 作為 Python 生態中最受歡迎的科學計算包,很多讀者已經非常熟悉它了。它為 Python 提供高效率的多維數組計算,并提供了一系列高等數學函數,我們可以快速搭建模型的整個計算流程。毫不負責任地說,NumPy 就是現代深度學習框架的「爸爸」。

盡管目前使用 ?寫模型已經不是主流,但這種方式依然不失為是理解底層架構和深度學習原理的好方法。最近,來自普林斯頓的一位博士后將 NumPy 實現的所有機器學習模型全部開源,并提供了相應的論文和一些實現的測試效果。

  • 項目地址:https://github.com/ddbourgin/numpy-ml

根據機器之心的粗略估計,該項目大約有 30 個主要機器學習模型,此外還有 15 個用于預處理和計算的小工具,全部.py 文件數量有 62 個之多。平均每個模型的代碼行數在 500 行以上,在神經網絡模型的 layer.py 文件中,代碼行數接近 4000。
這,應該是目前用 NumPy 手寫機器學習模型的「最高境界」吧。
誰用 NumPy 手推了一大波 ML 模型
通過項目的代碼目錄,我們能發現,作者基本上把主流模型都實現了一遍,這個工作量簡直驚為天人。我們發現作者 David Bourgin 也是一位大神,他于 2018 年獲得加州大學伯克利分校計算認知科學博士學位,隨后在普林斯頓大學從事博士后研究。
盡管畢業不久,David 在頂級期刊與計算機會議上都發表了一些優秀論文。在最近結束的 ICML 2019 中,其關于認知模型先驗的研究就被接收為少有的 Oral 論文。
David Bourgin 小哥哥就是用 NumPy 手寫 ML 模型、手推反向傳播的大神。這么多的工作量,當然還是需要很多參考資源的,David 會理解這些資源或實現,并以一種更易讀的方式寫出來。
正如 reddit 讀者所質疑的:在 autograd repo 中已經有很多這樣的例子,為什么你還要做這個項目?
作者表示,他的確從 autograd repo 學到了很多,但二者的不同之處在于,他顯式地進行了所有梯度計算,以突出概念/數學的清晰性。當然,這么做的缺點也很明顯,在每次需要微分一個新函數時,你都要寫出它的公式……
估計 David Bourgin 小哥哥在寫完這個項目后,機器學習基礎已經極其牢固了。最后,David 表示下一步會添加文檔和示例,以方便大家使用。
項目總體介紹
這個項目最大的特點是作者把機器學習模型都用 NumPy 手寫了一遍,包括更顯式的梯度計算和反向傳播過程??梢哉f它就是一個機器學習框架了,只不過代碼可讀性會強很多。
David Bourgin 表示他一直在慢慢寫或收集不同模型與模塊的純 NumPy 實現,它們跑起來可能沒那么快,但是模型的具體過程一定足夠直觀。每當我們想了解模型 API 背后的實現,卻又不想看復雜的框架代碼,那么它可以作為快速的參考。
文章后面會具體介紹整個項目都有什么模型,這里先簡要介紹它的整體結構。如下所示為項目文件,不同的文件夾即不同種類的代碼集。

在每一個代碼集下,作者都會提供不同實現的參考資料,例如模型的效果示例圖、參考論文和參考鏈接等。如下所示,David 在實現神經網絡層級的過程中,還提供了參考論文。

當然如此龐大的代碼總會存在一些 Bug,作者也非常希望我們能一起完善這些實現。如果我們以前用純 NumPy 實現過某些好玩的模型,那也可以直接提交 PR 請求。因為實現基本上都只依賴于 NumPy,那么環境配置就簡單很多了,大家差不多都能跑得動。

主要內容

手寫 NumPy 全家福
作者在 GitHub 中提供了模型/模塊的實現列表,列表結構基本就是代碼文件的結構了。整體上,模型主要分為兩部分,即傳統機器學習模型與主流的深度學習模型。
其中淺層模型既有隱馬爾可夫模型和提升方法這樣的復雜模型,也包含了線性回歸或最近鄰等經典方法。而深度模型則主要從各種模塊、層級、、最優化器等角度搭建代碼架構,從而能快速構建各種神經網絡。
除了模型外,整個項目還有一些輔助模塊,包括一堆預處理相關的組件和有用的小工具。
該 repo 的模型或代碼結構如下所示:
1. 高斯混合模型

  • EM 訓練

2. 隱馬爾可夫模型

  • 維特比解碼

  • 似然計算

  • 通過 Baum-Welch/forward-backward 算法進行 MLE 參數估計

3. 隱狄利克雷分配模型(主題模型)

  • 用變分 EM 進行 MLE 參數估計的標準模型

  • 用 MCMC 進行 MAP 參數估計的平滑模型

4. 神經網絡
4.1 層/層級運算

  • Add

  • Flatten

  • Multiply

  • Softmax

  • 全連接/Dense

  • 稀疏進化連接

  • LSTM

  • Elman 風格的 RNN

  • 最大+平均池化

  • 點積注意力

  • 受限玻爾茲曼機 (w. CD-n training)

  • 2D 轉置卷積 (w. padding 和 stride)

  • 2D 卷積 (w. padding、dilation 和 stride)

  • 1D 卷積 (w. padding、dilation、stride 和 causality)

4.2 模塊

  • 雙向 LSTM

  • ResNet 風格的殘差塊(恒等變換和卷積)

  • WaveNet 風格的殘差塊(帶有擴張因果卷積)

  • Transformer 風格的多頭縮放點積注意力

4.3 正則化項

  • Dropout

  • 歸一化

  • 批歸一化(時間上和空間上)

  • 層歸一化(時間上和空間上)

4.4 優化器

  • SGD w/ 動量

  • AdaGrad

  • RMSProp

4.5 學習率調度器

  • 常數

  • 指數

  • Noam/Transformer

  • Dlib 調度器

4.6 權重初始化器

  • Glorot/Xavier uniform 和 normal

  • He/Kaiming uniform 和 normal

  • 標準和截斷正態分布初始化

4.7 損失

  • 交叉熵

  • 平方差

  • Bernoulli VAE 損失

  • 帶有梯度懲罰的 Wasserstein 損失

4.8 激活函數

  • ReLU

  • Tanh

  • Affine

  • Sigmoid

  • Leaky ReLU

4.9 模型

  • Bernoulli 變分自編碼器

  • 帶有梯度懲罰的 Wasserstein GAN

4.10 神經網絡工具

  • col2im (MATLAB 端口)

  • im2col (MATLAB 端口)

  • conv1D

  • conv2D

  • deconv2D

  • minibatch

5. 基于樹的模型

  • 決策樹 (CART)

  • [Bagging] 隨機森林

  • [Boosting] 梯度提升決策樹

6. 線性模型

  • 嶺回歸

  • Logistic 回歸

  • 最小二乘法

  • 貝葉斯線性回歸 w/共軛先驗

7.n 元序列模型

  • 最大似然得分

  • Additive/Lidstone 平滑

  • 簡單 Good-Turing 平滑

8. 強化學習模型

  • 使用交叉熵方法的智能體

  • 首次訪問 on-policy 蒙特卡羅智能體

  • 加權增量重要采樣蒙特卡羅智能體

  • Expected SARSA 智能體

  • TD-0 Q-learning 智能體

  • Dyna-Q / Dyna-Q+ 優先掃描

9. 非參數模型

  • Nadaraya-Watson 核回歸

  • k 最近鄰分類與回歸

10. 預處理

  • 離散傅立葉變換 (1D 信號)

  • 雙線性插值 (2D 信號)

  • 最近鄰插值 (1D 和 2D 信號)

  • 自相關 (1D 信號)

  • 信號窗口

  • 文本分詞

  • 特征哈希

  • 特征標準化

  • One-hot 編碼/解碼

  • Huffman 編碼/解碼

  • 詞頻逆文檔頻率編碼

11. 工具

  • 相似度核

  • 距離度量

  • 優先級隊列

  • Ball tree 數據結構

項目示例
由于代碼量龐大,機器之心在這里整理了一些示例。

例如,實現點積注意力機制:

class?DotProductAttention(LayerBase):def?__init__(self,?scale=True,?dropout_p=0,?init="glorot_uniform",?optimizer=None):super().__init__(optimizer)self.init?=?initself.scale?=?scaleself.dropout_p?=?dropout_pself.optimizer?=?self.optimizerself._init_params()def?_fwd(self,?Q,?K,?V):scale?=?1?/?np.sqrt(Q.shape[-1])?if?self.scale?else?1scores?=?Q?@?K.swapaxes(-2,?-1)?*?scale??#?attention?scoresweights?=?self.softmax.forward(scores)??#?attention?weightsY?=?weights?@?Vreturn?Y,?weightsdef?_bwd(self,?dy,?q,?k,?v,?weights):d_k?=?k.shape[-1]scale?=?1?/?np.sqrt(d_k)?if?self.scale?else?1dV?=?weights.swapaxes(-2,?-1)?@?dydWeights?=?dy?@?v.swapaxes(-2,?-1)dScores?=?self.softmax.backward(dWeights)dQ?=?dScores?@?k?*?scaledK?=?dScores.swapaxes(-2,?-1)?@?q?*?scalereturn?dQ,?dK,?dV

在以上代碼中,Q、K、V 三個向量輸入到「_fwd」函數中,用于計算每個向量的注意力分數,并通過 softmax 的方式得到權重。而「_bwd」函數則計算 V、注意力權重、注意力分數、Q 和 K 的梯度,用于更新網絡權重。

在一些實現中,作者也進行了測試,并給出了測試結果。如圖為隱狄利克雷(Latent Dirichlet allocation,LDA)實現進行文本聚類的結果。左圖為詞語在特定主題中的分布熱力圖。右圖則為文檔在特定主題中的分布熱力圖。
_圖注:_隱狄利克雷分布實現的效果。

打包下載

如果訪問Github困難的朋友,可以用百度云下載。

下載方式:

1.百度云下載:

鏈接:https://pan.baidu.com/s/1zM09GiI7eP87p6wExYUAaA?

提取碼:t666?

2.(備選)關注公眾號,回復“numpy-ml”可以獲取下載地址。

總結

以上是生活随笔為你收集整理的Github标星10.4k:用 NumPy 实现所有主流机器学习模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区黄 | 男女污污网站 | 91久色视频 | 可以免费看的av毛片 | 国产精品毛片久久久久久久av | 色综合天天综合网天天看片 | 精品亚洲一区二区三区四区五区 | 久草久 | 国产精品久久精品三级 | 人成网站在线观看 | 亚洲一区天堂 | 好吊妞视频在线观看 | 成人a在线 | 欧美精品观看 | 777色| www.欧美亚洲 | 国产xxxxwwww | 麻豆伊甸园 | 青娱网电信一区电信二区电信三区 | yy色综合 | www婷婷av久久久影片 | 色悠悠久久综合 | 中字幕视频在线永久在线观看免费 | 91av观看| xxxxxx日本 | 精品国产一区二区三区在线观看 | 亚洲免费看av | 亚洲国产精品免费在线观看 | 国产日韩一级 | 国产综合精品久久久久成人影 | 亚洲а∨天堂久久精品2021 | 天天噜 | 国产视频精品自拍 | 诱惑の诱惑筱田优在线播放 | 中文字幕一区二区免费 | 美女啪啪网 | 久久伊人免费 | 伊人春色在线视频 | 黄色工厂在线观看 | 国产老女人乱淫免费可以 | 手机看片1024国产 | 三级艳丽杨钰莹三级 | 亚洲视频在线一区 | 第四色成人网 | 国产日韩一区二区在线 | 91色噜噜| av色图片 | 羞羞成人| 国产精品理论在线观看 | 四川少妇xxx奶大xxx | 日不卡| www.奇米.com | 亚洲午夜久久久久 | 四虎成人在线 | 我会温柔一点的日剧 | 成人v| 蜜臀视频网站 | 成人在线免费看片 | 国产精品福利小视频 | 黑人高潮一区二区三区在线看 | 欧美人吸奶水吃奶水 | 国产精品久久久国产盗摄 | 国产无套粉嫩白浆内谢 | 天堂中文资源在线观看 | 欧洲成人在线视频 | 亚洲图片欧美激情 | 成人性生交大片免费看vrv66 | 日本激情视频 | 国产乱码精品一区二三赶尸艳谈 | 亚洲精品视频观看 | 国产噜噜噜 | 一起操网址 | 国产精品一区二区三区免费 | 免费在线播放视频 | 天天干天天噜 | 久久精视频 | 综合五月激情 | 麻豆精品国产传媒av | 久久特级毛片 | 日韩www视频 | 日本不卡一区二区三区在线观看 | 91在线看片 | 91日本在线| yjizz国产| 色先锋av| 操比视频网站 | 特黄特色特刺激免费播放 | 麻豆免费视频 | 午夜在线视频观看 | 亚洲av永久无码精品国产精品 | 色播在线| 日韩网站在线播放 | 老司机伊人 | 成人涩涩视频 | 日韩一区二区三区网站 | 8x8ⅹ国产精品一区二区二区 | 国产小视频91 | 国产精品污视频 | 双女主黄文 |