導航:首頁 > 源碼編譯 > 模型編譯語言

模型編譯語言

發布時間:2023-01-06 04:35:38

『壹』 keras如何快速入門

作者 | 楊照璐(微信號lwyzl0821)

編輯 | 言有三

這一次我們講講keras這個簡單、流行的深度學習框架,一個圖像分類任務從訓練到測試出結果的全流程。

相關的代碼、數據都在我們 Git 上,希望大家 Follow 一下這個 Git 項目,後面會持續更新不同框架下的任務。

Keras是一個非常流行、簡單的深度學習框架,它的設計參考了torch,用Python語言編寫,是一個高度模塊化的神經網路庫,支持GPU和CPU。能夠在TensorFlow,CNTK或Theano之上運行。 Keras的特點是能夠快速實現模型的搭建, 簡單方便地讓你實現從想法到實驗驗證的轉化,這都是高效地進行科學研究的關鍵。

Keras的安裝非常簡單,但是需要先安裝一個後端框架作為支撐,TensorFlow, CNTK,Theano都可以,但是官網上強烈建議使用TensorFlow作為Keras的後端進行使用。本例以TensorFlow 1.4.0 版本作為Keras的後端進行測試。

通過上面兩條命令就可以完成TensorFlow和Keras的安裝,此處需要注意的一點是Keras的版本和TensorFlow的版本要對應,否則會出現意外的錯誤。具體版本對應關系可在網上進行查詢。

3.1 MNIST實例

MNIST手寫字元分類被認為是深度學習框架里的「Hello Word!」,下面簡單介紹一下MNIST數據集案例的測試。Keras的官方github的example目錄下提供了幾個MNIST案例的代碼,下載mnist_mlp.py,mnist_cnn.py文件,本地運行即可,其他文件讀者也可以自行測試。

3.2 數據定義

前面我們介紹了MNIST數據集實例,很多讀者在學習深度學習框架的時候都卡在了這一步,運行完MNIST實例之後無從下手,很大原因可能是因為不知道怎麼處理自己的數據集,這一節我們通過一個簡單的圖像二分類案例,介紹如何實現一個自定義的數據集。

數據處理有幾種方式,一種是像MNIST、CIFAR數據集,這些數據集的特點是已經為用戶打包封裝好了數據。用戶只要load_data即可實現數據導入。其實就是事先把數據進行解析,然後保存到.pkl 或者.h5等文件中,然後在訓練模型的時候直接導入,輸入到網路中;另一種是直接從本地讀取文件,解析成網路需要的格式,輸入網路進行訓練。但是實際情況是,為了某一個項目我們不可能總是找到相應的打包好的數據集供使用,這時候自己建立一個dataset就十分重要。

Keras提供了一個圖像數據的數據增強文件,調用這個文件我們可以實現網路數據載入的功能。

此處採用keras的processing模塊里的ImageDataGenerator類定義一個圖像分類任務的dataset生成器:

下面簡單地介紹一下上面的代碼,完整代碼請移步Git工程。

Keras的processing模塊中提供了一個能夠實時進行數據增強的圖像生成類ImagGenerator,該類下面有一個函數flow_from_directory,顧名思義該函數就是從文件夾中獲取圖像數據。關於ImageGenerator更多的使用可以參考官方源碼。數據集結構組織如下:

此處還需要注意的一點是,我們現在進行的是簡單的圖像分類任務訓練,假如要完成語義分割,目標檢測等任務,則需要自定義一個類(繼承ImageDataGenerator),具體實現可以查詢相關代碼進行參考。

Keras網路模型搭建有兩種形式,Sequential 順序模型和使用函數式API的 Model 類模型。本教程的例子採用一個簡單的三層卷積,以及兩層全連接和一個分類層組成的網路模型。由於函數式API更靈活方便,因此下面採用函數式方法搭建模型,模型定義如下:

4.1 函數式API

即輸出是12通道,卷積核大小3*3,步長為2,padding='same'表示邊緣補零

axis表示需要歸一化的坐標軸,bn_axis=3,由於採用TensorFlow作為後端,因此這句代碼表示在通道數坐標軸進行歸一化。

x = Flatten()(x) 表示將卷積特徵圖進行拉伸,以便和全連接層Dense()進行連接。

Dense()實現全連接層的功能,1200是輸出維度,『relu'表示激活函數,使用其他函數可以自行修改。

最後一層採用『softmax』激活函數實現分類功能。

最終返回Model,包含網路的輸入和輸出。

4.2 模型編譯

網路搭建完成,在網路訓練前需要進行編譯,包括學習方法、損失函數、評估標准等,這些參數分別可以從optimizer、loss、metric模塊中導入。具體代碼如下:

其中callbacks模塊包含了TensorBoard, ModelCheckpoint,LearningRateScheler等功能,分別可以用來可視化模型,設置模型檢查點,以及設置學習率策略。

5.1 模型訓練

Keras模型訓練過程非常簡單,只需一行代碼,設置幾個參數即可,具體代碼如下:

首先指定數據生成器,train_generator, 前面介紹過;steps_per_epoch是每次epoch循環的次數,通過訓練樣本數除以batch_size得到;epochs是整個數據集重復多少次訓練。

Keras是高度封裝的,在模型訓練過程中,看不到網路的預測結果和網路的反向傳播過程,只需定義好損失函數,事實上,網路定義中的模型輸出會包含網路的輸入和輸出。

5.2 訓練過程可視化

keras可以採用tensorboard實現訓練過程的可視化。執行完下面的命令就可以在瀏覽器訪問http://127.0.0.1:6006查看效果。

tensorboard --logdir 日誌文件路徑(默認路徑=『./logs』』)

上面是分別是訓練和測試過程的loss和accuracy。

5.3 模型測試

model = simpleconv3()

model.load_weights(model_path, by_name=True)

image_path = '../../../../datas/head/train/0/1left.jpg'

img = Image.open(image_path)

img = img_to_array(img)

img = cv2.resize(img, image_size)

img = np.expand_dims(img, axis=0)

img = preprocess_input(img)

result = model.predict(img, batch_size=1)

print(result)

以上代碼簡單介紹一下:模型測試流程非常清晰,首先載入模型,載入參數>>將數據輸入網路>>模型預測。

模型訓練完成後,僅需用model.save_weights('models/model.h5')一句代碼就可以完成模型的保存。同樣,模型的導入採用model.load_weights(model_path, by_name=True),需要注意的是要設置by_name=True,這樣就能保證和模型名稱一樣的參數都能載入到模型,當然模型定義要和參數是匹配的,假如要進行fine-tune我們只需保證需要重新訓練或者新加的網路層的名稱和預載入模型參數名稱不一樣就可以。

以上內容涵蓋了採用keras進行分類任務的全部流程,從數據導入、模型搭建、模型訓練、測試,模型保存和導入幾個方面分別進行了介紹。當然這只是一些基本的應用,還有一些高級、個性化功能需要我們進一步學習,有機會,下一次介紹一下自定義網路層、設置check_point、特徵可視化等特性。

『貳』 編程語言中的"模型"一詞是什麼具體含義

編程模型,簡單地你可以理解它就是模板,遇到相似問題我們就可以方便依模板解決,這樣就簡化了編程問題.

概念數據模型呢就是資料庫管理的教學形式的一種框架,是用來描述一組數據的概念和定義.

面向對象是現在最流行的東東了,你隨便一搜N多就出來了.它主要是相於對面向過程模型而言.它就是從客觀世界實體的對象關系角度來描述,表現了對象的相互關系的.

『叄』 請問高手,神經網路模型與學習演算法用什麼語言編程比較好java 、C語言還是C++等。謝謝!

個人建議,用Java,畢竟它對網路的針對性較強,而學習演算法可以從C開始再到java因為從小到大比較好…

『肆』 這個建模3d模型的網站是什麼語言編寫的

網頁3d展示都是用heml5和javascript,css3,還有更重要的就是webgl,這個你了解下three,它直接可以把3d模型文件在網頁顯示。更多請網路three。

『伍』 有沒有辦法實現3D MAX模型轉換成某種編程語言除了轉換成VRML外的。

不能。
max模型都說是模型了,最多了也就能轉成vrml建模語言。
編程語言是用來做交互的……

閱讀全文

與模型編譯語言相關的資料

熱點內容
mac壓縮解壓視頻 瀏覽:906
這就是程序員魅力 瀏覽:296
京東java演算法筆試題 瀏覽:178
柱子加密箍筋不準有接頭 瀏覽:199
我的世界伺服器菜單插件如何使用 瀏覽:12
劉毅10000詞pdf 瀏覽:890
剛畢業的程序員會什麼 瀏覽:974
單片機控制64路開關量 瀏覽:982
win10截圖編程 瀏覽:420
怎樣把名字變成文件夾 瀏覽:203
文件怎麼搞成文件夾 瀏覽:730
多線程編程php 瀏覽:606
安卓機越用越卡有什麼辦法 瀏覽:17
高中生解壓操場適合做的游戲 瀏覽:395
程序員java招聘 瀏覽:462
未來之光手機雲伺服器 瀏覽:160
伺服器下載資料為什麼c盤滿了 瀏覽:265
怎麼清除空文件夾 瀏覽:544
如何查看派派伺服器 瀏覽:804
殺手6解壓畫面 瀏覽:671