Differences

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

Link to this comparison view

gp:laboratoare:07 [2025/03/30 20:28]
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 6: Line 6:
  
   - **Generatorul** este responsabil pentru crearea de date sintetice (de exemplu, o 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). Generatorul primește de obicei un vector de zgomot aleator ca input, care este trecut prin mai multe straturi (de obicei straturi complet conectate, straturi convoluționale sau alte tipuri) pentru a produce un output care seamănă cu date reale. Acesta învață să producă rezultate mai realiste de-a lungul timpului încercând să-l „păcălească” pe Discriminator să creadă că datele generate sunt reale.   - **Generatorul** este responsabil pentru crearea de date sintetice (de exemplu, o 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). Generatorul primește de obicei un vector de zgomot aleator ca input, care este trecut prin mai multe straturi (de obicei straturi complet conectate, straturi convoluționale sau alte tipuri) pentru a produce un output care seamănă cu date reale. Acesta învață să producă rezultate mai realiste de-a lungul timpului încercând să-l „păcălească” pe Discriminator să creadă că datele generate sunt reale.
 +  - **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.1743355702.txt.gz · Last modified: 2025/03/30 20:28 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