Đây là một mô hình VAE (Variational Autoencoder) đơn giản được xây dựng bằng TensorFlow. Mô hình này sử dụng một kiến trúc đơn giản với các lớp fully connected layers.
```python
import tensorflow as tf
from tensorflow.keras import layers
# Hàm xây dựng mô hình Encoder
def build_encoder(input_dim, latent_dim):
inputs = tf.keras.Input(shape=(input_dim,))
x = layers.Dense(256, activation='relu')(inputs)
x = layers.Dense(128, activation='relu')(x)
mean = layers.Dense(latent_dim)(x)
log_var = layers.Dense(latent_dim)(x)
return tf.keras.Model(inputs, [mean, log_var], name='encoder')
# Hàm xây dựng mô hình Decoder
def build_decoder(output_dim, latent_dim):
inputs = tf.keras.Input(shape=(latent_dim,))
x = layers.Dense(128, activation='relu')(inputs)
x = layers.Dense(256, activation='relu')(x)
outputs = layers.Dense(output_dim, activation='sigmoid')(x)
return tf.keras.Model(inputs, outputs, name='decoder')
# Hàm xây dựng mô hình VAE
def build_vae(input_dim, latent_dim):
encoder = build_encoder(input_dim, latent_dim)
decoder = build_decoder(input_dim, latent_dim)
inputs = tf.keras.Input(shape=(input_dim,))
mean, log_var = encoder(inputs)
z = tf.random.normal(shape=(latent_dim,))
sampled_z = mean + tf.exp(0.5 * log_var) * z
outputs = decoder(sampled_z)
vae = tf.keras.Model(inputs, outputs, name='vae')
return vae
# Xây dựng mô hình VAE với các thông số đầu vào
input_dim = 784 # Kích thước đầu vào (28x28 pixels)
latent_dim = 32 # Kích thước không gian tiềm ẩn
vae = build_vae(input_dim, latent_dim)
vae.summary()
```
Trong ví dụ trên, `build_encoder` xây dựng mô hình encoder với các lớp fully connected layers. `build_decoder` xây dựng mô hình decoder cũng với các lớp fully connected layers. Cuối cùng, `build_vae` xây dựng mô hình VAE bằng cách kết hợp encoder và decoder.