vqvae
1.0.0
這是量化量化變量自動編碼器(https://arxiv.org/abs/1711.00937)的pytorch實現。
您可以在此處在TensorFlow中找到作者的原始實現,並在Jupyter筆記本電腦中運行一個示例。
要安裝依賴項,請使用Python 3創建CONDA或虛擬環境,然後運行pip install -r requirements.txt
。
要運行VQ-VAE,只需運行python3 main.py
如果要保存模型,請確保包括-save
標誌。您還可以在命令行中添加參數。默認值如下:
parser . add_argument ( "--batch_size" , type = int , default = 32 )
parser . add_argument ( "--n_updates" , type = int , default = 5000 )
parser . add_argument ( "--n_hiddens" , type = int , default = 128 )
parser . add_argument ( "--n_residual_hiddens" , type = int , default = 32 )
parser . add_argument ( "--n_residual_layers" , type = int , default = 2 )
parser . add_argument ( "--embedding_dim" , type = int , default = 64 )
parser . add_argument ( "--n_embeddings" , type = int , default = 512 )
parser . add_argument ( "--beta" , type = float , default = .25 )
parser . add_argument ( "--learning_rate" , type = float , default = 3e-4 )
parser . add_argument ( "--log_interval" , type = int , default = 50 )
VQ VAE具有以下基本模型組件:
x -> z_e
Encoder
類VectorQuantizer
類,將編碼器輸出轉換為離散的單速矢量,該向量是最接近的嵌入向量z_e -> z_q
的索引z_q -> x_hat
並重建原始圖像Decoder
類編碼器 /解碼器類是卷積和反向卷積堆棧,其中包括其體系結構中的殘留塊,請參見Resnet Paper。殘留模型由ResidualLayer
和ResidualStack
類定義。
這些組件在以下文件夾結構中組織:
models/
- decoder.py -> Decoder
- encoder.py -> Encoder
- quantizer.py -> VectorQuantizer
- residual.py -> ResidualLayer, ResidualStack
- vqvae.py -> VQVAE
要從潛在空間進行採樣,我們將PixelCNN擬合在潛在像素值z_ij
上。這裡的訣竅是認識到VQ VAE將圖像映射到具有與1通道圖像相同結構的潛在空間。例如,如果運行默認的VQ VAE參數,則將RGB映射的形狀圖像(32,32,3)
到具有形狀的潛在空間(8,8,1)
,該空間等同於8x8灰度圖像。因此,您可以使用PixelCNN將分佈擬合在8x8 1通道潛在空間的“像素”值上。
要在潛在表示上訓練PixelCNN,您首先需要遵循以下步驟:
np.save
API保存離散的潛在空間表示。在quantizer.py
中,這是min_encoding_indices
變量。utils.load_latent_block
函數中指定保存的潛在空格數據集的路徑。要運行PixelCNN,只需鍵入
python pixelcnn/gated_pixelcnn.py
以及任何參數(請參閱“ argparse語句”)。默認數據集是LATENT_BLOCK
,只有在您訓練了VQ VAE並保存潛在表示的情況下才能使用。