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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

breeze源码阅读心得

發布時間:2025/5/22 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 breeze源码阅读心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在閱讀Spark ML源碼的過程中,發現很多機器學習中的優化問題,都是直接調用breeze庫解決的,因此拿來breeze源碼想一探究竟。整體來看,breeze是一個用scala實現的基礎數學庫,breeze之于Spark ML,就像numpy和scipy之于sklearn一樣,很多Spark ML中的優化問題,看到后面發現都是在breeze庫中解決的,對于有志于理解底層實現的朋友來說,breeze是一本很好的教科書。 雖然breeze僅2.5MB代碼,比Spark ML僅多了40%,但閱讀的難度大不少,因為breeze相對更偏底層,用到了很多scala語言的核心特征,尤其是scala的類型系統和隱式轉換,如果這兩部分功底不足閱讀上會有很大障礙,這里推薦一本書,Scala in Depth,都說中文版翻譯的很差,我也沒讀過,還是直接看英文版吧,講的很清楚。 啰啰嗦嗦一大堆,現在就領著大家走馬觀花的逛一逛breeze這個庫,筆者也是工作之余在看,接觸沒多久,還請高手指教。 閱讀的起點最好是generic文件夾,其中包含了breeze中最底層的UFunc特征,這是用來表達breeze中操作、函數等一系列內容的基礎類,它主要是提供了一大堆模板,用來產生具體的操作和函數,代碼晦澀難懂,如果實在看不懂可以跳過,知道這是一個關于操作和函數的底層基礎類就好了。另外還包含了Multimethod.scala,這個特征用來提供一些注冊器,產生一個方法時,我們可以先在這里注冊,當我們需要用到一個方法的時候,它可以利用動態反射原理,在已注冊方法中挑選出合適的方法返回。具體應用我也沒搞清。 接下來就可以進入math庫看看了,這里面包含了很多基礎數學的結構,需要一定的集合論知識。首先,是Semiring, Ring, Field,分別代表半環、環、域,分別定義了各自的基礎結構,其中,大多數實際定義都在Field中,因為域是三者中要求最高、也最具體的集合類型,而Semiring和Ring中的內容,都是從Field中遷移過去的。然后是Complex.scala,定義了復數,以及相關的很多操作,LogDouble.scala,定義了對數表示的各種運算,MatrixNorms.scala,定義了各類矩陣Norm的計算方法,PowImplicits.scala,利用隱式轉換,為各類基礎方法加入了pow方法(隱式轉換的典型應用:擴展以后類,為以后類添加方法),最后是VectorSpace.scala,顧名思義定義了線性空間相關的操作,這里面的trait關系太復雜,關系圖畫了半天放棄了,有時間再來理理清楚。 然后可以進入linalg庫,這是breeze最大的一個庫,但結構相對來說非常清晰,根目錄下定義了線性代數常用的數據結構,比如Vector, Matrix, DenseMatrix, CSCMatrix等等,還有一些線性代數里的基本操作,比如LSMR包含了一種通過迭代求最小二乘問題的算法,pca包含了PCA算法等,這里的類都非常基礎,代碼相對來說也比較難懂。但子目錄下的代碼就相對好很多了,support包含了一系列的trait,這些trait大多以Can開頭,顧名思義就是表示某個類是否具有某種能力,比如CanCopy表示是否能夠被拷貝,CanSlice表示是否能夠被索引等等。function文件夾下包含了各種函數功能,比如Max,Accumulate,Argmax等等。operators文件夾中包含了一般性的操作定義,比如BinaryOp, CounterOp等等,代碼也較為晦澀。 再看看stats庫,這里面最重要的就是distribution文件夾,里面包含了各種基礎的分布的表示方法,分布的表示分為離散型和連續型,這個庫可以作為一個數學中概率論和數理統計、隨機過程的學習教材,基本原理都來自概率數學,而且代碼結構非常清晰,對于理解各類機器學習算法也非常重要,推薦仔細閱讀。stats庫中其余的內容都比較直接,就不一一介紹了。 終于進入了我們最關心的optimize庫,這是一個通用的優化庫,包含了線性優化、Proximal優化、流優化、凸優化等等。也是非常好的優化教程,正在學習最優化的朋友如果對實現感興趣可以仔細閱讀這一塊的代碼,非常受用。當然,對于機器學習算法來說,最重要的還是LBFGS和OWLQN,這兩個分別是求解一般線性模型中的二次最優化問題時最常用的算法,LBFGS用于求解L2正則化的問題,OWLQN是LBFGS算法的變種,用于求解L1正則化問題。這里比較重要的是DiffFunction和Minimizer,分別代表了損失和最小優化器,也是breeze的optimize重要的兩個對外接口,在Spark ML庫中就經常見到這倆函數。前者返回損失和梯度信息,后者統籌優化算法迭代,有興趣可以看下這兩個類以及它們的子類。 以上我們介紹的generic, math, linalg, stats, optimize都是breeze中的基礎庫,另外的庫屬于附加庫,下面我們一句話介紹下它們的內容,對特定領域感興趣的朋友可以深入閱讀源碼。 collection包含了breeze中常用的集合類型,也可以算是基礎庫,它包含了可變和不可變集合兩個內容。features包含了一個特征向量的定義。integrate包含了積分相關的內容。interpolation包含了插值計算相關的內容。io包含了輸入輸出內容,比如讀寫csv文件。numeric包含了數值計算相關的內容,其中包含了CODATA2010定義的一些常數。polynomial包含了多項式相關的計算、signal包含了信號處理相關的計算,比如各種濾波函數。storage包含了存儲相關的庫。util包含了一些應用功能。 以上就簡單的走馬觀花式介紹了breeze,歡迎感興趣的朋友一起探討。我最近也在持續閱讀,有更細節的體會也會及時發出來跟大家交流。

轉載于:https://www.cnblogs.com/jicanghai/p/8686531.html

總結

以上是生活随笔為你收集整理的breeze源码阅读心得的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久成人免费视频 | 日本黄色片在线播放 | 日韩一区二区在线看 | 亚洲欧美日韩高清 | 天堂а√在线中文在线新版 | 伊人久久大香线蕉成人综合网 | 国产又黄又骚 | 美女屁股无遮挡 | 亚洲国产成人无码av在线 | 三级黄色视屏 | 国产黄色一级片 | 超碰资源总站 | 亚洲精品一二三四区 | jizz在亚洲 | 麻豆影视国产在线观看 | 懂色av懂色av粉嫩av分享吧 | 最近高清中文在线字幕在线观看 | 视频网站在线观看18 | 午夜伦视频 | 成人午夜激情视频 | 亚洲成色| 无码人妻精品丰满熟人区 | 狠狠干网站| 日本精品黄色 | 国产精品久久久久久久裸模 | 中国毛片在线 | 亚洲国产免费看 | 一级做a爱片久久毛片 | 亚洲精品一区二三区 | 亚洲草逼| 91精品国产综合久久久蜜臀图片 | 九九在线免费视频 | 性色视频在线观看 | 天天视频色| 香蕉国产片 | 亚洲高清毛片 | 在线观看中文字幕 | 国产免费美女 | 亚洲AV无码精品黑人黑人 | 中文字幕乱码av | 亚欧在线视频 | 国产免费激情视频 | 免费亚洲一区 | 福利片在线播放 | h片在线免费看 | 在线无码va中文字幕无码 | 中文字幕日韩无 | 午夜精品一区二区在线观看 | 国产午夜无码视频在线观看 | julia一区二区中文久久97 | 久久人人妻人人人人妻性色av | 国产精品伦一区 | 丁香花高清在线 | 亚洲中字幕 | 久久久久久爱 | 欧美成人午夜 | 亚洲精品久久久蜜桃网尤妮丝 | 亚洲精品高清在线 | 国产精品视频免费在线观看 | 蜜色影院| 操皮视频 | 国产又黄又骚 | 免费在线观看成人 | 人妖被c到高潮欧美gay | 人人澡人人澡人人澡 | 久久在线看 | 黄色av影院| 无罩大乳的熟妇正在播放 | 欧美性猛交久久久久 | 免费av的网站 | 午夜精品视频在线观看 | av作品在线 | 国产精品久久久久久久久久 | 激情久久网站 | 91传媒视频在线观看 | 美女午夜影院 | 欧美日韩一区二区三区四区五区六区 | 一级特黄bbbbb免费观看 | 韩国主播青草55部完整 | 2019中文字幕在线 | 天天干天天色天天 | 久久久69| 天天爽夜夜爽人人爽 | 亚洲一二三不卡 | 国产3区| 国产香蕉一区二区三区 | 国产偷自拍 | 欧洲免费av | 精品一区二区在线视频 | 在线看片一区二区 | 亚洲一区二区国产精品 | 色撸撸在线观看 | 久久久网站 | 丰满岳乱妇一区二区三区 | 国产一级不卡毛片 | 成人日韩视频 | 久热中文 | 中文字幕一区二区三区四区 | 国产精品一区二区视频 |