Datasets documentation

Hızlı Başlangıç

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Hızlı Başlangıç

Bu hızlı başlangıç, kodun içine dalmaya ve 🤗 Datasets'in model eğitim iş akışlarına nasıl entegre edileceğine dair bir örnek görmeye hazır geliştiriciler içindir. Yeni başlıyorsanız, daha kapsamlı bir giriş yapabileceğiniz öğreticilerimizle başlamanızı öneririz.

Her veri seti benzersizdir ve görevin türüne bağlı olarak bazı veri setlerinin eğitim için hazırlanması ek adımlar gerektirebilir. Ancak bir veri setini yüklemek ve işlemek için her zaman 🤗 Datasets araçlarını kullanabilirsiniz. Başlamanın en hızlı ve en kolay yolu, Hugging Face Hub’dan mevcut bir veri seti yüklemektir. Birçok görevi kapsayan binlerce veri setinden seçim yapabilirsiniz. Çalışmak istediğiniz veri seti türünü seçin ve başlayalım!

Hugging Face kursunun 5. Bölümü'nün, uzak veya yerel veri setlerini yükleme, bir veri setini temizleme araçları ve kendi veri setinizi oluşturma gibi diğer önemli konular hakkında daha fazla bilgi edinmek için inceleyin.

Önce 🤗 Datasets'i yükleyerek başlayın:

pip install datasets

🤗 Datasets ayrıca ses ve görüntü veri biçimlerini de destekler:

  • Ses veri setleriyle çalışmak için Audio özelliğini yükleyin:

    pip install datasets[audio]
  • Görsel veri setleriyle çalışmak için Image özelliğini yükleyin:

    pip install datasets[vision]

🤗 Datasets'in yanı sıra, tercih ettiğiniz makine öğrenimi çerçevesinin yüklendiğinden emin olun:

Pytorch
Hide Pytorch content

bash pip install torch

TensorFlow
Hide TensorFlow content

bash pip install tensorflow

Ses

Ses veri setleri, metin veri setleri gibi yüklenir. Ancak bir ses veri seti biraz farklı şekilde ön işlenir. Bir özellik çıkarıcısının (feature extractor) yanı sıra, kullandığınız önceden eğitilmiş modelin örneklem hızıyla eşleşmesi için ses girdisinin örneklem hızının yeniden örneklenmesi gerekebilir. Bu hızlı başlangıçta, bir model üzerinde eğitim yapmak ve bir müşterinin yaşadığı bankacılık sorununu sınıflandırmak için MInDS-14 veri setini hazırlayacaksınız.

1. load_dataset() fonksiyonuna veri seti adını, veri seti yapılandırmasını (tüm veri setlerinin yapılandırması olmayabilir) ve bir veri seti bölümünü (split) sağlayarak MInDS-14 veri setini yükleyin:

>>> from datasets import load_dataset, Audio

>>> dataset = load_dataset("PolyAI/minds14", "en-US", split="train")

2. Ardından, 🤗 Transformers kütüphanesinden önceden eğitilmiş bir Wav2Vec2 modelini ve ona karşılık gelen özellik çıkarıcısını yükleyin. Modeli yükledikten sonra bazı ağırlıkların başlatılmadığına dair bir uyarı görmek tamamen normaldir. Bu model kontrol noktasını başka bir görev için eğitim amacıyla yüklediğiniz için bu beklenen bir durumdur.

>>> from transformers import AutoModelForAudioClassification, AutoFeatureExtractor

>>> model = AutoModelForAudioClassification.from_pretrained("facebook/wav2vec2-base")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base")

3. MInDS-14 veri seti kartı, örneklem hızının 8kHz olduğunu belirtmektedir, ancak Wav2Vec2 modeli 16kHz örneklem hızıyla ön eğitilmiştir. Modelin örneklem hızıyla eşleşmesi için audio sütununu cast_column() işlevi ve Audio özelliğiyle yeniden örneklemelisiniz.

>>> dataset = dataset.cast_column("audio", Audio(sampling_rate=16000))
>>> dataset[0]["audio"]
<datasets.features._torchcodec.AudioDecoder object at 0x11642b6a0>

4. Ses array'ini özellik çıkarıcıyla ön işlemek ve dizileri düzgün dikdörtgen tensörlere kısaltıp doldurmak için bir fonksiyon oluşturun. Akılda tutulması gereken en önemli nokta, array'nin - asıl konuşma sinyalinin - model girdisi olduğu için ses array'sini özellik çıkarıcıda çağırmaktır.

Ön işleme fonksiyonunuz hazır olduğunda, veri setindeki örneklerin toplu halde (batch) işlenmesini sağlayarak işlem hızını artırmak için map() fonksiyonunu kullanın.

>>> def preprocess_function(examples):
...     audio_arrays = [x.get_all_samples().data for x in examples["audio"]]
...     inputs = feature_extractor(
...         audio_arrays,
...         sampling_rate=16000,
...         padding=True,
...         max_length=100000,
...         truncation=True,
...     )
...     return inputs

>>> dataset = dataset.map(preprocess_function, batched=True)

5. rename_column() işlevini kullanarak Wav2Vec2ForSequenceClassification içinde beklenen giriş adı olan labels olarak intent_class sütununu yeniden adlandırın:

>>> dataset = dataset.rename_column("intent_class", "labels")

6. Kullandığınız makine öğrenimi çerçevesine göre veri seti biçimini ayarlayın.

Pytorch
Hide Pytorch content

Veri kümesinin biçimini torch olarak ayarlamak ve biçimlendirilmek istenen sütunları belirtmek için set_format() fonksiyonunu kullanın. Bu fonksiyon biçimlendirmeyi anlık olarak uygular. PyTorch tensörlerine dönüştürdükten sonra, veri kümesini torch.utils.data.DataLoader içine sarın:

>>> from torch.utils.data import DataLoader

>>> dataset.set_format(type="torch", columns=["input_values", "labels"])
>>> dataloader = DataLoader(dataset, batch_size=4)
TensorFlow
Hide TensorFlow content

🤗 Transformers kütüphanesindeki prepare_tf_dataset yöntemini kullanarak veri setini TensorFlow ile uyumlu hale getirin ve bir modeli eğitmeye/ince ayarlamaya hazır hale getirin; bu yöntem, bir HuggingFace Dataset nesnesini collation ve batching ile birlikte tf.data.Dataset olarak sardığı için, veri setini fit() gibi Keras yöntemlerine ek bir değişiklik yapmadan doğrudan iletebilirsiniz.

>>> import tensorflow as tf

>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )

7. Makine öğrenimi çerçevenizle eğitime başlayın! Bir ses veri setinde model eğitiminin uçtan uca bir örneği için 🤗 Transformers ses sınıflandırma kılavuzuna göz atın.

Görüntü

Görsel veri setleri, metin veri setleri gibi yüklenir. Ancak bir özellik çıkarıcısının (feature extractor) kullanılması gerekir; bu, veri setini ön işlemek için gereklidir. Bilgisayarla görmede, modelin aşırı öğrenmeye karşı daha dayanıklı hale getirilmesi için görsellere veri artırımı uygulamak yaygın bir uygulamadır. İstediğiniz herhangi bir veri artırımı kütüphanesini kullanabilir ve ardından bu artırımı 🤗 Datasets ile uygulayabilirsiniz. Bu hızlı başlangıçta, Beans veri setini yükleyip yaprağın görsellerinden hastalığı tanımlamak üzere modelin eğitim alması için hazır hale getireceksiniz.

1. load_dataset() fonksiyonuna veri seti adını ve bir veri seti bölümünü (split) sağlayarak Beans veri setini yükleyin:

>>> from datasets import load_dataset, Image

>>> dataset = load_dataset("AI-Lab-Makerere/beans", split="train")

Çoğu görüntü modeli RGB görüntülerle çalışır. Veri setiniz farklı bir moda sahip görüntüler içeriyorsa, modu RGB olarak ayarlamak için cast_column() işlevini kullanabilirsiniz:

>>> dataset = dataset.cast_column("image", Image(mode="RGB"))

Beans veri seti yalnızca RGB görüntüler içerdiğinden bu adım burada gereksizdir.

2. Şimdi istediğiniz herhangi bir kütüphane (Albumentations, imgaug, Kornia) ile bazı veri artırma (data augmentation) işlemleri ekleyebilirsiniz. Burada, bir görüntünün renk özelliklerini rastgele değiştirmek için torchvision kullanacaksınız:

>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [ColorJitter(brightness=0.5, hue=0.5), ToTensor()]
... )

3. Veri setine dönüştürmeyi uygulamak ve model girdisini pixel_values oluşturmak için bir fonksiyon oluşturun.

>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples

4. Veri artırma işlemlerini anlık olarak uygulamak için with_transform() fonksiyonunu kullanın:

>>> dataset = dataset.with_transform(transforms)

5. Kullandığınız makine öğrenimi çerçevesine göre veri seti biçimini ayarlayın.

Pytorch
Hide Pytorch content

Veri setini torch.utils.data.DataLoader ile sarmalayın. Örnekleri toplu (batch) hale getirmek için bir collate fonksiyonu da oluşturmanız gerekecektir:

>>> from torch.utils.data import DataLoader

>>> def collate_fn(examples):
...     images = []
...     labels = []
...     for example in examples:
...         images.append((example["pixel_values"]))
...         labels.append(example["labels"])
...
...     pixel_values = torch.stack(images)
...     labels = torch.tensor(labels)
...     return {"pixel_values": pixel_values, "labels": labels}
>>> dataloader = DataLoader(dataset, collate_fn=collate_fn, batch_size=4)
TensorFlow
Hide TensorFlow content

🤗 Transformers kütüphanesindeki prepare_tf_dataset yöntemini kullanarak veri setini TensorFlow ile uyumlu hale getirin ve bir modeli eğitmeye/ince ayarlamaya hazır hale getirin; bu yöntem, bir HuggingFace Dataset nesnesini collation ve batching ile birlikte tf.data.Dataset olarak sardığı için, veri setini fit() gibi Keras yöntemlerine ek bir değişiklik yapmadan doğrudan iletebilirsiniz.

Başlamadan önce, albumentations ve cv2 kütüphanelerinin güncel sürümlerinin yüklü olduğundan emin olun:

pip install -U albumentations opencv-python
>>> import albumentations
>>> import numpy as np

>>> transform = albumentations.Compose([
...     albumentations.RandomCrop(width=256, height=256),
...     albumentations.HorizontalFlip(p=0.5),
...     albumentations.RandomBrightnessContrast(p=0.2),
... ])

>>> def transforms(examples):
...     examples["pixel_values"] = [
...         transform(image=np.array(image))["image"] for image in examples["image"]
...     ]
...     return examples

>>> dataset.set_transform(transforms)
>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )

6. Makine öğrenimi çerçevenizle eğitime başlayın! Bir görüntü veri setinde model eğitiminin uçtan uca bir örneği için 🤗 Transformers görüntü sınıflandırma kılavuzuna göz atın.

NLP

Metin, bir tokenizer tarafından bireysel token'lara bölünmelidir. Hızlı başlangıç için, bir modelin iki cümlenin aynı anlama gelip gelmediğini belirlemesi için Microsoft Research Paraphrase Corpus (MRPC) eğitim veri setini yükleyeceksiniz.

1. load_dataset() fonksiyonuna veri seti adını, veri seti yapılandırmasını (tüm veri setlerinin yapılandırması olmayabilir) ve veri seti bölümünü sağlayarak MRPC veri setini yükleyin:

>>> from datasets import load_dataset

>>> dataset = load_dataset("nyu-mll/glue", "mrpc", split="train")

2. Ardından, 🤗 Transformers kütüphanesinden önceden eğitilmiş bir BERT modelini ve ona ait tokenizer'ı yükleyin. Modeli yükledikten sonra bazı ağırlıkların başlatılmadığına dair bir uyarı görmek tamamen normaldir. Bu model kontrol noktasını başka bir görev için eğitim amacıyla yüklediğiniz için bu beklenen bir durumdur.

>>> from transformers import AutoModelForSequenceClassification, AutoTokenizer >>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased") >>> tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

3. Veri setini belirteçleştirmek için bir oluşturun ve metni düzgün dikdörtgen tensörlere kısaltıp doldurmalısınız. Belirteç, veri setinde üç yeni sütun oluşturur: input_ids, token_type_ids ve bir attention_mask. Bunlar model girdileridir.

Veri setindeki örneklerin toplu hallerine (batch) tokenizasyon fonksiyonunuzu uygulayarak işleme hızını artırmak için map() fonksiyonunu kullanın:

>>> def encode(examples):
...     return tokenizer(examples["sentence1"], examples["sentence2"], truncation=True, padding="max_length")

>>> dataset = dataset.map(encode, batched=True)
>>> dataset[0]
{'sentence1': 'Amrozi accused his brother , whom he called " the witness " , of deliberately distorting his evidence .',
'sentence2': 'Referring to him as only " the witness " , Amrozi accused his brother of deliberately distorting his evidence .',
'label': 1,
'idx': 0,
'input_ids': [  101,  7277,  2180,  5303,  4806,  1117,  1711,   117,  2292, 1119,  1270,   107,  1103,  7737,   107,   117,  1104,  9938, 4267, 12223, 21811,  1117,  2554,   119,   102, 11336,  6732, 3384,  1106,  1140,  1112,  1178,   107,  1103,  7737,   107, 117,  7277,  2180,  5303,  4806,  1117,  1711,  1104,  9938, 4267, 12223, 21811,  1117,  2554,   119,   102, 0, 0, ...],
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...],
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...]}

4. label sütununu, BertForSequenceClassification'te beklenen giriş adı olan labels olarak yeniden adlandırın:

>>> dataset = dataset.map(lambda examples: {"labels": examples["label"]}, batched=True)

5. Kullandığınız makine öğrenimi çerçevesine göre veri seti biçimini ayarlayın.

Pytorch
Hide Pytorch content

Veri kümesinin biçimini torch olarak ayarlamak ve biçimlendirilmek istenen sütunları belirtmek için with_format() fonksiyonunu kullanın. Bu fonksiyon biçimlendirmeyi anlık olarak uygular. PyTorch tensörlerine dönüştürdükten sonra, veri kümesini torch.utils.data.DataLoader içine sarın:

>>> import torch

>>> dataset = dataset.select_columns(["input_ids", "token_type_ids", "attention_mask", "labels"])
>>> dataset = dataset.with_format(type="torch")
>>> dataloader = torch.utils.data.DataLoader(dataset, batch_size=32)
TensorFlow
Hide TensorFlow content

🤗 Transformers kütüphanesindeki prepare_tf_dataset yöntemini kullanarak veri setini TensorFlow ile uyumlu hale getirin ve bir modeli eğitmeye/ince ayarlamaya hazır hale getirin; bu yöntem, bir HuggingFace Dataset nesnesini collation ve batching ile birlikte tf.data.Dataset olarak sardığı için, veri setini fit() gibi Keras yöntemlerine ek bir değişiklik yapmadan doğrudan iletebilirsiniz.

>>> import tensorflow as tf

>>> tf_dataset = model.prepare_tf_dataset(
...     dataset,
...     batch_size=4,
...     shuffle=True,
... )

6. Makine öğrenimi çerçevenizle eğitime başlayın! Bir metin veri setinde model eğitiminin uçtan uca bir örneği için 🤗 Transformers metin sınıflandırma kılavuzuna göz atın.

Sonraki adım nedir?

Bu, 🤗 Datasets hızlı başlangıcını tamamlar! Tek bir fonksiyonla herhangi bir metin, ses veya görüntü veri setini yükleyebilir ve modelinizin eğitim için kullanabileceği hale getirebilirsiniz.

Sonraki adımlarınız için Nasıl yapılır kılavuzlarımıza göz atın ve farklı veri seti biçimlerini yükleme, etiketleri hizalama ve büyük veri setlerini akışa alma gibi daha spesifik işlemleri nasıl yapacağınızı öğrenin. 🤗 Datasets’in temel kavramları hakkında daha fazla bilgi edinmek isterseniz, bir fincan kahve alın ve Kavramsal Kılavuzlarımızı okuyun!

Update on GitHub