How to build Stacked Autoencoder using Keras?

Viewed 25

Stacked Autoencoder

I have tried to create a stacked autoencoder using Keras but I couldn't do the last part of this autoencoder.

Stacked Autoencoder

Here I have created three autoencoders. It works fine individually but I don't know how to combine all the encoder parts for classification.

import keras
from keras import layers
from keras.layers import Input, Dense

input_size = 2304  
hidden_size = 64
output_size = 2304

input_img = keras.Input(shape=(input_size,))

#autoencoder1

encoded = layers.Dense(512, activation='relu')(input_img)

encoded = layers.Dense(256, activation='relu')(encoded)
decoded = layers.Dense(512, activation='relu')(encoded)
decoded = layers.Dense(output_size, activation='sigmoid')(decoded)


autoencoder = keras.Model(inputs=input_img, outputs=decoded)
autoencoder.compile(optimizer='adam', loss='mse')

encoder=Model(inputs=input_img,outputs=encoded)
encoder.compile(optimizer='adam', loss='mse')

#autoencoder2

input_size = 256 
input_img1 = keras.Input(shape=(input_size,))
output_size=256

encoded1 = layers.Dense(128, activation='relu')(input_img1)
encoded1 = layers.Dense(64, activation='relu')(encoded1)
decoded1 = layers.Dense(128, activation='relu')(encoded1)

decoded1 = layers.Dense(output_size, activation='sigmoid')(decoded1)


autoencoder1 = keras.Model(inputs=input_img1, outputs=decoded1)
autoencoder1.compile(optimizer='adam', loss='mse')

encoder1=Model(inputs=input_img1,outputs=encoded1)
encoder1.compile(optimizer='adam', loss='mse')
   
#autoencoder3

input_size = 64
input_img2 = keras.Input(shape=(input_size,))
output_size=64

encoded2 = layers.Dense(32, activation='relu')(input_img2)
decoded2 = layers.Dense(output_size, activation='sigmoid')(encoded2)

autoencoder2 = keras.Model(inputs=input_img2, outputs=decoded2)
autoencoder2.compile(optimizer='adam', loss='mse')

encoder2=Model(inputs=input_img2,outputs=encoded2)
encoder2.compile(optimizer='adam', loss='mse')

y=Dense(7, activation='softmax')(encoder3)

autoencoder3=Model(inputs=input_img,outputs=y)
0 Answers
Related