یک بحث مفصل در مورد تانسورها، چرا در یادگیری عمیق اینقدر مهم است؟
آگوست 19, 2023گام به گام اولین شبکه عصبی خود را با PyTorch توسعه دهید
آگوست 22, 2023بارگذاری داده در پایتورچ
PyTorch دارای بلوک های ساختمان شبکه عصبی گسترده با یک API ساده، شهودی و پایدار است. PyTorch شامل بسته هایی برای آماده سازی و بارگذاری مجموعه داده های رایج برای مدل شما است.
معرفی
در قلب ابزار بارگذاری داده PyTorch کلاس torch.utils.data.DataLoader است. این یک قابلیت تکرار اجزای تشکیل دهنده پایتونی در یک مجموعه داده را نشان می دهد. کتابخانههای PyTorch مجموعه دادههای داخلی با کیفیت بالا را برای استفاده در torch.utils.data.Dataset ارائه میکنند. این مجموعه داده ها در حال حاضر در دسترس هستند:
با استفاده از مجموعه داده yesno از torchaudio.datasets.YESNO، ما نحوه بارگذاری موثر و کارآمد داده ها از مجموعه داده PyTorch در یک PyTorch DataLoader را نشان خواهیم داد.
تنظیمات
قبل از شروع، باید torchaudio را نصب کنیم تا به مجموعه داده دسترسی داشته باشیم.
# pip install torchaudio
برای اجرا در Google Colab، خط زیر را حذف کنید:
# !pip install torchaudio
مراحل
تمام کتابخانه های لازم برای بارگیری داده های ما را وارد کنید
- به داده های موجود در مجموعه داده دسترسی داشته باشید
- در حال بارگیری داده ها
- روی داده ها تکرار کنید
- [اختیاری] داده ها را نمایش دهید
وارد کردن کتابخانه های لازم را برای بارگذاری داده های ما
برای این دستور از torch و torchaudio استفاده می کنیم. بسته به مجموعه داده های داخلی که استفاده می کنید، می توانید Torchvision یا Torchtext را نیز نصب و وارد کنید.
import torch
import torchaudio
دسترسی به داده های موجود در مجموعه داده
مجموعه داده yesno در torchaudio دارای شصت مورد ضبط شده از یک فرد است که به زبان عبری بله یا خیر می گوید. هر ضبط هشت کلمه .
torchaudio.datasets.YESNO یک مجموعه داده برای yesno ایجاد می کند.
torchaudio.datasets.YESNO(
root='./',
url='http://www.openslr.org/resources/1/waves_yesno.tar.gz',
folder_in_archive='waves_yesno',
download=True)
هر آیتم در مجموعه داده یک تاپل به این شکل است: (شکل موج، نرخ_ نمونه، برچسبها).
شما باید یک ریشه برای مجموعه داده yesno تنظیم کنید، جایی که مجموعه داده آموزشی و آزمایشی وجود خواهد داشت. سایر پارامترها اختیاری هستند و مقادیر پیش فرض آنها نشان داده شده است. در اینجا اطلاعات مفید دیگری در مورد سایر پارامترها وجود دارد:
# * ``download``: If true, downloads the dataset from the internet and puts it in root directory. If dataset is already downloaded, it is not downloaded again.
#
# Let’s access our ``yesno`` data:
#
# A data point in ``yesno`` is a tuple (waveform, sample_rate, labels) where labels
# is a list of integers with 1 for yes and 0 for no.
yesno_data = torchaudio.datasets.YESNO('./', download=True)
# Pick data point number 3 to see an example of the the ``yesno_data``:
n = 3
waveform, sample_rate, labels = yesno_data[n]
print("Waveform: {}\nSample rate: {}\nLabels: {}".format(waveform, sample_rate, labels))
هنگام استفاده از این داده ها در عمل، بهترین روش ارائه داده ها در مجموعه داده های “آموزش” و مجموعه داده های “آزمایش” است. این تضمین می کند که داده های خارج از نمونه برای آزمایش عملکرد مدل خود دارید.
بارگذاری داده ها
اکنون که به مجموعه داده دسترسی داریم، باید آن را از torch.utils.data.DataLoader عبور دهیم. DataLoader مجموعه داده و یک نمونهگر را ترکیب میکند و یک تکرارپذیر را روی مجموعه داده برمیگرداند.
data_loader = torch.utils.data.DataLoader(yesno_data,
batch_size=1,
shuffle=True)
تکرار روی داده ها
داده های ما اکنون با استفاده از data_loader قابل تکرار هستند. زمانی که ما آموزش مدل خود را شروع می کنیم، این امر ضروری خواهد بود! متوجه خواهید شد که اکنون هر ورودی داده در شی data_loader به یک تانسور حاوی تانسورهایی تبدیل می شود که شکل موج، سرعت نمونه و برچسب های ما را نشان می دهد.
for data in data_loader:
print("Data: ", data)
print("Waveform: {}\nSample rate: {}\nLabels: {}".format(data[0], data[1], data[2]))
break
[اختیاری] نمایش داده ها
شما می توانید به صورت اختیاری داده های خود را برای درک بیشتر خروجی DataLoader نمایش دهید.
import matplotlib.pyplot as plt
print(data[0][0].numpy())
plt.figure()
plt.plot(waveform.t().numpy())
تبریک می گویم! شما با موفقیت داده ها را در PyTorch بارگیری کرده اید.