拓端tecdat:R語(yǔ)言深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò) (CNN)對(duì) CIFAR 圖像進(jìn)行分類:訓(xùn)練與結(jié)果評(píng)估
原文鏈接:http://tecdat.cn/?p=24386
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
本文演示了訓(xùn)練一個(gè)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 來(lái)對(duì) CIFAR 圖像進(jìn)行分類。由于本教程使用?Keras?Sequential API,因此創(chuàng)建和訓(xùn)練我們的模型只需幾行代碼。
設(shè)置
library(keras)
下載并準(zhǔn)備 CIFAR10 數(shù)據(jù)集
CIFAR10 數(shù)據(jù)集包含 10 個(gè)類別的 60,000 張彩色圖像,每個(gè)類別有 6,000 張圖像。數(shù)據(jù)集分為 50,000 張訓(xùn)練圖像和 10,000 張測(cè)試圖像。這些類是互斥的,它們之間沒(méi)有重疊。
驗(yàn)證數(shù)據(jù)
為了驗(yàn)證數(shù)據(jù)集看起來(lái)是否正確,讓我們繪制訓(xùn)練集中的前 25 張圖像并在每張圖像下方顯示類別名稱。?
train %>%
map(as.rater, max = 255) %>%

創(chuàng)建卷積基
下面的6行代碼使用一種常見(jiàn)的模式定義了卷積基礎(chǔ):Conv2D和MaxPooling2D層的堆疊。
作為輸入,CNN接受形狀的張量(image_height, image_width, color_channels),忽略了批次大小。如果你是第一次接觸這些維度,color_channels指的是(R,G,B)。在這個(gè)例子中,你將配置我們的CNN來(lái)處理形狀為(32,32,3)的輸入,這是CIFAR圖像的格式。你可以通過(guò)將參數(shù)input_shape傳遞給我們的第一層來(lái)做到這一點(diǎn)。
?
kers_moe_etl %>%
laer_c_2d(fles = 32, ene_sz = c(3,3), acan = "relu",
lye_apoi_2d(posize = c(2,2)) %>%
lae_cv_2d(filrs = 64, relze = c(3,3), ctitio = "reu")
到目前為止,讓我們展示一下我們模型的架構(gòu)。
summary(model)

在上面,你可以看到每個(gè)Conv2D和MaxPooling2D層的輸出是一個(gè)三維形狀的張量(高度、寬度、通道)。當(dāng)你深入到網(wǎng)絡(luò)中時(shí),寬度和高度維度往往會(huì)縮小。每個(gè)Conv2D層的輸出通道的數(shù)量由第一個(gè)參數(shù)控制(例如32或64)。通常情況下,隨著寬度和高度的縮小,你可以承受(計(jì)算上)在每個(gè)Conv2D層中增加更多的輸出通道。
在頂部添加密集層
為了完成我們的模型,您需要將卷積基(形狀為 (3, 3, 64))的最后一個(gè)輸出張量輸入一個(gè)或多個(gè) Dense 層以執(zhí)行分類。密集層將向量作為輸入(1D),而當(dāng)前輸出是 3D 張量。首先,您將 3D 輸出展平(或展開(kāi))為 1D,然后在頂部添加一個(gè)或多個(gè) Dense 層。CIFAR 有 10 個(gè)輸出類,因此您使用具有 10 個(gè)輸出和 softmax 激活的最終 Dense 層。
model %>%
leree(unis = 64, aciaion = "relu") %>%
ayedese(unis = 10, acivin = "sftax")
這是我們模型的完整架構(gòu)。
注意?Keras 模型是可變對(duì)象,您不需要在上面的 chubnk 中重新分配模型。
summary(modl)

如您所見(jiàn),我們的 (3, 3, 64) 輸出在經(jīng)過(guò)兩個(gè) Dense 層之前被展平為形狀為 (576) 的向量。
編譯和訓(xùn)練模型
moel %>% comle(
optier = "adam",
lss = "specatialosnopy",
mecs = "accray"
)

評(píng)估模型
plot(hsy)

ealte(oel, x,y, erbe = 0)

我們簡(jiǎn)單的 CNN 已經(jīng)實(shí)現(xiàn)了超過(guò) 70% 的測(cè)試準(zhǔn)確率。

最受歡迎的見(jiàn)解
1.r語(yǔ)言用神經(jīng)網(wǎng)絡(luò)改進(jìn)nelson-siegel模型擬合收益率曲線分析
2.r語(yǔ)言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和結(jié)果可視化
3.python用遺傳算法-神經(jīng)網(wǎng)絡(luò)-模糊邏輯控制算法對(duì)樂(lè)透分析
4.用于nlp的python:使用keras的多標(biāo)簽文本lstm神經(jīng)網(wǎng)絡(luò)分類
5.用r語(yǔ)言實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)股票實(shí)例
6.R語(yǔ)言基于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í)