Datasets documentation

NumPy ile kullanma

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

NumPy ile kullanma

Bu belge, datasets kütüphanesinin NumPy ile kullanımına hızlı bir giriş niteliğindedir; odak noktası, veri setlerimizden numpy.ndarray nesnelerini nasıl elde edeceğimiz ve bunları scikit-learn modelleri gibi NumPy tabanlı modelleri eğitmek için nasıl kullanacağımızdır.

Veri seti biçimi

Varsayılan olarak veri kümeleri, tamsayılar, ondalık sayılar, dizeler, listeler vb. gibi standart Python nesneleri döndürür.

Bunun yerine NumPy dizileri almak için veri setinin biçimini numpy olarak ayarlayabilirsiniz:

>>> from datasets import Dataset
>>> data = [[1, 2], [3, 4]]
>>> ds = Dataset.from_dict({"data": data})
>>> ds = ds.with_format("numpy")
>>> ds[0]
{'data': array([1, 2])}
>>> ds[:2]
{'data': array([
    [1, 2],
    [3, 4]])}

Bir Dataset nesnesi, bir Arrow tablosunun sarmalayıcısıdır ve veri setindeki dizilerden NumPy dizilerine hızlı okumalara olanak tanır.

Aynı prosedürün DatasetDict nesneleri için de geçerli olduğunu unutmayın; bu nedenle bir DatasetDict'in biçimi numpy olarak ayarlandığında, içindeki tüm Datasetler numpy olarak biçimlendirilir:

>>> from datasets import DatasetDict
>>> data = {"train": {"data": [[1, 2], [3, 4]]}, "test": {"data": [[5, 6], [7, 8]]}}
>>> dds = DatasetDict.from_dict(data)
>>> dds = dds.with_format("numpy")
>>> dds["train"][:2]
{'data': array([
    [1, 2],
    [3, 4]])}

N boyutlu diziler

Veri setiniz N boyutlu dizilerden oluşuyorsa, şekil sabit olduğunda varsayılan olarak aynı dizi olarak ele alındıklarını göreceksiniz:

>>> from datasets import Dataset
>>> data = [[[1, 2],[3, 4]], [[5, 6],[7, 8]]]  # fixed shape
>>> ds = Dataset.from_dict({"data": data})
>>> ds = ds.with_format("numpy")
>>> ds[0]
{'data': array([[1, 2],
        [3, 4]])}
>>> from datasets import Dataset
>>> data = [[[1, 2],[3]], [[4, 5, 6],[7, 8]]]  # varying shape
>>> ds = Dataset.from_dict({"data": data})
>>> ds = ds.with_format("numpy")
>>> ds[0]
{'data': array([array([1, 2]), array([3])], dtype=object)}

Ancak bu mantık genellikle yavaş şekil karşılaştırmaları ve veri kopyalamaları gerektirir. Bunu önlemek için Array özellik türünü açıkça kullanmalı ve tensörlerinizin şeklini belirtmelisiniz:

>>> from datasets import Dataset, Features, Array2D
>>> data = [[[1, 2],[3, 4]],[[5, 6],[7, 8]]]
>>> features = Features({"data": Array2D(shape=(2, 2), dtype='int32')})
>>> ds = Dataset.from_dict({"data": data}, features=features)
>>> ds = ds.with_format("numpy")
>>> ds[0]
{'data': array([[1, 2],
        [3, 4]])}
>>> ds[:2]
{'data': array([[[1, 2],
         [3, 4]],
 
        [[5, 6],
         [7, 8]]])}

Diğer özellik türleri

ClassLabel verileri düzgün şekilde dizilere dönüştürülür:

>>> from datasets import Dataset, Features, ClassLabel
>>> labels = [0, 0, 1]
>>> features = Features({"label": ClassLabel(names=["negative", "positive"])})
>>> ds = Dataset.from_dict({"label": labels}, features=features)
>>> ds = ds.with_format("numpy")
>>> ds[:3]
{'label': array([0, 0, 1])}

NumPy yalnızca sayıları desteklediği için string ve ikili nesneler değiştirilmez.

Image ve Audio özellik türleri de desteklenir.

Image özellik türünü kullanmak için vision ek paketini pip install datasets[vision] olarak yüklemeniz gerekir.

>>> from datasets import Dataset, Features, Image
>>> images = ["path/to/image.png"] * 10
>>> features = Features({"image": Image()})
>>> ds = Dataset.from_dict({"image": images}, features=features)
>>> ds = ds.with_format("numpy")
>>> ds[0]["image"].shape
(512, 512, 3)
>>> ds[0]
{'image': array([[[ 255, 255, 255],
              [ 255, 255, 255],
              ...,
              [ 255, 255, 255],
              [ 255, 255, 255]]], dtype=uint8)}
>>> ds[:2]["image"].shape
(2, 512, 512, 3)
>>> ds[:2]
{'image': array([[[[ 255, 255, 255],
              [ 255, 255, 255],
              ...,
              [ 255, 255, 255],
              [ 255, 255, 255]]]], dtype=uint8)}

Audio özellik türünü kullanmak için audio ek paketini pip install datasets[audio] olarak yüklemeniz gerekir.

>>> from datasets import Dataset, Features, Audio
>>> audio = ["path/to/audio.wav"] * 10
>>> features = Features({"audio": Audio()})
>>> ds = Dataset.from_dict({"audio": audio}, features=features)
>>> ds = ds.with_format("numpy")
>>> ds[0]["audio"]["array"]
array([-0.059021  , -0.03894043, -0.00735474, ...,  0.0133667 ,
              0.01809692,  0.00268555], dtype=float32)
>>> ds[0]["audio"]["sampling_rate"]
array(44100, weak_type=True)

Veri yükleme

NumPy yerleşik veri yükleme özelliklerine sahip değildir, bu nedenle scikit-learn içinde kullanmak için X, y gibi NumPy dizilerini somutlaştırmalı veya verilerinizi DataLoader ile yüklemek için PyTorch gibi bir kütüphane kullanmalısınız.

with_format('numpy') ile kullanma

Bir veri setinden NumPy dizilerini almanın en kolay yolu with_format('numpy') yöntemini kullanmaktır. HuggingFace Hub'da https://huggingface.co/datasets/mnist adresinde bulunan MNIST veri seti üzerinde bir sinir ağı eğitmek istediğimizi varsayalım.

>>> from datasets import load_dataset
>>> ds = load_dataset("ylecun/mnist")
>>> ds = ds.with_format("numpy")
>>> ds["train"][0]
{'image': array([[  0,   0,   0, ...],
                       [  0,   0,   0, ...],
                       ...,
                       [  0,   0,   0, ...],
                       [  0,   0,   0, ...]], dtype=uint8),
 'label': array(5)}

Biçim ayarlandıktan sonra, Dataset.iter() yöntemini kullanarak NumPy tabanlı modeli, veri setini partiler halinde besleyebiliriz:

>>> for epoch in range(epochs):
...     for batch in ds["train"].iter(batch_size=32):
...         x, y = batch["image"], batch["label"]
...         ...
Update on GitHub