0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MATLAB、Torch和TensorFlow對(duì)比分析_初學(xué)者如何選擇

Hx ? 作者:工程師陳翠 ? 2018-06-29 07:46 ? 次閱讀

初學(xué)者在學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的時(shí)候往往會(huì)有不知道從何處入手的困難,甚至可能不知道選擇什么工具入手才合適。近日,來自意大利的四位研究者發(fā)布了一篇題為《神經(jīng)網(wǎng)絡(luò)初學(xué)者:在 MATLAB、Torch 和 TensorFlow 中的快速實(shí)現(xiàn)(Neural Networks for Beginners A fast implementation in Matlab, Torch, TensorFlow)》的論文,對(duì) MATLAB、Torch 和 TensorFlow 這三種神經(jīng)網(wǎng)絡(luò)工具進(jìn)行了介紹和比較。

本報(bào)告提供了最常見的開發(fā)環(huán)境內(nèi)一些機(jī)器學(xué)習(xí)工具的介紹。本報(bào)告主要關(guān)注實(shí)際問題,跳過了任何理論介紹。本報(bào)告面向的讀者是想要進(jìn)入機(jī)器學(xué)習(xí)領(lǐng)域的學(xué)生和正在尋找新框架的專家。

這篇論文是關(guān)于人工神經(jīng)網(wǎng)絡(luò)(ANN,[1,2])的,因?yàn)檫@是目前最熱門的主題,并且在許多人工智能任務(wù)上都達(dá)到了當(dāng)前最佳的水平。在單獨(dú)介紹了每一種框架之后,我們同時(shí)也給出實(shí)現(xiàn)一些一般常見問題的設(shè)置方法,從而使它們的比較更簡(jiǎn)單。

因?yàn)檫@個(gè)主題已經(jīng)得到了廣泛的研究,而且還在持續(xù)快速地增長(zhǎng),所以我們將這個(gè)文檔和一個(gè) GitHub 庫進(jìn)行了配對(duì),這個(gè)庫中的文檔是動(dòng)態(tài)更新的,而且以后可能還會(huì)擴(kuò)大規(guī)模。

1 Matlab:一個(gè)統(tǒng)一的友好環(huán)境

1.1 介紹

Matlab 是一個(gè)強(qiáng)大的工具,能夠?qū)Υ蟛糠诸愋偷臄?shù)值運(yùn)算、算法、編程和測(cè)試進(jìn)行簡(jiǎn)單又快速的處理。其直觀且友好的交互式接口使得它能簡(jiǎn)單地對(duì)數(shù)據(jù)進(jìn)行處理、可視化與分析。針對(duì)各種類型的任務(wù),該軟件提供了大量的內(nèi)置數(shù)學(xué)函數(shù),以及豐富的、易于獲取的文檔。其主要設(shè)計(jì)是處理矩陣的,因此,幾乎所有的函數(shù)和運(yùn)算都向量化了,也就是說它們可以管理標(biāo)量以及向量、矩陣和張量(往往會(huì)有)。因此,其能更高效地避免循環(huán)(可能的時(shí)候),以及建立利用矩陣乘法的運(yùn)算。

在此文檔中,我們只展現(xiàn)了一些簡(jiǎn)單的用于上手人工神經(jīng)網(wǎng)絡(luò)(ANN)的機(jī)器學(xué)習(xí)相關(guān)的工具。我們假設(shè)讀者有基礎(chǔ)知識(shí),并把重點(diǎn)放在了進(jìn)一步信息的官方文檔上。例如,你可以從 Matlab 的官網(wǎng)發(fā)現(xiàn)如何掌握該軟件的相關(guān)信息。確實(shí),其許可證并非免費(fèi)的,雖然大部分大學(xué)會(huì)為學(xué)生提供教學(xué)用許可證,但可能也無法獲取目前所有的程序包。特別是 Statistic and Machine Learning Toolbox 和 Neural Network Toolbox 提供了大量?jī)?nèi)置函數(shù)和模型,可用于實(shí)現(xiàn)適用于各類任務(wù)的不同 ANN 架構(gòu)。

即使我們參考一些簡(jiǎn)單獨(dú)立的案例,這兩個(gè)工具也是基本所需的。最容易理解的是 nnstart 函數(shù),其能激活一個(gè)簡(jiǎn)單的 GUI 并通過簡(jiǎn)單的 2 層架構(gòu)來引導(dǎo)用戶。它能允許加載可用的數(shù)據(jù)樣本或使用用戶自定義數(shù)據(jù)(即輸入數(shù)據(jù)和對(duì)應(yīng)目標(biāo)的兩個(gè)矩陣),還能訓(xùn)練網(wǎng)絡(luò)并分析結(jié)果(誤差趨勢(shì)、混淆矩陣、ROC 曲線等)。

然而,還有更多可用于特定任務(wù)的函數(shù)。比如說,patternnet 函數(shù)是專為模式識(shí)別問題而設(shè)計(jì)的、newfit 函數(shù)適用于回歸問題,而 feedforwardnet 函數(shù)是最靈活的,其允許構(gòu)建自定義的和復(fù)雜的網(wǎng)絡(luò)。所有的版本都以類似方式實(shí)現(xiàn),主要的選項(xiàng)和方法適用于所有函數(shù)。在下一章節(jié)中,我們展示了如何管理可定制架構(gòu),并開始解決非常基礎(chǔ)的問題。相關(guān)詳細(xì)信息可以在官方網(wǎng)站找到:

2 Torch 和 Lua 環(huán)境

2.1 介紹

Torch7 是一個(gè)易于使用并十分高效的科學(xué)計(jì)算框架,本質(zhì)上是面向機(jī)器學(xué)習(xí)算法的。Torch7 以 C 語言寫成,這就保證了高效性。然而,通過 LuaJIT 接口(其提供了一種快速和直觀的腳本語言),我們可以進(jìn)行完全地交互(通常很方便)。此外,它還集成了支持 GPU 計(jì)算的 CUDA 環(huán)境的必要庫。截至目前,Torch7 是構(gòu)建任何種類拓?fù)浣Y(jié)構(gòu)的 ANN 原型上最常用的工具之一。事實(shí)上,Torch7 現(xiàn)在有很多軟件包,有很大的社區(qū)和不斷的更新和改進(jìn),這些都讓我們可以非常簡(jiǎn)單地開發(fā)幾乎任何種類的架構(gòu)。

有關(guān)安裝信息可以在官方網(wǎng)站入門部分找到: 。對(duì)基于 UNIX 的操作系統(tǒng),這一過程非常簡(jiǎn)單直接,而 Windows 系統(tǒng)即使有替代方法( https://github.com/torch/torch7/wiki/Windows ),但還沒有官方支持。如果已經(jīng)安裝了 CUDA,那么就會(huì)自動(dòng)添加 cutorch 和 cunn 包,其中包含了處理 Nvidia GPU 的所有必要工具。

3 TensorFlow

3.1 簡(jiǎn)介

TensorFlow [5] 是一個(gè)用于數(shù)值計(jì)算的開源軟件庫,其相比于其它機(jī)器學(xué)習(xí)框架是最年輕的。TensorFlow 最初由谷歌大腦團(tuán)隊(duì)的研究員和工程師開發(fā),其目的是鼓勵(lì)對(duì)深度架構(gòu)的研究。然而,該環(huán)境對(duì)一些數(shù)值編程領(lǐng)域提供了大量的合適的工具。其計(jì)算方式是在數(shù)據(jù)流圖(Data Flow Graphs)概念下構(gòu)想的。圖的結(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,圖的邊表示張量(多維數(shù)據(jù)數(shù)組)。該機(jī)器學(xué)習(xí)包的核心是用 C++寫的,但其提供了一個(gè)優(yōu)良的 Python API,而且有很好的文檔支持。TensorFlow 主要的特征是其符號(hào)方法,該方法允許對(duì)前向模型做出一般性定義,而將對(duì)應(yīng)的衍生計(jì)算留給該環(huán)境本身執(zhí)行。

4 MNIST 手寫字符識(shí)別

在本章節(jié)中,我們將討論如何建立一個(gè) 2 層 ANN 以解決 MNIST [6] 分類問題,MNIST 是一個(gè)著名的手寫字體識(shí)別數(shù)據(jù)集。其廣泛用于測(cè)試和比較一般機(jī)器學(xué)習(xí)算法和計(jì)算視覺方法。該數(shù)據(jù)集提供 28×28 像素(灰度)的手寫數(shù)字圖像。訓(xùn)練和測(cè)試集分別包含 6 萬與 1 萬條樣本。壓縮文件可以在官網(wǎng)獲得: ,同時(shí)還有大多數(shù)常見算法的性能測(cè)評(píng)列表。

我們展示了構(gòu)建的標(biāo)準(zhǔn) 2 層 ANN,其每一個(gè)隱藏層包含 300 個(gè)神經(jīng)元。如圖 4 所示,因?yàn)樵摼W(wǎng)絡(luò)是在官方網(wǎng)站上測(cè)評(píng)報(bào)告的架構(gòu)之一,我們可以輕松地比較所得到的結(jié)果。其輸入需要重塑為包含 28 · 28 = 784 個(gè)元素的一維向量以滿足神經(jīng)網(wǎng)絡(luò)。每個(gè)圖像最初由包含灰度像素值 [0, 255] 的矩陣所表征,并將歸一化為 [0, 1] 之內(nèi)。輸出將是包含 10 個(gè)元素的預(yù)測(cè)向量,因?yàn)槊總€(gè)元素的標(biāo)簽將由 one-hot 編碼的 10 空位二元向量組成。激活和懲罰函數(shù)在不同的環(huán)境中并不相同,這樣以提供一個(gè)不同方法的概覽。

MATLAB、Torch和TensorFlow對(duì)比分析_初學(xué)者如何選擇

圖 4:面向 MNIST 數(shù)據(jù)的 2 層網(wǎng)絡(luò)模型的一般架構(gòu)

5 卷積神經(jīng)網(wǎng)絡(luò)

在本章節(jié)中,我們將介紹卷積神經(jīng)網(wǎng)絡(luò)(CNN [7, 6, 8]),該神經(jīng)網(wǎng)絡(luò)是一種重要和強(qiáng)大的學(xué)習(xí)架構(gòu),其廣泛用于計(jì)算機(jī)視覺應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)目前代表著用于圖像分類任務(wù)的最先進(jìn)算法,并構(gòu)成了深度學(xué)習(xí)中的主要架構(gòu)。我們展示了在所有提到的框架內(nèi)如何構(gòu)建和訓(xùn)練這樣一個(gè)神經(jīng)網(wǎng)絡(luò),并且還探索了其最常用的功能和在 MNIST 上進(jìn)行一些試驗(yàn)以指出一些重要的特征。

MATLAB、Torch和TensorFlow對(duì)比分析_初學(xué)者如何選擇

圖 8:面向 MNIST 數(shù)據(jù)的 CNN 模型的一般架構(gòu)

圖 9:在 MNIST 圖像上用 Matlab 訓(xùn)練后的第一個(gè)卷積層的 5 × 5 濾波器。

圖 11:在 2 × 2 最大池化的 MNIST 圖像上用 Torch 訓(xùn)練的第一個(gè)卷積層的 5 × 5 濾波器。

圖 12:在 MNIST 圖像上用 TensorFlow 和所述的架構(gòu)訓(xùn)練的第一個(gè)卷積層的 5 × 5 濾波器。

6 關(guān)鍵比較

在這一節(jié),我們將提供對(duì)這些環(huán)境的整體概覽。即使我們?cè)诒?1 中提供了基于一些我們認(rèn)為和機(jī)器學(xué)習(xí)軟件開發(fā)主要相關(guān)的特征的分?jǐn)?shù)比較,但本研究的目的并不是通過這樣簡(jiǎn)單的評(píng)估來完成分析。相反,我們希望提出一個(gè)有用的引導(dǎo),可幫助人們進(jìn)入廣義上的 ANN 和機(jī)器學(xué)習(xí)領(lǐng)域,從而根據(jù)個(gè)人背景和要求來在環(huán)境中自我定位。更完整的和統(tǒng)計(jì)相關(guān)的比較可參閱:,這里我們進(jìn)行了總結(jié),以幫助人們加速單個(gè)和全局的任務(wù)開發(fā)。

我們首先給出了每個(gè)環(huán)境的一般描述,然后我們嘗試在一些具體要求上比較了它們的優(yōu)缺點(diǎn)。最后,我們?cè)诓煌娜蝿?wù)上進(jìn)行了計(jì)算性能的指示性數(shù)值分析,這也可以作為一個(gè)比較和討論的主題。

6.1 MATLAB

該編程語言是直觀的,并且該軟件也提供了完整的軟件包——讓用戶可以無需編寫任何特定的代碼就能定義和訓(xùn)練幾乎所有類型的人工神經(jīng)網(wǎng)絡(luò)架構(gòu)。其代碼并行化(code parallelization)是自動(dòng)完成的,而且與 CUDA 的集成也很直接。其可用的內(nèi)置函數(shù)是高度可自定義和可優(yōu)化的,從而提供了快速的和可擴(kuò)展的實(shí)驗(yàn)設(shè)置方式,讓你可以輕松獲取網(wǎng)絡(luò)的變量以進(jìn)行深度分析。但是,擴(kuò)展和集成 Matlab 工具需要對(duì)于該環(huán)境的高階知識(shí)。這可能會(huì)驅(qū)使用戶開始從頭編寫其代碼,導(dǎo)致計(jì)算表現(xiàn)的普遍衰減。這些功能讓其成為了一個(gè)完美的統(tǒng)計(jì)和分析工具箱,但是作為開發(fā)環(huán)境來說還是慢了一點(diǎn)。其 GUI 需要一些重量級(jí)的計(jì)算,但另一方面,這對(duì)用戶很友好,而且還提供了最好的圖形數(shù)據(jù)可視化。MATLAB 的文檔很完整,在官網(wǎng)上也組織得非常好。

6.2 Torch

Torch 的編程語言(Lua)有時(shí)候有一點(diǎn)難,但它應(yīng)該比這些語言中其它一些要快一點(diǎn)。其提供了所有所需的 CUDA 集成和 CPU 并行自動(dòng)化。其基于模塊的結(jié)構(gòu)允許靈活的 ANN 架構(gòu),而且擴(kuò)展其提供的軟件包也相對(duì)容易。而且其還有其它強(qiáng)大的軟件包,但一般而言它們需要一定的專業(yè)知識(shí)才能實(shí)現(xiàn)有意識(shí)的操作。Torch 可被輕松用于特定和一般算法測(cè)試的原型設(shè)計(jì)環(huán)境。其文檔遍布于整個(gè) Torch 的 GitHub 庫,有時(shí)候不能立即解決一些特定的問題。

6.3 Tensor Flow

其使用了非常動(dòng)態(tài)的語言 Python,讓用戶可以輕松地編寫腳本。其 CPU 并行化是自動(dòng)的,而且其使用了計(jì)算圖結(jié)構(gòu),可以輕松利用 GPU 計(jì)算。其提供了很好的數(shù)據(jù)可視化,并且讓初學(xué)者也可以輕松地獲取已經(jīng)準(zhǔn)備好的軟件包,盡管本文并沒有涉及到這方面。其符號(hào)計(jì)算(symbolic computation)的力量?jī)H在前向步驟中涉及到用戶,而其反向步驟完全是由 TensorFlow 環(huán)境導(dǎo)出的。這樣的靈活性讓任何知識(shí)水平的用戶都可以非??焖俚剡M(jìn)行開發(fā)。

6.4 整體比較情況概覽

就像之前說過的,我們嘗試在表 1 中總結(jié)出全局對(duì)比,根據(jù)不同的視角進(jìn)行 1-5 的評(píng)分。下面介紹了主要的對(duì)比指標(biāo):

編程語言:它們所有的基本語言都非常直觀

GPU 集成:Matlab 因?yàn)樾枰~外的工具包而得分較低

CPU 并行化:所有的環(huán)境都可利用盡可能多的核(core)

函數(shù)可定制性:Matlab 得分較低,因?yàn)橐獙⒘己脙?yōu)化的函數(shù)與已有的函數(shù)整合起來很困難

符號(hào)運(yùn)算:Lua 不支持

網(wǎng)絡(luò)結(jié)構(gòu)可定制性:每種網(wǎng)絡(luò)都是可能的

數(shù)據(jù)可視化:交互式的 Matlab 優(yōu)于其它

安裝:所有都相當(dāng)簡(jiǎn)單,但 Matlab 的交互式 GUI 是個(gè)加分項(xiàng)

操作系統(tǒng)兼容性:Torch 在 Windows 上不容易安裝

語言性能:Matlab 接口有時(shí)候很沉重

開發(fā)靈活性:同樣,Matlab 得分低,因?yàn)槠鋾?huì)迫使中等用戶精通其語言,才能有能力整合已有的工具或編寫出合適的代碼,一般來說,這會(huì)拖慢軟件開發(fā)速度。

MATLAB、Torch和TensorFlow對(duì)比分析_初學(xué)者如何選擇

表 1:三種環(huán)境的各項(xiàng)得分

6.5 計(jì)算問題

在表 2 中,我們比較了不同任務(wù)的運(yùn)行時(shí)間,分析了 CPU 和 GPU 計(jì)算的優(yōu)點(diǎn)和不同之處。結(jié)果是 5 次實(shí)驗(yàn)的平均得分,而且實(shí)驗(yàn)都是在同一臺(tái)計(jì)算機(jī)上完成的,該計(jì)算機(jī)的配置是:32 核的英特爾 Xeon CPU E5-2650 v2 @ 2.60GHz、66 GB RAM、4 GB 內(nèi)存的 Geforce GTX 960。操作系統(tǒng)是 Debian GNU/Linux 8 (jessie)。我們?cè)诓煌木W(wǎng)絡(luò)框架、批大小(包括隨機(jī)梯度下降(SGD)、1000 樣本批和完全批(Full Bacth))和硬件(在 HW 列說明)上測(cè)試了標(biāo)準(zhǔn)的梯度下降流程。這里用到的 CNN 架構(gòu)和圖 8 中給出的一樣。結(jié)果是通過嘗試使用盡可能相似的優(yōu)化流程而得到的。在實(shí)際中,我們很難在 Matlab 內(nèi)置的工具箱中應(yīng)用特定的優(yōu)化技術(shù)。我們?yōu)?Torch 的第二個(gè)架構(gòu)(第 8 行)跳過了 SGD 的案例,因?yàn)槠涞谝粋€(gè)架構(gòu)獲得了大量的計(jì)算時(shí)間。我們也跳過了使用 GPU 的 Matlab 在 ANN 上的 SGD,因?yàn)槠溆?xùn)練函數(shù)不支持 GPU 計(jì)算(第 4 和 10 行)。實(shí)際上,這可能是一個(gè)不常見的研究案例,但為了最好的完整性,我們還是報(bào)告其結(jié)果。我們跳過了在 GPU 上的 CNN Full Batch 的實(shí)驗(yàn),因?yàn)槠鋬?nèi)存需求實(shí)在太高了。

MATLAB、Torch和TensorFlow對(duì)比分析_初學(xué)者如何選擇

表 2:給定環(huán)境在 MNIST 數(shù)據(jù)上用不同架構(gòu)訓(xùn)練 10 epoch 5 次后的平均時(shí)間(秒)。所有架構(gòu)都使用了 ReLU 作為激活函數(shù),softmax 作為輸出函數(shù),交叉熵作為懲罰

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    180

    文章

    2952

    瀏覽量

    229843
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    328

    瀏覽量

    60444
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB入門教程-初學(xué)者必看

    MATLAB入門教程-初學(xué)者必看
    發(fā)表于 06-28 15:39

    對(duì)MATLAB初學(xué)者最好到GUI資料

    目前對(duì)MATLAB初學(xué)者最好到GUI資料,詳細(xì)的實(shí)例分析+代碼詳解。
    發(fā)表于 09-22 22:30

    Visual Studio NET初學(xué)者教程

    Visual Studio NET初學(xué)者教程
    發(fā)表于 01-08 11:15 ?74次下載
    Visual Studio NET<b class='flag-5'>初學(xué)者</b>教程

    初學(xué)者之路—硬件學(xué)習(xí)經(jīng)驗(yàn)

    初學(xué)者之路—硬件學(xué)習(xí)經(jīng)驗(yàn)一文是一位搞硬件的在校研究生寫的,希望對(duì)那些初學(xué)者之路電腦網(wǎng)等處于迷茫的硬件初學(xué)者學(xué)習(xí)之路有所幫助!
    發(fā)表于 12-29 10:20 ?1.5w次閱讀

    電子初學(xué)者電路圖如何看

    電子初學(xué)者的指南,介紹了好些東西,都是最基礎(chǔ)的。適合于初學(xué)者
    發(fā)表于 11-23 12:05 ?0次下載

    從51初學(xué)者到電子工程師

    51初學(xué)者的學(xué)習(xí)指導(dǎo),對(duì)51初學(xué)者是個(gè)很好的入門教程,
    發(fā)表于 02-23 15:53 ?0次下載

    protel99初學(xué)者教程

    protel99初學(xué)者教程
    發(fā)表于 12-11 22:52 ?0次下載

    初學(xué)者的avr基礎(chǔ)教程

    初學(xué)者的avr基礎(chǔ)教程
    發(fā)表于 09-21 08:45 ?14次下載

    PSOC1初學(xué)者5個(gè)實(shí)驗(yàn),針對(duì)初學(xué)者的實(shí)驗(yàn)

    PSOC1初學(xué)者5個(gè)實(shí)驗(yàn),針對(duì)初學(xué)者的實(shí)驗(yàn)
    發(fā)表于 10-16 09:33 ?14次下載
    PSOC1<b class='flag-5'>初學(xué)者</b>5個(gè)實(shí)驗(yàn),針對(duì)<b class='flag-5'>初學(xué)者</b>的實(shí)驗(yàn)

    linux初學(xué)者入門

    linux初學(xué)者入門
    發(fā)表于 10-27 14:34 ?14次下載
    linux<b class='flag-5'>初學(xué)者</b>入門

    推薦初學(xué)者TensorFlow延伸閱讀

    推薦初學(xué)者的延伸閱讀 除了課程內(nèi)容外,TensorFlow 官網(wǎng)也為大家提供了學(xué)習(xí)研究機(jī)器學(xué)習(xí)豐富實(shí)用的資源,例如老師在課程中提到的 TensorFlow tfds 數(shù)據(jù)集、IMDB 數(shù)據(jù)集
    的頭像 發(fā)表于 11-04 18:31 ?1829次閱讀

    Labview初學(xué)者常見問題及解答

    Labview初學(xué)者常見問題及解答。
    發(fā)表于 05-25 15:56 ?20次下載

    FPGA初學(xué)者必讀文檔

    FPGA初學(xué)者必讀文檔(嵌入式開發(fā)適合哪個(gè)城市)-FPGA初學(xué)者必讀文檔,為學(xué)習(xí)FPGA做好準(zhǔn)備。
    發(fā)表于 08-04 11:39 ?32次下載
    FPGA<b class='flag-5'>初學(xué)者</b>必讀文檔

    初學(xué)者的基本LED設(shè)置

    電子發(fā)燒友網(wǎng)站提供《初學(xué)者的基本LED設(shè)置.zip》資料免費(fèi)下載
    發(fā)表于 11-22 10:14 ?3次下載
    <b class='flag-5'>初學(xué)者</b>的基本LED設(shè)置

    面向初學(xué)者的基本教程程序

    電子發(fā)燒友網(wǎng)站提供《面向初學(xué)者的基本教程程序.zip》資料免費(fèi)下載
    發(fā)表于 12-19 11:25 ?5次下載
    面向<b class='flag-5'>初學(xué)者</b>的基本教程程序