Source code for antspynet.architectures.create_autoencoder_model
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
[docs]def create_autoencoder_model(number_of_units_per_layer,
activation='relu',
initializer='glorot_uniform'
):
"""
2-D implementation of the Vgg deep learning architecture.
Builds an autoencoder based on the specified array definining the
number of units in the encoding branch. Ported to Keras R from the
Keras python implementation here:
https://github.com/XifengGuo/DEC-keras
Arguments
---------
number_of_units_per_layer : tuple
A tuple defining the number of units in the encoding branch.
activation : string
Activation type for the dense layers
initializer : string
Initializer type for the dense layers
Returns
-------
Keras model
An encoder and autoencoder Keras model.
Example
-------
>>> model = create_autoencoder_model((784, 500, 500, 2000, 10))
>>> model.summary()
"""
number_of_encoding_layers = len(number_of_units_per_layer) - 1
inputs = Input(shape=(number_of_units_per_layer[0],))
encoder = inputs
for i in range(number_of_encoding_layers - 1):
encoder = Dense(units=number_of_units_per_layer[i + 1],
activation=activation,
kernel_initializer=initializer)(encoder)
encoder = Dense(units=number_of_units_per_layer[-1])(encoder)
autoencoder = encoder
for i in range(number_of_encoding_layers-1, 0, -1):
autoencoder = Dense(units=number_of_units_per_layer[i],
activation=activation,
kernel_initializer=initializer)(autoencoder)
autoencoder = Dense(units=number_of_units_per_layer[0],
kernel_initializer=initializer)(autoencoder)
encoder_model = Model(inputs=inputs, outputs=encoder)
autoencoder_model = Model(inputs=inputs, outputs=autoencoder)
return(autoencoder_model, encoder_model)