Spaces:
Sleeping
Sleeping
File size: 2,089 Bytes
597500e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | """
Sonix-ML Neural Architecture Module
-----------------------------------
Defines the Deep Autoencoder structure utilized for dimensionality reduction
and latent feature extraction of running shoe attributes.
"""
import tensorflow as tf
from tensorflow.keras import layers, Model, optimizers
from typing import Tuple, List
def build_autoencoder(input_dim: int,
encoding_dims: List[int] = [32, 16, 8],
dropout_rate: float = 0.3) -> Tuple[Model, Model]:
"""
Constructs a symmetrical Deep Autoencoder and a standalone Encoder model.
Args:
input_dim (int): The number of dynamic input features.
encoding_dims (List[int], optional): Neuron counts for progressive compression.
dropout_rate (float, optional): Regularization fraction.
Returns:
Tuple[Model, Model]: The full Autoencoder and the standalone Encoder.
"""
# --- ENCODER ---
input_layer = layers.Input(shape=(input_dim,), name="feature_input")
x = input_layer
for i, dim in enumerate(encoding_dims):
x = layers.Dense(dim, activation='relu', name=f"encoder_dense_{i}")(x)
x = layers.BatchNormalization(name=f"encoder_bn_{i}")(x)
x = layers.Dropout(dropout_rate, name=f"encoder_dropout_{i}")(x)
latent_space = x
# --- DECODER ---
for i, dim in enumerate(reversed(encoding_dims[:-1])):
x = layers.Dense(dim, activation='relu', name=f"decoder_dense_{i}")(x)
x = layers.BatchNormalization(name=f"decoder_bn_{i}")(x)
x = layers.Dropout(dropout_rate, name=f"decoder_dropout_{i}")(x)
output_layer = layers.Dense(input_dim, activation='sigmoid', name="reconstruction_output")(x)
# --- COMPILATION ---
autoencoder = Model(inputs=input_layer, outputs=output_layer, name="Sonix_Autoencoder")
encoder = Model(inputs=input_layer, outputs=latent_space, name="Sonix_Encoder")
autoencoder.compile(
optimizer=optimizers.Adam(learning_rate=0.001),
loss='mse',
metrics=['mae']
)
return autoencoder, encoder |