Skip to contents

L = recon MSE + codebook loss + beta*commitment loss; straight-through estimator copies the decoder gradient at z_q onto z_e.

Usage

morie_geron_vq_vae(
  X,
  codebook_size = 4,
  latent_dim = 2,
  epochs = 200,
  lr = 0.05,
  beta = 0.25,
  seed = 0
)

Arguments

X

Training data (n, d).

codebook_size, latent_dim, epochs, lr, beta, seed

As in Python original.

Value

list with codes, indices, z_e, z_q, codebook, counts, reconstruction, recon_error, codebook_loss, commitment_loss, perplexity, loss_curve, beta, estimate, n, method.

Examples

V <- c(1, 2, 3, 4, 5, 6, 7, 8)
morie_geron_vq_vae(V)
#> $codes
#>            [,1]       [,2]
#> [1,]  0.3820447  0.1918383
#> [2,]  0.3820447  0.1918383
#> [3,] -1.0421038 -0.5886211
#> [4,] -2.8814527 -1.6321084
#> [5,] -2.8814527 -1.6321084
#> [6,] -6.0508494 -3.4102343
#> [7,] -6.0508494 -3.4102343
#> [8,] -6.0508494 -3.4102343
#> 
#> $indices
#> [1] 0 0 1 2 2 3 3 3
#> 
#> $z_e
#>            [,1]        [,2]
#> [1,]  1.1514173  0.64325901
#> [2,] -0.1013865 -0.07511177
#> [3,] -1.3541903 -0.79348256
#> [4,] -2.6069941 -1.51185334
#> [5,] -3.8597979 -2.23022413
#> [6,] -5.1126017 -2.94859491
#> [7,] -6.3654055 -3.66696570
#> [8,] -7.6182094 -4.38533648
#> 
#> $z_q
#>            [,1]       [,2]
#> [1,]  0.3820447  0.1918383
#> [2,]  0.3820447  0.1918383
#> [3,] -1.0421038 -0.5886211
#> [4,] -2.8814527 -1.6321084
#> [5,] -2.8814527 -1.6321084
#> [6,] -6.0508494 -3.4102343
#> [7,] -6.0508494 -3.4102343
#> [8,] -6.0508494 -3.4102343
#> 
#> $codebook
#>            [,1]       [,2]
#> [1,]  0.3820447  0.1918383
#> [2,] -1.0421038 -0.5886211
#> [3,] -2.8814527 -1.6321084
#> [4,] -6.0508494 -3.4102343
#> 
#> $counts
#> [1] 2 1 2 3
#> 
#> $reconstruction
#>          [,1]
#> [1,] 1.622175
#> [2,] 1.622175
#> [3,] 2.818141
#> [4,] 4.378146
#> [5,] 4.378146
#> [6,] 7.057582
#> [7,] 7.057582
#> [8,] 7.057582
#> 
#> $recon_error
#> [1] 0.3878212
#> 
#> $codebook_loss
#> [1] 0.4569036
#> 
#> $commitment_loss
#> [1] 0.4569036
#> 
#> $perplexity
#> [1] 3.746748
#> 
#> $loss_curve
#>   [1] 21.7007701 13.1101656 51.8220206 72.9689172 55.3772076 40.0119318
#>   [7] 27.4252315 23.9364877 22.3131865 21.1828970 19.2389001 20.6281894
#>  [13] 10.8193065 13.9187176  7.6281807 12.1967530  5.9299482 17.4937444
#>  [19] 20.2057840  2.4146263  7.0275612  8.5601888 11.4719313 19.8652920
#>  [25]  9.3754012  8.7176929 17.3670167 12.2929531  1.9246582  3.4465265
#>  [31]  4.2069354  7.4601952 13.4272747  9.8297385  1.8718499  2.3747483
#>  [37]  3.2634141  4.0785256  7.8295431  2.2195781  2.0880894  2.9556250
#>  [43]  5.2488804  3.6332803  7.5372562  2.4509830  2.2206693  3.3764326
#>  [49]  7.3852661  2.5439872  3.0827276  4.1254708  7.7028462  1.7801283
#>  [55]  1.5191406  1.4399620  1.3739392  1.3526933  1.3288388  1.3189591
#>  [61]  1.3066768  1.2998630  1.2920405  1.2867853  1.2813407  1.2772992
#>  [67]  1.2734354  1.2704495  1.2677768  1.2657193  1.2640051  1.2627592
#>  [73]  1.2618422  1.2113215  1.3010541  1.1162093  1.9882362  3.0141308
#>  [79]  4.9039339  9.8910464  1.4011462  2.5472830  3.3666121  4.8419359
#>  [85]  9.5974411  1.5300425  1.5298693  1.0275169  1.1001101  0.9516185
#>  [91]  1.0146529  0.9574134  0.9912411  0.9665521  0.9819122  0.9703845
#>  [97]  0.9766749  0.9708164  0.9730129  0.9697155  0.9701355  0.9680547
#> [103]  0.9677340  0.9662689  0.9656643  0.9645374  0.9638489  0.9629269
#> [109]  0.9622407  0.9614564  0.9608077  0.9601249  0.9595266  0.9589242
#> [115]  0.9583789  0.9578435  0.9573498  0.9568718  0.9564265  0.9559990
#> [121]  0.9555983  0.9552157  0.9548560  0.9545137  0.9541914  0.9538857
#> [127]  0.9535977  0.9533252  0.9530687  0.9528267  0.9525993  0.9523854
#> [133]  0.9521850  0.9519971  0.9518218  0.9516582  0.9515063  0.9513655
#> [139]  0.9512357  0.9511164  0.9510074  0.9509085  0.9508195  0.9507400
#> [145]  0.9506699  0.9506090  0.9505572  0.9505142  0.9504800  0.9504544
#> [151]  0.9504373  0.9504285  0.9504279  0.9504356  0.9504512  0.9504749
#> [157]  0.9505064  0.9505458  0.9505929  0.9506477  0.9507102  0.9507802
#> [163]  0.9508577  0.9509427  0.9510351  0.9511348  0.9512419  0.9513563
#> [169]  0.9514779  0.9516067  0.9517427  0.9518857  0.9520359  0.9521931
#> [175]  0.9523573  0.9525284  0.9527065  0.9528914  0.9530833  0.9532819
#> [181]  0.9534872  0.9536993  0.9539181  0.9541436  0.9543756  0.9546142
#> [187]  0.9548594  0.9551110  0.9553690  0.9556335  0.9559043  0.9561813
#> [193]  0.9564647  0.9567542  0.9570499  0.9573517  0.9576596  0.9579735
#> [199]  0.9582933  0.9586191
#> 
#> $beta
#> [1] 0.25
#> 
#> $estimate
#> [1] 0.3878212
#> 
#> $n
#> [1] 8
#> 
#> $method
#> [1] "VQ-VAE: nearest-code quantisation, straight-through encoder gradient, codebook + commitment losses"
#>