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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习(18)神经网络与全连接层一: 数据加载

發布時間:2023/12/15 pytorch 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(18)神经网络与全连接层一: 数据加载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習(18)神經網絡與全連接層一: 數據加載

  • 1. 常用數據集
  • 2. MNIST數據集
    • (1) MNIST樣本
    • (2) MNIST加載案例
  • 3. CIFAR10/100
    • (1) CIFAR10/100樣本
    • (2) CIFAR10/100加載案例
    • (3) tf.data.Dataset
    • (4) .shuffle(打散功能)
    • (5) .map(數據預處理功能)
    • (6) .batch
    • (7) StpIteration
    • (8) .repeat()
    • (9) For example

Outline

  • keras.datasets
  • tf.data.Dataset.from_tensor_slices
    • shuffle
    • map
    • batch
    • repeat
  • we will talk Input Pipeline later

1. 常用數據集

keras.datasets

  • boston housing
    • Boston housing price regression dataset.
  • mnist/fashion mnist
    • MNIST/Fashion-MNIST dataset.
  • cifar10/100
    • small images classification dataset.
  • imdb
    • sentiment clssification dataset.

2. MNIST數據集

(1) MNIST樣本

  • 圖片的shape=[28, 28, 1],共有70k張圖片,其中60k張作為訓練集,10k張作為測試集。

(2) MNIST加載案例

(a)(x, y), (x_test, y_test) = kares.datasets.mnist.load_data(): 自動下載,管理,解析,讀取,轉換這一系列的工作,最終拿到的是一個Numpy的格式,其中(x, y)為train,即訓練集,x.shape=[60000, 28, 28],y.shape=[60000,]; (x_test, y_test)為test,即測試集,x_test.shape=[10000, 28, 28],y_test.shape=[10000,];
(b)x.min()=0; x.max()=255; 注意這里的min和max都是Numpy里的API,這倆值代表了一張圖片里每個像素點的灰度值在[0~255]之間; 為了方便計算,需要歸一化操作,在后邊的操作中需要將其除以255,來達到將其值控制在[01](或者[-11]、[-0.5~0.5],具體怎么處理要看具體應用目的)之間的目的;
(c)y[:4]: 取前4張圖片的y值,即標簽值,為[5, 0, 4, 1],即代表第一章圖片的label值為5; 即代表第二章圖片的label值為0; 即代表第三章圖片的label值為4; 即代表第四章圖片的label值為1; 數據類型為unit8;
(d)y_onehot = tf.one_hot(y, depth=10): 將y進行onehot編碼,因為共有10個數字類別,所以設置depth=10;
(e)y_onehot[:2]: 查看前兩個元素,即第一個元素的標簽值為“5”,所以其onehot編碼為[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,]; 第一個元素的標簽值為“0”,所以其onehot編碼為[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,];

3. CIFAR10/100

(1) CIFAR10/100樣本

  • CIFAR10表示共有10種類型(大類,例如車、狗、鳥等等)的圖片; CIFAR100表示共有100種類型(小類,例如狗分為邊牧、田園犬等等)的圖片; CIFAR10和CIFAR100是同一個數據集;
  • 每張彩色圖片的shape=[32, 32, 3];

(2) CIFAR10/100加載案例

(a)(x, y), (x_test, y_test) = kares.datasets.cifar10.load_data(): 加載與解析CIFAR10數據集;
(x, y), (x_test, y_test) = kares.datasets.cifar100.load_data(): 加載與解析CIFAR100數據集;
(b) 輸入輸出
訓練集輸入x.shape=[50000, 32, 32, 3];
訓練集輸出y.shape=[50000, 1];
測試集輸入x_test.shape=[10000, 32, 32, 3];
測試集輸出y_test.shape=[10000, 1];

(3) tf.data.Dataset

  • from_tensor_slices()

(a)db = tf.data.Dataset.from_tensor_slices(x_test): 利用from_tensor_slices()函數將Numpy類型的x_test轉換為Dataset的實例,db就可以很方便地進行迭代操作;
(b)next(iter(db)).shape: iter(db)為迭代器,即it = iter(db) →\to next(it);
(c) from_tensor_slice()比“先將數據轉換為Tensor類型再一個個讀取的方法”要好很多;
(d)db = tf.data.Dataset.from_tensor_slices((x_test, y_test)): 這里可以看出,Dataset可以傳入兩個參數,x_test即images,y_test即label;

(4) .shuffle(打散功能)

(a)db = db.shuffle(10000): 將[0~10000]區域內的樣本隨機打散,注意打散的時候x_test對應的y_test必須保持一致;

(5) .map(數據預處理功能)

(a)preprocess(x, y): 定義一個數據預處理的函數;
(b)db2 = db.map(preprocess): 定義預處理函數后,就可以使用map()函數直接調用預處理函數對數據集進行預處理;

(6) .batch

(a)db3 = db2.batch(32): 將數據集劃分為1個batch32張圖片;

(7) StpIteration

(8) .repeat()

(9) For example

參考文獻:
[1] 龍良曲:《深度學習與TensorFlow2入門實戰》

總結

以上是生活随笔為你收集整理的深度学习(18)神经网络与全连接层一: 数据加载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。