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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

基于神经网络的图像识别

發(fā)布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于神经网络的图像识别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、目的

1. 了解深度學習的基本原理;

2. 能夠使用 PaddleHub 深度學習開源工具進行圖像識別;

3. 能夠使用 PaddlePaddle 訓練神經(jīng)網(wǎng)絡模型;

4. 能夠使用 Paddle 完成手寫實驗.

5. 能夠使用 keras 訓練神經(jīng)網(wǎng)絡模型。

二、環(huán)境配置:

? Anaconda

? PaddlePaddle PaddlePaddle-gpu

? PaddleHub

? Tensorflow2.0.0

? Keras2.3.1

? Pycharm

4.1 Tensorflow 簡介

TensorFlow Google 開發(fā)的一款神經(jīng)網(wǎng)絡的 Python 外部的結(jié)構(gòu)包,也是一個

采用數(shù)據(jù)流圖來進行數(shù)值計算的開源軟件庫.TensorFlow 讓我們可以先繪制計算

結(jié)構(gòu)圖,也可以稱是一系列可人機交互的計算操作,然后把編輯好的Python文件轉(zhuǎn)

換成更高效的 C++,并在后端進行計算。TensorFlow 無可厚非地能被認定為神經(jīng)

網(wǎng)絡中最好用的庫之一。它擅長的任務就是訓練深度神經(jīng)網(wǎng)絡.通過使用

?

TensorFlow 我們就可以快速的入門神經(jīng)網(wǎng)絡,大大降低了深度學習(也就是深度

神經(jīng)網(wǎng)絡)的開發(fā)成本和開發(fā)難度。TensorFlow 的開源性,讓所有人都能使用

并且維護,鞏固它。使它能迅速更新,提升。

因為 TensorFlow 是采用數(shù)據(jù)流圖(data flow graphs)來計算,所以首先我們

得創(chuàng)建一個數(shù)據(jù)流流圖,然后再將我們的數(shù)據(jù)(數(shù)據(jù)以張量(tensor)的形式存在)

放在數(shù)據(jù)流圖中計算。節(jié)點(Nodes)在圖中表示數(shù)學操作,圖中的線(edges)則

表示在節(jié)點間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。訓練模型時 tensor 會不

斷的從數(shù)據(jù)流圖中的一個節(jié)點 flow 到另一節(jié)點,這就是 TensorFlow 名字的由來。

Tensor 張量意義:張量有很多種,零階張量為純量或者標量,一階張量為向

量,二階張量為矩陣,以此類推。

?

4.2 Keras 簡介

4.2.1 Keras 簡單介紹

Keras 是一個開放源碼的高級深度學習程序庫,是一個用 Python 編寫的高級

神經(jīng)網(wǎng)絡 API,能夠運行在 TensorFlow Theano 之上。其主要作者和維護者是

Google 公司的工程師,以 MIT 開放源碼方式授權。Keras 使用最少的程序代碼、

花費最少的時間就可以建立深度學習模型,進行訓練、評估準確率,并進行預測。

相對來說,使用 TensorFlow 這樣低級的鏈接庫雖然可以完全控制各種深度學習

模型的細節(jié),但是需要編寫更多的程序代碼,花費更多時間進行開發(fā)。

?

Keras 的開發(fā)重點是支持快速的實驗,能夠把你的 idea 迅速轉(zhuǎn)換為結(jié)果

?

4.2.2 為什么選擇 Keras

1.Keras 被工業(yè)界和學術界廣泛采用;

2.Keras 模型可以輕松部署在更廣泛的平臺;

3.Keras 支持多個后端引擎;

4.Keras 擁有強大的多 GPU 和分布式訓練支持;

5.Keras 的發(fā)展得到深度學習生態(tài)系統(tǒng)中的關鍵公司的支持。

4.3 Tensorflow Keras 的安裝

在配置好 anaconda 環(huán)境,可以直接使用 pip 的情況下,這里注意激活了虛擬

環(huán)境。使用 pip 下載 TensorFlow2.0.0 庫和 Keras2.3.1 庫。

4.3.1 Tensorflow 的安裝

?

?

?

4.3.2 Keras 的安裝

?

?

?

?

4.3.3 Tensorflow keras 的安裝測試

點擊 開始,選擇 運行 (也可以快捷鍵 win+R),進入 cmd

?

?

?

或者進入 anaconda prompt,開始菜單進入,選擇。

?

?

?

激活虛擬環(huán)境 paddle37

?

輸入命令:activate paddle37

進入 python 環(huán)境

?

導入 keras 命令:import keras

?

出現(xiàn)如圖所示,表示 keras 安裝運行成功。

?

利用 Keras 進行一個程序的測試

使用 Keras 運行一個簡單例子,用來對 IMDB 的正負電影評論進行分類。

import keras

from keras import models

from keras import layers

from keras.datasets import imdb

import numpy as np

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

def vectorize_sequences(sequences, dimension=10000):

# Create an all-zero matrix of shape (len(sequences), dimension)

results = np.zeros((len(sequences), dimension))

for i, sequence in enumerate(sequences):

results[i, sequence] = 1. # set specific indices of results[i] to 1s

return results

# Our vectorized training data

x_train = vectorize_sequences(train_data)

# Our vectorized test data

x_test = vectorize_sequences(test_data)

# Our vectorized labels

y_train = np.asarray(train_labels).astype('float32')

y_test = np.asarray(test_labels).astype('float32')

model = models.Sequential()

model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))

model.add(layers.Dense(16, activation='relu'))

?

model.add(layers.Dense(1, activation='sigmoid'))

model.compile(optimizer='rmsprop',

loss='binary_crossentropy',

metrics=['acc'])

model.fit(x_train, y_train, epochs=4, batch_size=512)

result = model.evaluate(x_test, y_test)

print(result)

結(jié)果如下:

?

本文介紹的 Keras CPU 版本的安裝,推薦大家以后盡可能使用 GPU 版本,提高運算速度。

?跑完本代碼發(fā)現(xiàn),CPU 版本下某些模型的訓練時間還是比較長的。例如使

VGG 預訓練模型,對 Kaggle 貓狗分類問題進行訓練,并微調(diào) VGG 頂層

參數(shù),整個訓練時間達到了 5 個小時左右。

?如果安裝 GPU 版本,需要額外安裝 CUDA Toolkit + cuDNN。需要特別注

意的是 CUDA+cuDNN 的版本。因為每個人的 GPU 顯卡型號和安裝版本不盡

相同,所以本文不再贅述。

沒有 GPU,本代碼基本也能跑得通,就是大型模型的訓練速度比較慢。

?

2利用 Keras 實現(xiàn) CNN 實現(xiàn)手寫數(shù)字識別

4.5.1 加載 keras 手寫數(shù)字識別實驗相關的類庫。

?

4.5.2 加載數(shù)據(jù)集

?

?

本實驗使用的 mnist 數(shù)據(jù)集可以使用 Keras 直接加載。文件內(nèi)容包括:訓練數(shù)

據(jù)、測試數(shù)據(jù)兩部分,分別包含 6000010000 條手寫數(shù)字數(shù)據(jù),每個樣本都是

28*28 像素的。

4.5.3 數(shù)據(jù)預處理

?

?

使用 keras 必須聲明輸入圖像深度的尺寸,例如,具有所有 3 RGB 通道

的全色圖像的深度為 3。本實驗中,我們將深度定為 1,將數(shù)據(jù)集從形狀

n,rows,cols)轉(zhuǎn)換為(n,rows,cols,channels)。并將數(shù)據(jù)的大小除以 255 進行歸

一化。進行歸一化的原因:在不同的評價指標中,量綱單位往往不同,變化區(qū)間

?

處于不同的數(shù)量級,若不進行歸一化,會導致某些指標被忽視,從而影響到數(shù)據(jù)

分析的結(jié)果。歸一化本身就是把需要的數(shù)據(jù)經(jīng)過一定的處理限制在一定的范圍

內(nèi)。np_utils.to_categorical 是將標簽轉(zhuǎn)換為熱值碼,我們需要將 0-9 共十個數(shù)字

標簽轉(zhuǎn)化成 onehot 標簽,例如:數(shù)字標簽“6”轉(zhuǎn)化為 onehot 標簽就是[000

0001000]

4.5.4 構(gòu)建網(wǎng)絡

?

?

?

卷積神經(jīng)網(wǎng)絡由多個卷積層和池化層組成,如下所示。卷積層負責對輸入進

行掃描以生成更抽象的特征表示,池化層對這些特征表示進行過濾,保留最關鍵

的特征信息。

?

2. 編譯、訓練、評估、保存模型

?

編譯模型時,聲明損失函數(shù)采用交叉熵和優(yōu)化器(SGD,Adam 等),接著,

傳入訓練集數(shù)據(jù)進行訓練,batch 大小設置為 32,訓練周期設為 3,接下來,傳

入測試集數(shù)據(jù)對模型進行評估,最后將訓練好的模型保存為 h5 格式的模型文件。

3. 訓練結(jié)果 模型訓練結(jié)果:

?

模型評估結(jié)果:

?

?

?3 利用 Paddle 實現(xiàn)手寫識別

?

4.6.1 神經(jīng)網(wǎng)絡

神經(jīng)網(wǎng)絡(Neural Network) 是一種計算機模型或者數(shù)學模型,是存在于計算

機的神經(jīng)系統(tǒng),由大量的神經(jīng)元相連接并進行計算,在外界信息的基礎上,改變

內(nèi)部的結(jié)構(gòu),常用來對輸入和輸出之間復雜的關系進行建模。

下圖就是一個神經(jīng)網(wǎng)絡系統(tǒng),它有很多層組成。輸入層(Input Layer)負責

接受信息。輸出層(Output Layer)是計算機對這個輸入信息的判斷結(jié)果。中間

的隱藏層(Hidden Layer)是對輸入信息的傳遞和加工處理。

?

4.6.2 如何訓練神經(jīng)網(wǎng)絡

每個神經(jīng)元都有屬于它的激活函數(shù)(activation function),用這些函數(shù)給計

首先需要很多數(shù)據(jù)。比如它要判斷一張圖片是不是貓,就要輸入上千萬張帶

有標簽的貓貓狗狗的圖片,然后再訓練上千萬次。其次,錯誤的結(jié)果也可以幫助

神經(jīng)網(wǎng)絡進行訓練,經(jīng)網(wǎng)絡將會對比正確答案和錯誤答案之間的區(qū)別,然后把這

個區(qū)別反向的傳遞回去,對每個相應的神經(jīng)元向爭取的方向進行一點點的改變。

那么在下一次訓練的時候就可以用已經(jīng)改進過的神經(jīng)元去得到稍微準確的結(jié)構(gòu)。

每個神經(jīng)元都有屬于它的激活函數(shù)(activation function),用這些函數(shù)給計算

機一個刺激行為。在第一次給計算機看貓的圖片時,只有部分的神經(jīng)元被激活,

被激活的神經(jīng)元所傳遞的信息是對輸出結(jié)果最有價值的信息。如果輸出的結(jié)果被

判定為是狗,也就是說是錯誤的,那么就會修改神經(jīng)元,一些容易被激活的神經(jīng)

元會變得遲鈍,另外一些神經(jīng)元會變得敏感,這樣一次次的訓練下去,所有神經(jīng)

元的參數(shù)都在被改變,它們變得對重要的信息越來越敏感。

?

?

4.6.3 梯度下降(Gradient Descent

?

?

運用神經(jīng)網(wǎng)絡的時候,必然會用到誤差方程(Cost Function):

Cost=(predicted-real)^2=(Wx-y)^2,

用來計算預測出來的值和我們實際的值的差別.梯度是當前 Cost 的斜率,

Cost 誤差最小的地方就是 cost 曲線最低的地方,而當前所知道的是自己所在位

置的一個下降方向,則朝向當前方向繼續(xù)下降,直至梯度線躺平,此時就得到

Wx-y 參數(shù)的最理想值。

4.6.4 卷積神經(jīng)網(wǎng)絡 CNN

卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)是一類包含卷積計算

且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡,是深度學習的代表算法之一。卷積神經(jīng)網(wǎng)絡仿

造生物的視知覺(( visual perception)機制構(gòu)建,能夠進行平移不變分類。對卷

積神經(jīng)網(wǎng)絡的研究始于二十世紀 80 90 年代,LeNet-5 是較早出現(xiàn)的卷積神經(jīng)

網(wǎng)絡。

加入采用全連接網(wǎng)絡進行圖像分類:

?

CNN 特點之一:局部卷積

可以把卷積想象成作用于矩陣的一個滑動窗口函數(shù)。滑動窗口又稱作卷積

核、濾波器或是特征檢測器。

對于給定的輸入圖像,輸出特征圖中每個像素實際上是輸入圖像中局部區(qū)域

中像素的加權平均,其權值由卷積核定義。

卷積具體實例:

?

?

CNN 特點之二:多卷積核

為了充分提取特征,可以使用多個卷積核

每個卷積核都會對輸入圖像進行卷積處理,生成另一幅圖像。不同卷積核生

成的不同圖像可以理解為是該輸入圖像的不同通道。

CNN 特點之三:池化處理

池化處理也叫作降采樣處理(down-pooling),是對不同位置的特征進行聚合

統(tǒng)計。通常是取對應位置的最大值(最大池化)、平均值平均池化)等。

池化的優(yōu)點:1.降維 2.克服過擬合 3.在圖像識別領域,池化還能提供平移和

旋轉(zhuǎn)不變性。

CNN 特點之四:多層處理

?

?

一般而言,在圖像處理中,一層卷積及降采樣往往只學到了局部的特征。層

數(shù)越多,學到的特征越全局化。因此通過這樣的多層處理,低級的特征組合形成

更高級的特征表示。

4.6.5 MNIST 數(shù)據(jù)集

Mnist 數(shù)據(jù)集分為兩部分,分別含有 50000 張訓練圖片和 10000 張測試圖片。

每一張圖片包含 28*28 個像素。Mnist 數(shù)據(jù)集把代表一張圖片的二維數(shù)據(jù)轉(zhuǎn)

開成一個向量,長度為 28*28=784。因此在 Mnist 的訓練數(shù)據(jù)集中訓練圖片是一

個形狀為[50000, 784]的張量,第一個維度數(shù)字用來索引圖片,第二個維度數(shù)字

用來索引每張圖片中的像素點,圖片里的某個像素的強度值介于-1-1 之間。

4.6.6 步驟

在配置好 anaconda 環(huán)境,可以直接使用 pip 的情況下,使用 pip 下載

paddlepaddle 庫和paddlepaddle-hub 庫。

加載飛漿平臺與手寫數(shù)字識別實驗相關的類庫。

數(shù)據(jù)讀取與數(shù)據(jù)集劃分

本實驗使用的mnist 數(shù)據(jù)集以json 格式存儲在本地。

'./"目錄下讀取文件名稱為'mnist.json.gz' MINST 手寫數(shù)字識別數(shù)據(jù),文

件格式是壓縮后的 json 文件。文件內(nèi)容包括:訓練數(shù)據(jù)、驗證數(shù)據(jù)、測試數(shù)據(jù)三

?

部分,分別包含 500001000010000 條手寫數(shù)字數(shù)據(jù)和兩個元素列表。以訓練

集數(shù)據(jù)為例,它為兩個元素的列表為[traim_imgs, train_labels]

train_imgs:一個維度為[50000,784]的二維列表,包含 50000 張圖片。每張圖

片用一個長度為 784 的向量表示,內(nèi)容是 28*28 尺寸的像素灰度值(黑白圖片)

train_labels:一個維度為[50000,]的列表,表示這些圖片對應的分類標簽,即

0-9 之間的一個數(shù)字。

接下來將數(shù)據(jù)讀取出來:

?

?

定義數(shù)據(jù)讀取函數(shù)

飛槳提供分批次讀取數(shù)據(jù)函數(shù) paddle.batch,該接口是一個 reader 的裝飾器,

返回的 reader 將輸入的 reader 的數(shù)據(jù)打包,成指定的 batch_size 大小的批處理數(shù)據(jù)

(batched.data)

在定義數(shù)據(jù)讀取函數(shù)中,我們需要做很多事情,包括但不限于:

打亂數(shù)據(jù),保證每輪訓練讀取的數(shù)據(jù)順序不同。

數(shù)據(jù)類型轉(zhuǎn)換。

?

?

?

?

上面代碼中 mode 參數(shù)可以取三個值中的一個,分別是 trainvalideval

選擇的模式不同,讀取的數(shù)據(jù)集也不同,為了兼容后面的代碼,讀取后的變量都

?

相同,都是 imgslabels;

在數(shù)據(jù)生成器中,只有在 mode train 的情況下我們才考慮把讀取的數(shù)據(jù)打

;接下來是數(shù)據(jù)格式處理,目標類型是 shape[1,28,28],1 表示灰度圖,數(shù)據(jù)類型

float32;通過 yield 關鍵字返回一個 batch 的數(shù)據(jù);在最后一個 index_list 中,如

imgs_list 長度不滿足一個 batch,這時 imgs_list 長度不為零,會直接跳出 for

循環(huán),被后面的 len(imgs_list)攔截,形成一個小的 mini-batch

為機器校驗代碼,如果數(shù)據(jù)集中的圖片數(shù)量和標簽數(shù)量不等,說明數(shù)據(jù)邏輯

存在問題。可以使用 assert 語句校驗圖像數(shù)量和標簽數(shù)據(jù)是否一致。

人工校驗方法:首先打印數(shù)據(jù)輸出結(jié)果,觀察是否是設置的格式。再從訓練

的結(jié)果驗證數(shù)據(jù)處理和讀取的有效性。實現(xiàn)數(shù)據(jù)處理和加載函數(shù)后,我們可以調(diào)

用它讀取一次數(shù)據(jù),觀察數(shù)據(jù)的 shape 和類型是否與函數(shù)中設置的一致。

定義模型結(jié)構(gòu)

?

?

?

?

卷積神經(jīng)網(wǎng)絡由多個卷積層和池化層組成,如下所示。卷積層負責對輸入進

行掃描以生成更抽象的特征表示,池化層對這些特征表示進行過濾,保留最關鍵

的特征信息。

線性模型的局限性:只通過線性變換,任意層的全連接神經(jīng)網(wǎng)絡和單層神經(jīng)

網(wǎng)絡的表達能力并沒有任何區(qū)別,線性模型能解決的問題是有限的。激活函數(shù)的

目的是去線性化,如果將每一個神經(jīng)元的輸出通過一個非線性函數(shù),那么整個神

經(jīng)網(wǎng)絡的模型也就不再是線性的了,這個非線性函數(shù)就是激活函數(shù)。

評價某個激活函數(shù)是否有用時,需要考慮的因素有:

1)該函數(shù)應是單調(diào)的, 這樣輸出便會隨著輸入的增長而增長,從而使利用梯度

下降法尋找局部極值點成為可能.

2)該函數(shù)應是可微分的,以保證該函數(shù)定義域內(nèi)的任意一點上導數(shù)都存在,

而使得梯度下降法能夠正常使用來自這類激活函數(shù)的輸出。

?

relu 函數(shù)

?

relu 函數(shù)是個非常常用的激活函數(shù),其公式為:f(x) = max(0, x),即,大于 0

的為其本身,否則為 0

.

Tanh 函數(shù)

其公式為:y =(exp(x)-exp(-x))/(exp(x)+exp(-x)) = (1 - exp(-2x)) / (1 +

exp(-2x)),導數(shù):df(x)/dx=1-f(x)^2

在具體的例子中,如卷積神經(jīng)網(wǎng)絡 Convolutional neural networks 的卷積層

中,一般使用的激勵函數(shù)是 relu.在循環(huán)神經(jīng)網(wǎng)絡中 recurrent neural networks,一般

使用的是 tanh 或者是 relu

Softmax 函數(shù)

Softmax 函數(shù),又稱歸一指數(shù)函數(shù),多用于分類過程,它將多個神經(jīng)元的輸出,

映射到(0.1)區(qū)間內(nèi)。F.softmax 的作用是,輸出每一個預測標簽(0-9)的的概

率,并且十個預測標簽的概率之和為 1

?

訓練模型

?

?

?

通過 paddle.set_device API,設置在 GPU 上訓練還是 CPU 上訓練。參數(shù)

device (str):此參數(shù)確定特定的運行設備,可以是 cpu gpu:x 或者是 xpu:x。其

中,x GPU XPU 的編號。當 device cpu 時,程序在 CPU 上運行;當 device

gpu:x 時,程序在 GPU 上運行。

opt = paddle.optimizer.SGD(learning_rate=0.01,

weight_decay=paddle.regularizer.L2Decay(coeff=0.1),

parameters=model.parameters())

在深度學習神經(jīng)網(wǎng)絡模型中,通常使用標準的隨機梯度下降算法 SGD 更新

參數(shù),學習率 learning_rate 代表參數(shù)更新幅度的大小,即步長。當學習率最優(yōu)

時,模型的有效容量最大,最終能達到的效果最好。學習率和深度學習任務類型

有關,合適的學習率往往需要大量的實驗和調(diào)參經(jīng)驗。探索學習率最優(yōu)值時需要

注意如下兩點:

學習率不是越小越好。學習率越小,損失函數(shù)的變化速度越慢,意味著需要

花費更長的時間進行收斂。

學習率不是越大越好。只根據(jù)總樣本集中的一個批次計算梯度,抽樣誤差會

導致計算出的梯度不是全局最優(yōu)的方向,且存在波動。在接近最優(yōu)解時,過大的

學習率會導致參數(shù)在最優(yōu)解附近震蕩,損失難以收斂。

加入正則化項,避免模型過擬合。

過擬合現(xiàn)象:對于樣本量有限、但需要使用強大模型的復雜任務,模型很容

易出現(xiàn)過擬合的表現(xiàn),即在訓練集上的損失小,在驗證集或測試集上的損失較大。

過擬合原因:模型過于敏感,而訓練數(shù)據(jù)量太少或其中的噪音太多。

正則化項:為了防止模型過擬合,在沒有擴充樣本量的可能下,只能降低模

型的復雜度,可以通過限制參數(shù)的數(shù)量或可能取值(參數(shù)值盡量小)實現(xiàn)。在模

型的優(yōu)化目標(損失)中人為加入對參數(shù)規(guī)模的懲罰項。當參數(shù)越多或取值越大

?

時,該懲罰項就越大。通過調(diào)整懲罰項的權重系數(shù),可以使模型在盡量減少訓

練損失保持模型的泛化能力之間取得平衡。

正則化項的存在,增加了模型在訓練集上的損失。飛槳支持為所有參數(shù)加上

統(tǒng)一的正則化項,也支持為特定的參數(shù)添加正則化項。前者的實現(xiàn)如下代碼所示,

僅在優(yōu)化器中設置weight_decay 參數(shù)即可實現(xiàn)。使用參數(shù)coeff 調(diào)節(jié)正則化項的

權重,權重越大時,對模型復雜度的懲罰越高。

cross_entropy()為計算交差熵函數(shù),常用于分類問題,神經(jīng)網(wǎng)絡的輸出層為

輸出十個標簽的概率模式,因此,正確解標簽對應的輸出越大,交叉熵的值越

接近0;當輸出為1 時,交叉熵誤差為0。反之,如果正確解標簽對應的輸出越

小,則交叉熵的值越大。

paddle.save(model.state_dict(), 'mnist_regul12.pdparams')為輸出參數(shù)模型函 數(shù),可以用于后續(xù)加載繼續(xù)訓練。

結(jié)果可視化

?

可視化分析:

訓練模型時,經(jīng)常需要觀察模型的評價指標,分析模型的優(yōu)化過程,以確保

訓練是有效的。可選用這兩種工具:Matplotlib 庫和VisualDL。在此處,僅展示

Matplotlib 的畫法。

Matplotlib 庫:Matplotlib 庫是 Python 中使用的最多的 2D 圖形繪圖庫,

它有一套完全仿照 MATLAB 的函數(shù)形式的繪圖接口,使用輕量級的 PLT

(Matplotlib)作圖是非常簡單的。

VisualDL:如果期望使用更加專業(yè)的作圖工具,可以嘗試VisualDL,飛槳

可視化分析工具。VisualDL 能夠有效地展示飛槳在運行過程中的計算圖、各種

指標變化趨勢和數(shù)據(jù)信息。

?

使用 Matplotlib 庫繪制損失隨訓練下降的曲線圖。將訓練的批次編號作為 X

軸坐標,該批次的訓練損失作為 Y 軸坐標。訓練開始前,聲明兩個列表變量存

儲對應的批次編號(iters=[])和訓練損失(losses=[]),隨著訓練的進行,將 iter

losses 兩個列表填滿。訓練結(jié)束后,將兩份數(shù)據(jù)以參數(shù)形式導入 PLT 的橫縱坐標。

最后,調(diào)用 plt.plot()函數(shù)即可完成作圖。

?

結(jié)果如下所示:

?

?

總結(jié)

以上是生活随笔為你收集整理的基于神经网络的图像识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。