日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

keras 的 example 文件 variational_autoencoder.py 解析

發(fā)布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 keras 的 example 文件 variational_autoencoder.py 解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

該代碼介紹了VAE自動編解碼器:

VAE的原理可以參考?https://www.cnblogs.com/huangshiyu13/p/6209016.html

編碼器的結構為:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
encoder_input (InputLayer)      (None, 784)          0
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 512)          401920      encoder_input[0][0]
__________________________________________________________________________________________________
z_mean (Dense)                  (None, 2)            1026        dense_1[0][0]
__________________________________________________________________________________________________
z_log_var (Dense)               (None, 2)            1026        dense_1[0][0]
__________________________________________________________________________________________________
z (Lambda)                      (None, 2)            0           z_mean[0][0]z_log_var[0][0]
==================================================================================================
Total params: 403,972
Trainable params: 403,972
Non-trainable params: 0
__________________________________________________________________________________________________

解碼器的結構為:

_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
z_sampling (InputLayer)      (None, 2)                 0
_________________________________________________________________
dense_2 (Dense)              (None, 512)               1536
_________________________________________________________________
dense_3 (Dense)              (None, 784)               402192
=================================================================
Total params: 403,728
Trainable params: 403,728
Non-trainable params: 0
_________________________________________________________________

VAE就是把編碼器的輸入作為解碼器的輸出,完整的網(wǎng)絡:

__________________________________________________________________________________________
Layer (type)                            Output Shape                        Param #
==========================================================================================
encoder_input (InputLayer)              (None, 784)                         0
__________________________________________________________________________________________
encoder (Model)                         [(None, 2), (None, 2), (None, 2)]   403972
__________________________________________________________________________________________
decoder (Model)                         (None, 784)                         403728
==========================================================================================
Total params: 807,700
Trainable params: 807,700
Non-trainable params: 0
__________________________________________________________________________________________

訓練時的輸入輸出一樣,也就是編碼之后再解碼,結果和輸入一致;

也就是把圖片編碼為一個二維向量,也就是一個坐標,這樣每個圖片都可以獲取到一個坐標,反之,指定范圍內(nèi)的坐標也可以直接解碼為一張圖片;

如果把數(shù)字圖片畫到特定坐標上,效果如下:

如果從特定坐標反向解碼為圖片,效果如下:

?

當然我的這個結果只是一個參考,因為每次訓練的結果都可能不一樣;

但我們可以確定的是,相同的數(shù)字圖片,其坐標很相近,反之,坐標相近的位置,其畫面也會很接近;

——————————————————————————————————————

代碼?variational_autoencoder_deconv.py 的原理和?variational_autoencoder.py 一致,只不過是用卷積和反卷積來替代全連接網(wǎng)絡,編碼器的網(wǎng)絡結構為:

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
encoder_input (InputLayer)      (None, 28, 28, 1)    0
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 14, 14, 32)   320         encoder_input[0][0]
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 7, 7, 64)     18496       conv2d_1[0][0]
__________________________________________________________________________________________________
flatten_1 (Flatten)             (None, 3136)         0           conv2d_2[0][0]
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 16)           50192       flatten_1[0][0]
__________________________________________________________________________________________________
z_mean (Dense)                  (None, 2)            34          dense_1[0][0]
__________________________________________________________________________________________________
z_log_var (Dense)               (None, 2)            34          dense_1[0][0]
__________________________________________________________________________________________________
z (Lambda)                      (None, 2)            0           z_mean[0][0]z_log_var[0][0]
==================================================================================================
Total params: 69,076
Trainable params: 69,076
Non-trainable params: 0
__________________________________________________________________________________________________

解碼器的網(wǎng)絡結構為:

__________________________________________________________________________________________
Layer (type)                            Output Shape                        Param #
==========================================================================================
z_sampling (InputLayer)                 (None, 2)                           0
__________________________________________________________________________________________
dense_2 (Dense)                         (None, 3136)                        9408
__________________________________________________________________________________________
reshape_1 (Reshape)                     (None, 7, 7, 64)                    0
__________________________________________________________________________________________
conv2d_transpose_1 (Conv2DTranspose)    (None, 14, 14, 64)                  36928
__________________________________________________________________________________________
conv2d_transpose_2 (Conv2DTranspose)    (None, 28, 28, 32)                  18464
__________________________________________________________________________________________
decoder_output (Conv2DTranspose)        (None, 28, 28, 1)                   289
==========================================================================================
Total params: 65,089
Trainable params: 65,089
Non-trainable params: 0
__________________________________________________________________________________________

VAE網(wǎng)絡的結構和上面一致:

__________________________________________________________________________________________
Layer (type)                            Output Shape                        Param #
==========================================================================================
encoder_input (InputLayer)              (None, 28, 28, 1)                   0
__________________________________________________________________________________________
encoder (Model)                         [(None, 2), (None, 2), (None, 2)]   69076
__________________________________________________________________________________________
decoder (Model)                         (None, 28, 28, 1)                   65089
==========================================================================================
Total params: 134,165
Trainable params: 134,165
Non-trainable params: 0
__________________________________________________________________________________________

把相應的數(shù)字圖片畫到對應的坐標上,效果為:

從指定坐標值解碼出圖片,效果為:

?

總結

以上是生活随笔為你收集整理的keras 的 example 文件 variational_autoencoder.py 解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。