ichou1のブログ

主に音声認識、時々、データ分析のことを書く

Kerasメモ(VAE)

変分オートエンコーダ(Variational Autoencoder)を使ったイメージ生成を試してみる。


https://www.oreilly.co.jp/books/images/picture978-4-87311-857-4.gif
「RとKerasによるディープラーニング」

モデル

f:id:ichou1:20190321114042p:plain

6epochのトレーニングが終わった状態のdecoderからイメージを生成してみる。

latent space(潜在的意味空間)の次元は「2」で、
latent space上の「点」はppf(inverse CDF)から生成したものを渡す。

f:id:ichou1:20190323094613p:plain

n <- 15            # Number of rows / columns of digits
grid_x <- qnorm(seq(0.05, 0.95, length.out = n))
grid_y <- qnorm(seq(0.05, 0.95, length.out = n))

qnorm(seq(0.05, 0.95, length.out = 15))
 [1] -1.644854e+00 -1.204047e+00 -9.208230e-01 -6.971414e-01 -5.039654e-01
 [6] -3.280721e-01 -1.618442e-01 -1.391458e-16  1.618442e-01  3.280721e-01
[11]  5.039654e-01  6.971414e-01  9.208230e-01  1.204047e+00  1.644854e+00

(python版)

from scipy.stats import norm
n = 15  # figure with 15x15 digits
grid_x = norm.ppf(np.linspace(0.05, 0.95, n))
grid_y = norm.ppf(np.linspace(0.05, 0.95, n))

norm.ppf(np.linspace(0.05, 0.95, 15))
array([-1.64485363e+00, -1.20404696e+00, -9.20822976e-01, -6.97141435e-01,
       -5.03965367e-01, -3.28072108e-01, -1.61844167e-01, -1.39145821e-16,
        1.61844167e-01,  3.28072108e-01,  5.03965367e-01,  6.97141435e-01,
        9.20822976e-01,  1.20404696e+00,  1.64485363e+00])

f:id:ichou1:20190323110233p:plain