tf.keras.preprocessing.image_dataset_from_directory() 简介
- 🔗 運行環(huán)境:python3
- 🚩 作者:K同學啊
- 🥇 精選專欄:《深度學習100例》
- 🔥 推薦專欄:《新手入門深度學習》
- 📚 選自專欄:《Matplotlib教程》
- 🧿 優(yōu)秀專欄:《Python入門100題》
函數(shù)原型
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, )官網(wǎng)地址:https://tensorflow.google.cn/api_docs/python/tf/keras/preprocessing/image_dataset_from_directory
作用
將文件夾中的數(shù)據(jù)加載到tf.data.Dataset中,且加載的同時會打亂數(shù)據(jù)。
注: 如果你的目錄結(jié)構(gòu)是:
main_directory/
…class_a/
…a_image_1.jpg
…a_image_2.jpg
…class_b/
…b_image_1.jpg
…b_image_2.jpg
然后調(diào)用 image_dataset_from_directory(main_directory, labels=‘inferred’) 將返回一個tf.data.Dataset, 該數(shù)據(jù)集從子目錄class_a和class_b生成批次圖像,同時生成標簽0和1(0對應(yīng)class_a,1對應(yīng)class_b),
支持的圖像格式:jpeg, png, bmp, gif. 動圖被截斷到第一幀。
參數(shù)
- directory: 數(shù)據(jù)所在目錄。如果標簽是inferred(默認),則它應(yīng)該包含子目錄,每個目錄包含一個類的圖像。否則,將忽略目錄結(jié)構(gòu)。
- labels: inferred(標簽從目錄結(jié)構(gòu)生成),或者是整數(shù)標簽的列表/元組,其大小與目錄中找到的圖像文件的數(shù)量相同。標簽應(yīng)根據(jù)圖像文件路徑的字母順序排序(通過Python中的os.walk(directory)獲得)。
- label_mode:
- int:標簽將被編碼成整數(shù)(使用的損失函數(shù)應(yīng)為:sparse_categorical_crossentropy loss)。
- categorical:標簽將被編碼為分類向量(使用的損失函數(shù)應(yīng)為:categorical_crossentropy loss)。
- binary:意味著標簽(只能有2個)被編碼為值為0或1的float32標量(例如:binary_crossentropy)。
- None:(無標簽)。
- class_names: 僅當labels為inferred時有效。這是類名稱的明確列表(必須與子目錄的名稱匹配)。用于控制類的順序(否則使用字母數(shù)字順序)。
- color_mode: grayscale、rgb、rgba之一。默認值:rgb。圖像將被轉(zhuǎn)換為1、3或者4通道。
- batch_size: 數(shù)據(jù)批次的大小。默認值:32
- image_size: 從磁盤讀取數(shù)據(jù)后將其重新調(diào)整大小。默認:(256,256)。由于管道處理的圖像批次必須具有相同的大小,因此該參數(shù)必須提供。
- shuffle: 是否打亂數(shù)據(jù)。默認值:True。如果設(shè)置為False,則按字母數(shù)字順序?qū)?shù)據(jù)進行排序。
- seed: 用于shuffle和轉(zhuǎn)換的可選隨機種子。
- validation_split: 0和1之間的可選浮點數(shù),可保留一部分數(shù)據(jù)用于驗證。
- subset: training或validation之一。僅在設(shè)置validation_split時使用。
- interpolation: 字符串,當調(diào)整圖像大小時使用的插值方法。默認為: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遵循下面描述的格式。
關(guān)于labels格式規(guī)則:
- 如果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編碼。
有關(guān)生成圖像中通道數(shù)量的規(guī)則:
- 如果color_mode 是 grayscale, 圖像張量有1個通道。
- 如果color_mode 是 rgb, 圖像張量有3個通道。
- 如果color_mode 是 rgba, 圖像張量有4個通道。
總結(jié)
以上是生活随笔為你收集整理的tf.keras.preprocessing.image_dataset_from_directory() 简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习100例-卷积神经网络(CNN)
- 下一篇: np.expand_dims()介绍