Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gp:laboratoare:07 [2025/03/30 20:29]
maria_anca.balutoiu [Componentele unei Rețele GAN]
gp:laboratoare:07 [2025/03/30 21:12] (current)
maria_anca.balutoiu [Implementarea unui GAN în PyTorch]
Line 8: Line 8:
   - **Discriminatorul** etse responsabil să facă distincția între datele reale (din setul de antrenament) și datele false (generate de Generator). Acesta calculează o probabilitate care indică dacă datele de intrare sunt reale sau false. În timp, învață să devină mai bun în identificarea datelor false pe care le produce Generatorul.   - **Discriminatorul** etse responsabil să facă distincția între datele reale (din setul de antrenament) și datele false (generate de Generator). Acesta calculează o probabilitate care indică dacă datele de intrare sunt reale sau false. În timp, învață să devină mai bun în identificarea datelor false pe care le produce Generatorul.
  
-<​hidden>​+==== Cum funcționează un GAN ==== 
 +Generatorul și Discriminatorul sunt antrenate simultan, dar cu obiective diferite: 
 +  * Generatorul vrea să creeze date atât de realiste încât discriminatorul nu le poate deosebi de datele reale. 
 +  * Discriminatorul vrea să devină mai bun în a face distincția între datele reale (din setul de antrenament) și datele false (de la Generator).
  
 +Pași în procesul de antrenare:
 +  - Generatorul produce date false, pornind de la un vector latent aleatoriu (de obicei eșantionat dintr-o distribuție normală)
 +  - Discriminatorul primește atât date reale, cât și false (de la generator) și încearcă să le clasifice dacă sunt reale sau false.
 +  - Loss Function:
 +    * Discriminatorul este recompensat pentru identificarea corectă a datelor reale ca fiind reale și a datelor false ca fiind false.
 +    * Generatorul este recompensat atunci când datele sale false sunt clasificate ca fiind reale de către Discriminator.
 +  - Backpropagation:​ Ambele rețele (Generator și Discriminator) sunt actualizate prin backpropagation. Ponderile Discriminatorului sunt actualizate pentru a-și îmbunătăți capacitatea de a distinge datele reale de cele false, în timp ce ponderile Generatorului sunt actualizate pentru a face datele false mai realiste și mai greu de distins de datele reale.
 +  - Repetarea ciclului
  
-1. Generator:​ +În timp, Generatorul ​devine foarte bun la producerea ​de date care sunt aproape imposibil ​de distins de datele realeîn timp ce Discriminatorul devine ​din ce în ce mai bun în a distinge datele reale de cele false.
-Scop: Generatorul ​este responsabil pentru crearea ​de date sintetice (de exempluo imagine, muzică, teren etc.) din zgomot aleatoriu (spațiu latent). Este nevoie ​de un vector aleatoriu ca intrare și generează o ieșire care imită distribuția datelor țintă (de exemplu, generarea unei imagini a unei fețe care arată ca cele din setul de date de antrenament).+
  
-Cum funcționează:+==== Layers ==== 
 +Într-un GAN, straturile din rețelele generatoare și discriminatoare îndeplinesc roluri specifice în generarea și distingerea datelor reale de cele false.
  
-Generatorul ia de obicei un vector de zgomot aleator (vector latent) ca intrare, care este trecut ​prin mai multe straturi (de obicei ​straturi complet conectatestraturi ​convoluționale ​sau alte tipuri) pentru a produce o ieșire care seamănă cu date reale.+=== Generator Layers === 
 +  * **Input Layer (Latent Vector):** Intrarea către generator este de obicei un vector ​aleatoriu ​de dimensiune fixă. Acest vector ​este prelevat dintr-un spațiu latent. Vectorul ​latent este o sursă de aleatorie pe care Generatorul o folosește pentru a produce diverse rezultate. Aceasta ar putea reprezenta diferite tipuri de conținut generat (de exemplu, diferite fețe, texturi sau terenuri). 
 +  * **Fully Connected (Linear) Layers:** Datele de input sunt trecute ​prin mai multe straturi complet conectate ​(adesea straturi **nn.Linear()** în PyTorch). Aceste ​straturi ​învață să mapeze inputul aleator la reprezentări de dimensiuni mai mari. Fiecare strat complet conectat efectuează o transformare liniară (o multiplicare a matricei) urmată de o funcție de activare neliniară. 
 +  * **Funcțiile de Activare:** Funcțiile des folosite de activare sunt **ReLU (Rectified Linear Unit)**, **LeakyReLU** ​sau **Tanh**. Acestea introduc neliniaritatea modelului, permițându-i să învețe modele complexe.  
 +    * **ReLU** este utilizat pe scară largă în straturile intermediare ale generatorului,​ deoarece ajută rețeaua să învețe mai repede și să evite problema gradientului care dispare. 
 +    * **Tanh** (de obicei în stratul de ieșireeste adesea folosit ​pentru a scala ieșirea la un interval între -1 și 1, făcându-l potrivit pentru generarea de pixeli de imagine sau alte date continue. 
 +  * **Output Layer:** Remodelează rezultatul pentru a se potrivi ​cu forma dorită (de exemplu, o imagine de 64x64).
  
-Învață să producă rezultate mai realiste ​de-lungul timpului încercând să-l „păcălească” pe Discriminator ​să creadă că datele generate sunt reale.+=== Discriminator Layers === 
 +  * **Input Layer (Imagine sau Date):** Inputul este fie o imagine reală din setul de date de antrenament,​ fie o imagine falsă generată de Generator. 
 +  * **Convolutional Layers (pentru imagini):** Pentru sarcinile legate de imagini, se folosesc adesea **rețele neurale convoluționale (CNN)**, care aplică straturi convoluționale datelor de intrare. Aceste straturi învață să extragă caracteristici din imaginea ​de intrare, cum ar fi laturi, texturi și modele. Straturile convoluționale folosesc filtre care parcurg toată imaginea și detectează aceste caracteristici. 
 +    * Straturile de grupare (cum ar fi **MaxPooling**) pot fi folosite după pentru ​reduce dimensionalitatea și a evidenția cele mai importante caracteristici. 
 +  * **Fully Connected (Linear) Layers:** După extragerea caracteristicilor (prin convoluție și pooling), caracteristicile se aplatizează într-un vector, iar datele trec prin straturi complet conectate. Aceste straturi învață să ia decizii finale cu privire la faptul dacă intrarea este reală sau falsă. 
 +  * **Funcții de Activare:​** 
 +    * **LeakyReLU** este adesea folosit ca funcție de activare în straturile ascunse ale Discriminatorului. 
 +    * Stratul de ieșire utilizează de obicei funcția **Sigmoid** (sau uneori **Softmax**) pentru a genera o probabilitate între 0 și 1. Această probabilitate reprezintă probabilitatea ca intrarea ​să fie reală (aproape de 1) sau falsă (aproape de 0).
  
-2Discriminator+==== Implementarea unui GAN în PyTorch ==== 
-Scop: Misiunea Discriminatorului este să facă distincția între datele reale (din setul de antrenamentși datele false (generate de Generator). ​Afișează o probabilitate care indică dacă datele de intrare sunt reale sau false.+<​code>​ 
 +class Generator(nn.Module)
 +    def __init__(self)
 +        super(Generator, self).__init__() 
 +        self.model = nn.Sequential( 
 +            nn.Linear(100,​ 256),  # First linear layer (input: 100 -> 256) 
 +            nn.ReLU(), ​           # Activation function 
 +            nn.Linear(256,​ 512),  # Second linear layer (256 -> 512) 
 +            nn.ReLU(), ​           # Activation function 
 +            nn.Linear(512,​ 1024), # Third linear layer (512 -> 1024) 
 +            nn.ReLU(), ​           # Activation function 
 +            nn.Linear(1024,​ 64*64), ​ # Final layer (1024 -> 64x64 terrain) 
 +            nn.Tanh() ​            # Activation function for output (-1 to 1) 
 +        )
  
-Cum funcționează:+    def forward(self,​ x): 
 +        return self.model(x).view(-1,​ 64, 64) 
 +</​code>​
  
-Discriminatorul este o rețea neuronală care preia o intrare (fie date reale, fie date false de la Generator) și o clasifică drept reală sau falsă. 
- 
-În timp, învață să devină mai bun în identificarea datelor false pe care le produce Generatorul. 
-</​hidden>​ 
  
 +==== Tasks ====
 +  - Generați o hartă aleatoare de teren folosind o rețea Generator.
 +  - **Bonus.** Antrenați un GAN pentru generare de teren.
  
gp/laboratoare/07.1743355772.txt.gz · Last modified: 2025/03/30 20:29 by maria_anca.balutoiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0