最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

python用TensorFlow 2二維卷積神經(jīng)網(wǎng)絡(luò)CNN對(duì)圖像物體識(shí)別混淆矩陣評(píng)估

2022-05-15 22:18 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=26230?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

什么是CNN

本文演示了如何訓(xùn)練一個(gè)簡單的卷積神經(jīng)網(wǎng)絡(luò)?(CNN) 來對(duì) 圖像進(jìn)行分類。

Convolutional?Neural?Networks?(ConvNets 或 CNNs)是一類神經(jīng)網(wǎng)絡(luò),已被證明在圖像識(shí)別和分類等領(lǐng)域非常有效。與傳統(tǒng)的多層感知器架構(gòu)不同,它使用兩個(gè)稱為?convolution?和?pooling?的操作將圖像簡化為其基本特征,并使用這些特征來理解和分類圖像。

CNN重要術(shù)語

卷積層

卷積是從輸入圖像中提取特征的第一層。卷積通過使用輸入數(shù)據(jù)的小方塊學(xué)習(xí)圖像特征來保留像素之間的關(guān)系。這是一個(gè)數(shù)學(xué)運(yùn)算,需要兩個(gè)輸入,例如?image matrix?和?filter?或?kernel。然后圖像矩陣的卷積乘以過濾器矩陣,稱為?Feature?Map。

使用不同濾波器對(duì)圖像進(jìn)行卷積可以通過應(yīng)用濾波器來執(zhí)行邊緣檢測、模糊和銳化等操作。

激活函數(shù)

由于卷積是線性操作,圖像遠(yuǎn)非線性,非線性層通常直接放在卷積層之后,以引入?nonlinearity?激活圖。

有幾種類型的非線性操作,流行的是:

Sigmoid: sigmoid 非線性具有數(shù)學(xué)形式 f(x) = 1 / 1 + exp(-x)。它取一個(gè)實(shí)數(shù)值并將其標(biāo)準(zhǔn)化到 0 到 1 之間的范圍內(nèi)。

Tanh: Tanh 將實(shí)數(shù)值壓縮到 [-1, 1] 范圍內(nèi)。

ReLU: 線性單元 (ReLU) 計(jì)算函數(shù) ?(κ)=max (0,κ)。

Leaky?ReL:Leaky ReLU 函數(shù)只不過是 ReLU 函數(shù)的改進(jìn)版本。Leaky ReLU 就是為了解決這個(gè)問題而定義的。

Maxout:Maxout 激活是 ReLU 和leaky ReLU 函數(shù)的泛化。

ELU:Exponential?Linear?Unit?或簡稱ELU,也是Rectiufied Linear Unit (ReLU)的一種變體。與leaky relu和parametric ReLU函數(shù)不同,ELU不是直線,而是使用對(duì)數(shù)曲線來定義負(fù)值。

替代文字

過濾器 | 核大小 | 過濾器數(shù)量

卷積使用a?從輸入圖像kernel?中提取某些 特征內(nèi)容。核是一個(gè)矩陣,它?slide跨越圖像并與輸入相乘,從而以某種理想的方式增強(qiáng)輸出。

在我們深入研究之前,核是一個(gè)權(quán)重矩陣,它與輸入相乘以提取相關(guān)特征。核矩陣的維度是卷積的名稱。例如,在 中?2D?convolutions,核矩陣是?2D?matrix。

一個(gè)普通的卷積層實(shí)際上由多個(gè)這樣的過濾器組成。

步長

在輸入矩陣上移動(dòng)的像素?cái)?shù)。當(dāng)步長為 1 時(shí),我們一次將過濾器移動(dòng)到 1 個(gè)像素。當(dāng)步長為 2 時(shí),我們一次將過濾器移動(dòng)到 2 個(gè)像素,依此類推。下圖顯示卷積將以 1 的步長工作。

填充

padding?意味著在數(shù)據(jù)的邊界處提供額外的像素。有時(shí)過濾器不能完全適合輸入圖像,那么我們將使用填充。

我們有兩個(gè)選擇:

  • 用零填充圖片(零填充),使其適合

  • 刪除過濾器不適合的圖像部分。這稱為有效填充,它只保留圖像的有效部分。

池化層

A?pooling layer?是在卷積層之后添加的新層。具體來說,在對(duì)卷積層輸出的特征圖應(yīng)用非線性(例如 ReLU)之后;

當(dāng)圖像太大時(shí),池化層部分會(huì)減少參數(shù)的數(shù)量。?Spatial?pooling?也稱為?subsampling?或?downsampling?減少每個(gè)地圖的維數(shù)但保留重要信息。

空間池可以有不同的類型:

  • 最大池化

  • 平均池化

Max?pooling?從校正后的特征圖中取最大元素。計(jì)算特征圖上每個(gè)補(bǔ)丁的平均值稱為?average pooling。特征圖調(diào)用中每個(gè)補(bǔ)丁的所有元素的總和為?sum pooling.

扁平化和密集層

Flattening?正在將數(shù)據(jù)轉(zhuǎn)換為一維數(shù)組以將其輸入到下一層。我們展平卷積層的輸出以創(chuàng)建單個(gè)長特征向量。

Fully?connected layer?:傳統(tǒng)的多層感知器結(jié)構(gòu)。它的輸入是一個(gè)一維向量,表示前幾層的輸出。它的輸出是附在圖像上的不同可能標(biāo)簽的概率列表(例如狗、貓、鳥)。接收概率最高的標(biāo)簽是分類決策。

下載數(shù)據(jù)和模型構(gòu)建

該?數(shù)據(jù)集包含 60,000 張彩色圖像?10?classes,每個(gè)類別有 6,000 張圖像。數(shù)據(jù)集分為 50,000 張訓(xùn)練圖像和 10,000 張測試圖像。這些類是互斥的,它們之間沒有重疊。


  1. X_train = X_train/255

  2. X_test = X_test/255

  3. X_train.shape, X_test.shape

驗(yàn)證數(shù)據(jù)

為了驗(yàn)證數(shù)據(jù)集看起來是否正確,讓我們繪制測試集中的第一張圖像并顯示圖像。

plt.imshow(X_test[0])

y_test

構(gòu)建 CNN 模型

下面的 8 行代碼使用一個(gè)通用模式定義了卷積基:一堆?Conv2D?、MaxPooling2D? 、?DropoutFlatten?層?Dense?。

作為輸入,a?Conv2D?采用形狀 (image_height, image_width, color_channels) 的張量。

Maxpool2D()通過對(duì)沿特征軸的每個(gè)維度在 (2,2)Downsamples?定義的窗口上取最大值來對(duì)輸入表示進(jìn)行??分層?。

Dropout() 用于在訓(xùn)練階段的每次更新時(shí)將隱藏單元的出邊隨機(jī)設(shè)置為 0。

Flatten()?用于將數(shù)據(jù)轉(zhuǎn)換為一維數(shù)組,用于輸入到下一層。

Dense()?層是具有 128 個(gè)神經(jīng)元的常規(guī)深度連接神經(jīng)網(wǎng)絡(luò)層。輸出層也是一個(gè)密集層,有 10 個(gè)神經(jīng)元用于 10 個(gè)類。

使用的激活函數(shù)是?softmax。Softmax 將實(shí)數(shù)向量轉(zhuǎn)換為分類概率向量。輸出向量的元素在 (0, 1) 范圍內(nèi)并且總和為 1。



  1. model.add(Flatten())

  2. model.add(Dense(units = 128, activation='relu'))

  3. model.add(Dense(units=10, activation='softmax'))

  4. model.summary()

編譯和訓(xùn)練模型

這是?compiling?模型和?fitting?訓(xùn)練數(shù)據(jù)。我們將使用 10?epochs?來訓(xùn)練模型。一個(gè)時(shí)期是對(duì)所提供的整個(gè)數(shù)據(jù)的迭代。??是在每個(gè) epoch 結(jié)束時(shí)validation_data?評(píng)估和任何模型指標(biāo)的?數(shù)據(jù)。loss模型不會(huì)根據(jù)這些數(shù)據(jù)進(jìn)行訓(xùn)練。由于指標(biāo) =?['sparse_categorical_accuracy']?模型將基于?accuracy.

history = model.fit(X_train

我們現(xiàn)在將繪制?model accuracy?and??model loss。在模型準(zhǔn)確度中,我們將繪制訓(xùn)練準(zhǔn)確度和驗(yàn)證準(zhǔn)確度,在模型損失中,我們將繪制訓(xùn)練損失和驗(yàn)證損失。

  1. # 繪制訓(xùn)練和驗(yàn)證的準(zhǔn)確值

  2. epoch_range = range(1, 11)

  3. plt.plot(epoch_range, history.history['sparse_categorical_accuracy'])



  4. # 繪制訓(xùn)練和驗(yàn)證的損失值

  5. plt.plot(epoch_range, history.history['loss'])


  1. y_pred = model.predict_classes(X_test)



  2. confusion_matrix

  3. mat


  4. plot

結(jié)論:

在本教程中,我們訓(xùn)練了簡單的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 來對(duì) 圖像進(jìn)行分類。從學(xué)習(xí)曲線圖中我們觀察到,在 3 個(gè) epoch 之后,驗(yàn)證準(zhǔn)確度低于訓(xùn)練集準(zhǔn)確度,即我們的模型是過擬合,這意味著我們增加了模型的復(fù)雜性。還使用混淆矩陣評(píng)估模型。觀察到該模型對(duì)鳥、貓、鹿、狗等標(biāo)簽的預(yù)測精度較低。

?

最受歡迎的見解

1.r語言用神經(jīng)網(wǎng)絡(luò)改進(jìn)nelson-siegel模型擬合收益率曲線分析

2.r語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化

3.python用遺傳算法-神經(jīng)網(wǎng)絡(luò)-模糊邏輯控制算法對(duì)樂透分析

4.用于nlp的python:使用keras的多標(biāo)簽文本lstm神經(jīng)網(wǎng)絡(luò)分類

5.用r語言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實(shí)例

6.R語言基于Keras的小數(shù)據(jù)集深度學(xué)習(xí)圖像分類

7.用于NLP的seq2seq模型實(shí)例用Keras實(shí)現(xiàn)神經(jīng)機(jī)器翻譯

8.python中基于網(wǎng)格搜索算法優(yōu)化的深度學(xué)習(xí)模型分析糖

9.matlab使用貝葉斯優(yōu)化的深度學(xué)習(xí)


python用TensorFlow 2二維卷積神經(jīng)網(wǎng)絡(luò)CNN對(duì)圖像物體識(shí)別混淆矩陣評(píng)估的評(píng)論 (共 條)

分享到微博請遵守國家法律
安溪县| 古蔺县| 确山县| 虎林市| 门头沟区| 南充市| 湘阴县| 尼玛县| 永靖县| 新绛县| 井研县| 滁州市| 油尖旺区| 秦皇岛市| 白山市| 宾阳县| 衡阳县| 德州市| 石家庄市| 通山县| 富锦市| 专栏| 贵德县| 武冈市| 板桥市| 永登县| 碌曲县| 金平| 固原市| 阿克苏市| 通化市| 新密市| 从江县| 永安市| 姜堰市| 白朗县| 龙门县| 化州市| 北碚区| 隆昌县| 吴川市|