當前位置:
首頁 >
tf.keras.preprocessing.image_dataset_from_directory() 简介
發布時間:2025/4/5
62
豆豆
生活随笔
收集整理的這篇文章主要介紹了
tf.keras.preprocessing.image_dataset_from_directory() 简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- 🔗 運行環境:python3
- 🚩 作者:K同學啊
- 🥇 精選專欄:《深度學習100例》
- 🔥 推薦專欄:《新手入門深度學習》
- 📚 選自專欄:《Matplotlib教程》
- 🧿 優秀專欄:《Python入門100題》
函數原型
tf.keras.preprocessing.image_dataset_from_directory(directory,labels="inferred",label_mode="int",class_names=None,color_mode="rgb",batch_size=32,image_size=(256, 256),shuffle=True,seed=None,validation_split=None,subset=None,interpolation="bilinear",follow_links=False, )官網地址:https://tensorflow.google.cn/api_docs/python/tf/keras/preprocessing/image_dataset_from_directory
作用
將文件夾中的數據加載到tf.data.Dataset中,且加載的同時會打亂數據。
注: 如果你的目錄結構是:
main_directory/
…class_a/
…a_image_1.jpg
…a_image_2.jpg
…class_b/
…b_image_1.jpg
…b_image_2.jpg
然后調用 image_dataset_from_directory(main_directory, labels=‘inferred’) 將返回一個tf.data.Dataset, 該數據集從子目錄class_a和class_b生成批次圖像,同時生成標簽0和1(0對應class_a,1對應class_b),
支持的圖像格式:jpeg, png, bmp, gif. 動圖被截斷到第一幀。
參數
- directory: 數據所在目錄。如果標簽是inferred(默認),則它應該包含子目錄,每個目錄包含一個類的圖像。否則,將忽略目錄結構。
- labels: inferred(標簽從目錄結構生成),或者是整數標簽的列表/元組,其大小與目錄中找到的圖像文件的數量相同。標簽應根據圖像文件路徑的字母順序排序(通過Python中的os.walk(directory)獲得)。
- label_mode:
- int:標簽將被編碼成整數(使用的損失函數應為:sparse_categorical_crossentropy loss)。
- categorical:標簽將被編碼為分類向量(使用的損失函數應為:categorical_crossentropy loss)。
- binary:意味著標簽(只能有2個)被編碼為值為0或1的float32標量(例如:binary_crossentropy)。
- None:(無標簽)。
- class_names: 僅當labels為inferred時有效。這是類名稱的明確列表(必須與子目錄的名稱匹配)。用于控制類的順序(否則使用字母數字順序)。
- color_mode: grayscale、rgb、rgba之一。默認值:rgb。圖像將被轉換為1、3或者4通道。
- batch_size: 數據批次的大小。默認值:32
- image_size: 從磁盤讀取數據后將其重新調整大小。默認:(256,256)。由于管道處理的圖像批次必須具有相同的大小,因此該參數必須提供。
- shuffle: 是否打亂數據。默認值:True。如果設置為False,則按字母數字順序對數據進行排序。
- seed: 用于shuffle和轉換的可選隨機種子。
- validation_split: 0和1之間的可選浮點數,可保留一部分數據用于驗證。
- subset: training或validation之一。僅在設置validation_split時使用。
- interpolation: 字符串,當調整圖像大小時使用的插值方法。默認為:bilinear。支持bilinear, nearest, bicubic, area, lanczos3, lanczos5, gaussian, mitchellcubic。
- follow_links: 是否訪問符號鏈接指向的子目錄。默認:False。
Returns
一個tf.data.Dataset對象。
- 如果label_mode為None,它將生成float32張量,其shape為(batch_size, image_size[0], image_size(1), num_channels),并對圖像進行編碼。
- 否則,將生成一個元組(images, labels),其中圖像的shape為(batch_size, image_size[0], image_size(1), num_channels),并且labels遵循下面描述的格式。
關于labels格式規則:
- 如果label_mode 是 int, labels是形狀為(batch_size, )的int32張量
- 如果label_mode 是 binary, labels是形狀為(batch_size, 1)的1和0的float32張量。
- 如果label_mode 是 categorial, labels是形狀為(batch_size, num_classes)的float32張量,表示類索引的one-hot編碼。
有關生成圖像中通道數量的規則:
- 如果color_mode 是 grayscale, 圖像張量有1個通道。
- 如果color_mode 是 rgb, 圖像張量有3個通道。
- 如果color_mode 是 rgba, 圖像張量有4個通道。
總結
以上是生活随笔為你收集整理的tf.keras.preprocessing.image_dataset_from_directory() 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习100例-卷积神经网络(CNN)
- 下一篇: np.expand_dims()介绍