This shows you the differences between two versions of the page.
|
gp:laboratoare:07 [2026/03/30 09:37] maria_anca.balutoiu [Tasks] |
gp:laboratoare:07 [2026/03/30 09:38] (current) maria_anca.balutoiu [Tasks] |
||
|---|---|---|---|
| Line 132: | Line 132: | ||
| * Salvați imaginea rezultată | * Salvați imaginea rezultată | ||
| - | <hidden> | ||
| - | ==== Notițe Tehnice ==== | ||
| - | === Dimensiuni și Parametri === | ||
| - | ^ Parametru ^ Valoare ^ Semnificație ^ | ||
| - | | **latent_dim** | 100 | Dimensiunea vectorului de zgomot (tipic: 64-256) | | ||
| - | | **terrain_size** | 64 | Rezoluția terenului generat (64×64 pixeli) | | ||
| - | | **hidden layers** | 256, 512, 1024 | Dimensiunile straturilor ascunse | | ||
| - | | **output range** | [-1, 1] | Intervalul valorilor de ieșire (datorită Tanh) | | ||
| - | |||
| - | === Funcții de Activare === | ||
| - | |||
| - | **ReLU (Rectified Linear Unit):** | ||
| - | * Formula: f(x) = max(0, x) | ||
| - | * Introduce neliniaritate în rețea | ||
| - | * Permite învățarea de pattern-uri complexe | ||
| - | * Rapid de calculat | ||
| - | |||
| - | **Tanh (Tangentă Hiperbolică):** | ||
| - | * Formula: f(x) = (e^x - e^(-x)) / (e^x + e^(-x)) | ||
| - | * Output în intervalul [-1, 1] | ||
| - | * Folosit la stratul final | ||
| - | * Perfect pentru reprezentarea altitudinii normalizate | ||
| - | |||
| - | === De ce Generatorul Neantrenant Produce Zgomot? === | ||
| - | |||
| - | Un Generator **neantrenant** (cu greutăți aleatorii inițiale) produce zgomot structurat pentru că: | ||
| - | - Nu a învățat pattern-urile din date reale | ||
| - | - Greutățile sunt aleatorii → transformări aleatorii | ||
| - | - Structura rețelei impune o formă de bază (64×64), dar conținutul e aleatoriu | ||
| - | |||
| - | **Pentru terenuri realiste**, generatorul ar trebui: | ||
| - | - Antrenat pe un dataset de terenuri reale | ||
| - | - Învățat în tandem cu un Discriminator | ||
| - | - Antrenat pentru mii de iterații | ||
| - | |||
| - | **În acest laborator**, scopul este să înțelegeți: | ||
| - | - Cum funcționează un Generator | ||
| - | - Cum spațiul latent controlează output-ul | ||
| - | - Conceptul de interpolare | ||
| - | - Reproducibilitatea cu seed-uri | ||
| - | |||
| - | ==== Resurse Suplimentare ==== | ||
| - | |||
| - | === Cod Complet === | ||
| - | |||
| - | Codul complet pentru laborator se găsește în fișierul: | ||
| - | * **gan_terrain_simple.py** - implementarea completă cu toate funcțiile | ||
| - | |||
| - | === Rulare === | ||
| - | |||
| - | <code bash> | ||
| - | # Rulează tot laboratorul (task obligatoriu + bonus + demo) | ||
| - | python gan_terrain_simple.py | ||
| - | |||
| - | # Sau importă funcțiile individual | ||
| - | python | ||
| - | >>> from gan_terrain_simple import Generator, generate_random_terrain | ||
| - | >>> generator = Generator() | ||
| - | >>> terrains = generate_random_terrain(generator, num_samples=3) | ||
| - | </code> | ||
| - | |||
| - | === Dependințe Necesare === | ||
| - | |||
| - | <code bash> | ||
| - | pip install torch torchvision matplotlib numpy | ||
| - | </code> | ||
| - | |||
| - | === Extensii Posibile === | ||
| - | |||
| - | Dacă vreți să mergeți mai departe: | ||
| - | * **Antrenarea efectivă a unui GAN** pe terenuri reale (Lab 08?) | ||
| - | * **3D Terrain Generation**: Generare de terenuri tridimensionale | ||
| - | * **Conditional GAN**: Control asupra tipului de teren generat (muntos/plat/ondulat) | ||
| - | * **Higher Resolution**: Generare de terenuri 128×128 sau 256×256 | ||
| - | * **Export pentru Unity/Unreal**: Integrare în engine-uri de jocuri | ||
| - | |||
| - | ==== Referințe ==== | ||
| - | |||
| - | * **Goodfellow et al. (2014)** - "Generative Adversarial Networks" (paper-ul original GAN) | ||
| - | * **PyTorch Documentation** - https://pytorch.org/docs/stable/index.html | ||
| - | * **Procedural Generation Wiki** - https://pcg.fandom.com/wiki/Procedural_Generation_Wiki | ||
| - | </hidden> | ||