<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 熱文 | 卷積神經(jīng)網(wǎng)絡(luò )入門(mén)案例,輕松實(shí)現花朵分類(lèi)(1)

熱文 | 卷積神經(jīng)網(wǎng)絡(luò )入門(mén)案例,輕松實(shí)現花朵分類(lèi)(1)

發(fā)布人:AI科技大本營(yíng) 時(shí)間:2021-05-15 來(lái)源:工程師 發(fā)布文章

前言

本文介紹卷積神經(jīng)網(wǎng)絡(luò )的入門(mén)案例,通過(guò)搭建和訓練一個(gè)模型,來(lái)對幾種常見(jiàn)的花朵進(jìn)行識別分類(lèi);使用到TF的花朵數據集,它包含5類(lèi),即:“雛菊”,“蒲公英”,“玫瑰”,“向日葵”,“郁金香”;共 3670 張彩色圖片;通過(guò)搭建和訓練卷積神經(jīng)網(wǎng)絡(luò )模型,對圖像進(jìn)行分類(lèi),能識別出圖像是“蒲公英”,或“玫瑰”,還是其它。

1.png

本篇文章主要的意義是帶大家熟悉卷積神經(jīng)網(wǎng)絡(luò )的開(kāi)發(fā)流程,包括數據集處理、搭建模型、訓練模型、使用模型等;更重要的是解在訓練模型時(shí)遇到“過(guò)擬合”,如何解決這個(gè)問(wèn)題,從而得到“泛化”更好的模型。

思路流程

  • 導入數據集

  • 探索集數據,并進(jìn)行數據預處理

  • 構建模型(搭建神經(jīng)網(wǎng)絡(luò )結構、編譯模型)

  • 訓練模型(把數據輸入模型、評估準確性、作出預測、驗證預測)  

  • 使用訓練好的模型

  • 優(yōu)化模型、重新構建模型、訓練模型、使用模型

目錄

  • 導入數據集

  • 探索集數據,并進(jìn)行數據預處理

  • 構建模型

  • 訓練模型

  • 使用模型

  • 優(yōu)化模型、重新構建模型、訓練模型、使用模型(過(guò)擬合、數據增強、正則化、重新編譯和訓練模型、預測新數據)

導入數據集

使用到TF的花朵數據集,它包含5類(lèi),即:“雛菊”,“蒲公英”,“玫瑰”,“向日葵”,“郁金香”;共 3670 張彩色圖片;數據集包含5個(gè)子目錄,每個(gè)子目錄種存放一個(gè)類(lèi)別的花朵圖片。

# 下載數據集
import pathlib
dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)
data_dir = pathlib.Path(data_dir)
# 查看數據集圖片的總數量
image_count = len(list(data_dir.glob('*/*.jpg')))
print(image_count)

探索集數據,并進(jìn)行數據預處理

查看一張郁金香的圖片: 

# 查看郁金香tulips目錄下的第1張圖片;
tulips = list(data_dir.glob('tulips/*'))
PIL.Image.open(str(tulips[0]))

2.png

加載數據集的圖片,使用keras.preprocessing從磁盤(pán)上加載這些圖像。

# 定義加載圖片的一些參數,包括:批量大小、圖像高度、圖像寬度
batch_size = 32
img_height = 180
img_width = 180
# 將80%的圖像用于訓練
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)
# 將20%的圖像用于驗證
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="validation",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)
# 打印數據集中花朵的類(lèi)別名稱(chēng),字母順序對應于目錄名稱(chēng)
class_names = train_ds.class_names
print(class_names)

查看一下訓練數據集中的9張圖像

# 查看一下訓練數據集中的9張圖像
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 10))
for images, labels in train_ds.take(1):
  for i in range(9):
    ax = plt.subplot(3, 3, i + 1)
    plt.imshow(images[i].numpy().astype("uint8"))
    plt.title(class_names[labels[i]])
    plt.axis("off")

圖像形狀

傳遞這些數據集來(lái)訓練模型model.fit,可以手動(dòng)遍歷數據集并檢索成批圖像:

for image_batch, labels_batch in train_ds:
  print(image_batch.shape)
  print(labels_batch.shape)
  break

能看到輸出:(32, 180, 180, 3)   (32,)

image_batch是圖片形狀的張量(32, 180, 180, 3)。32是指批量大??;180,180分別表示圖像的高度、寬度,3是顏色通道RGB。32張圖片組成一個(gè)批次。

label_batch是形狀的張量(32,),對應32張圖片的標簽。

數據集預處理

下面進(jìn)行數據集預處理,將像素的值標準化至0到1的區間內:

# 將像素的值標準化至0到1的區間內。
normalization_layer = layers.experimental.preprocessing.Rescaling(1./255)

為什么是除以255呢?由于圖片的像素范圍是0~255,我們把它變成0~1的范圍,于是每張圖像(訓練集、測試集)都除以255。

標準化數據

# 調用map將其應用于數據集:
normalized_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))
image_batch, labels_batch = next(iter(normalized_ds))
first_image = image_batch[0]
# Notice the pixels values are now in `[0,1]`.
print(np.min(first_image), np.max(first_image))


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 深度學(xué)習

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>