Bu modul kursning poydevori: chuqur o’rganish uchun zarur Python jihozlari va markaziy tushuncha — tensor.
Python va ma’lumotlar tahlili — nima uchun takror
Chuqur o’rganish amalda uch kutubxona ustida turadi: NumPy (massivlar), Pandas (jadval ma’lumoti) va Matplotlib (vizualizatsiya). Modelga berishdan oldin har qanday ma’lumot son massiviga aylanadi — rasm ham, matn ham, jadval ham. Shuning uchun massiv ko’nikmalari (shape o’qish, indekslash, vektorlashgan amallar) bu kursda har darsda kerak bo’ladi:
import numpy as np
rasm = np.random.default_rng(0).random((28, 28)) # "rasm": 28x28 piksel
print(rasm.shape, rasm.dtype, rasm.mean().round(3))
Natija:
(28, 28) float64 0.499
Tensor nima
Tensor — ko’p o’lchovli massivning umumlashgan nomi: 0 o’lchovli (skalyar), 1 o’lchovli (vektor), 2 o’lchovli (matritsa) va undan yuqori. Chuqur o’rganish freymvorklarida (PyTorch) tensor NumPy massiviga juda o’xshaydi, lekin ikki hal qiluvchi qo’shimchasi bor: GPU’da hisoblay oladi va gradientlarni avtomatik kuzata oladi (autograd) — ikkinchisi keyingi modulda ishga tushadi.
import torch
t = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(t.shape) # torch.Size([2, 2])
print(t.dtype) # torch.float32
print(t @ t) # matritsa ko'paytmasi
n = t.numpy() # NumPy bilan ikki tomonlama ko'prik
g = t.to("cuda") # GPU bo'lsa — o'sha yerga ko'chirish
Odatiy o’lchov kelishuvlari yodda tursin: rasmlar to’plami — (batch, kanal, balandlik, kenglik), masalan (32, 3, 224, 224); jadval ma’lumoti — (batch, xususiyatlar). Ko’pchilik xatolar aynan shu o’lchamlarning mos kelmasligidan chiqadi — RuntimeError: mat1 and mat2 shapes cannot be multiplied ko’rsangiz, birinchi ish print(x.shape).
NumPy massiv va PyTorch tensor
| NumPy ndarray | PyTorch tensor | |
|---|---|---|
| Qurilma | faqat CPU | CPU va GPU (.to("cuda")) |
| Gradient | yo’q | requires_grad=True bilan avtomatik |
| Standart float | float64 | float32 |
| O’zaro o’tish | — | torch.from_numpy / .numpy() |
float32 — chuqur o’rganish standarti: aniqligi yetarli, xotira va tezlikda ikki barobar yutuq. NumPy’dan kelgan float64 tensorni ko’pincha .float() bilan o’girib olish kerak bo’ladi — aks holda turlar mos kelmay xato beradi.
Amaliyot
- 0–9 sonlaridan vektor-tensor yasang;
shape,dtype,sum()ni chiqaring. (3, 4)o’lchamli tasodifiy tensor yaratib (torch.rand), uni transpozitsiya qiling va ikkala shape’ni solishtiring.- NumPy massivini
torch.from_numpybilan tensorga o’girib, dtype’i nima bo’lganini tekshiring;.float()bilan float32 ga keltiring. (2, 3)va(3, 2)tensorlarni@bilan ko’paytiring;(2, 3) @ (2, 3)urinib, chiqqan xatoni o’qib tushuntiring.(32, 3, 224, 224)shape’li nol tensor yasang va har bir o’lchamning ma’nosini izohda yozing.
Modul testi keyingi darsda.