簡體   English   中英

將字典轉換為 datasets.arrow_dataset.Dataset

[英]Convert dictionary to datasets.arrow_dataset.Dataset

我正在嘗試使用Pokemon 微調筆記本,它使用Pokemon BLIP 字幕數據集 請參閱Lambda Labs 示例存儲庫中的GitHub 訓練代碼在justinpinkney/stable-diffusion代碼庫中。 我想在專輯封面的MuMu 數據集上微調 Stable Diffusion。

我有一個 (N, 512, 512, 3) 個 numpy 圖像數組和一個 (N) 個標題字符串列表。 原始代碼庫使用 <class 'datasets.arrow_dataset.Dataset'> 對象,因此我嘗試使用ldm/data/simple.py中的 hf_dataset() 中的datasets.Dataset.from_dict () 將我的數據集轉換為這種格式:

img_dict = {}
for i in range(len(img_tensor)):
    img_dict[i] = { 'image': img_tensor[i], 'text': img_captions[i] }
from datasets.Dataset import from_dict
ds = from_dict(img_dict)

這會產生一個巨大的錯誤回溯,結尾為:

File "pyarrow/error.pxi", line 100, in pyarrow.lib.check_status
pyarrow.lib.ArrowInvalid: arrays to be concatenated must be identically typed, but list<item: list<item: uint8>> and string were encountered.

我認為問題在於 img_tensor[i] 是一個二維數組(uint8 條目列表的列表)而 img_captions[i] 是一個字符串。 如何將我的數據轉換為 datasets.arrow_dataset.Dataset 對象?

解決了,沒有仔細閱讀文檔。 我有一個包含字典值的整數鍵字典,但我需要根據文檔“將字符串映射到數組或 Python 列表”。 這是一個玩具示例:

img_tensor = np.zeros((100, 512, 512, 3))
captions = []
for i in range(100):
  captions.append('hello')
captioned_imgs = {
    'images': img_tensor,
    'text': captions
}
from datasets import Dataset
out = Dataset.from_dict(captioned_imgs)
print(type(out))

輸出:<class 'datasets.arrow_dataset.Dataset'>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM