Tensorflow – Dense and Convolutional layers connection

Issue

I’m new to Deep Learning and I can’t find anywhere how to do the bottleneck in my AE with convolutional and dense layers. The code below is the specific part where I’m struggling:

...
encoded = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)

# encoded = Dense(2)(encoded) # Linear activation function at the bottleneck

decoded = Conv2D(8, (3, 3), activation='relu', padding='same')(decoded)
...

I tried some solutions, like flatten and reshape, but nothing seems to work here. The point is that I need the latent space to be a dense layer of 2 because I need to sample points [x,y] from it. I did it with MLP following this link (https://www.kaggle.com/code/apapiu/manifold-learning-and-autoencoders/notebook) and it worked, but I can’t manage to do the same with my structure.

Thanks in advice, and best regards!

Solution

Convolution2D takes the input of a 4+ Dimension tensor, hence you need to reshape the input before passing it to Convolution2D layer. You can use a model like below.

input_img = Input(shape=(784,))
input_img1 = Reshape(target_shape=(28,28,1))(input_img)
encoded = Convolution2D(8, (3, 3), activation='relu', padding='same')(input_img1)
encoded = Dense(2)(encoded)
decoded1 = Convolution2D(8, (3, 3), activation='relu', padding='same')(encoded)
decoded2 = Flatten()(decoded1)
decoded = Dense(784,)(decoded2)

Please refer to this gist for complete code with random data.

Answered By – Tfer3

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published