前言:
我這篇做些額外整理與補(bǔ)充。
目前星爆AI智商 (因?yàn)橛?xùn)練資料太少,下一步大概會(huì)做自動(dòng)星爆資料處理):
程式一樣在
個(gè)人網(wǎng)站閱讀比較方便喔~
生成對(duì)抗網(wǎng)路 (Generative Adversarial Network)
就是現(xiàn)在最夯的繪圖AI基本網(wǎng)路,他是由Generator和Discriminator組成,訓(xùn)練階段也分成兩種:
- 固定Generator參數(shù)並持續(xù)產(chǎn)生圖片,參雜真實(shí)圖片給Discriminator看,Discriminator要去分辨誰(shuí)是生產(chǎn)的,誰(shuí)是真實(shí)的,以此訓(xùn)練Discriminator。
- 固定Discriminator的參數(shù),Generator要學(xué)著產(chǎn)生會(huì)讓Discriminator誤判的圖片(真假難辨的地步),也就是目標(biāo)讓Discriminator誤判最大化。
製作Module
[官方範(fàn)例]
[範(fàn)例] 基本NN:將輸入的數(shù)值+1
產(chǎn)生文字圖片
以最入門(mén)的MNIST資料庫(kù)為例,使用GAN產(chǎn)生文字。
定義Disc和Gen:
*Gen通常會(huì)比Disc多一個(gè)雜訊參數(shù)。
最基本的概念如同我們國(guó)小學(xué)的:y=ax+b , a是權(quán)重,b是位移。
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
[範(fàn)例]
需要注意的是他輸出的shape:
Weight和Bias
預(yù)設(shè)值
,會(huì)在每次反向傳播時(shí)更新。
也可以自己設(shè)定初始值[1]:
LeakyReLU
ReLU是將所有的負(fù)值都設(shè)為零,相反,Leaky ReLU是給所有負(fù)值賦予一個(gè)非零斜率。[2]
LeakyReLU — PyTorch 1.13 documentation[範(fàn)例]
Sigmoid
有點(diǎn)老的激活函數(shù),後期之後就比較少人用(?),主要是他的曲線有點(diǎn)曖昧(且計(jì)算量比ReLu大)[4]。
[範(fàn)例]
Loss函數(shù)
Loss函數(shù)[6]定義了誤差距離,最簡(jiǎn)單的L1是取直線距離,L2取直線平方距離....到一些進(jìn)階的BCE取Log距離等等。 神經(jīng)網(wǎng)路追求的就是誤差(Loss)越小越好。