Closed bryanongwx closed 3 years ago
I have the exact same error. I am using the following versions: Tensorflow 2.3.1 Keras 2.4.0
I have found a solution to make this example work, but I don't dare to promise this is a 'good' workaround.
I was inspired by this issue and solution: https://stackoverflow.com/questions/61997378/assertionerror-could-not-compute-output-tensor
Which made me change some parts of the original code:
x = Input(shape= (original_dim, ), name = 'I1' )
h = Dense(intermediate_dim, activation='relu')(x)
z_mu = Dense(latent_dim)(h)
z_log_var = Dense(latent_dim)(h)
z_mu, z_log_var = KLDivergenceLayer()([z_mu, z_log_var])
z_sigma = Lambda(lambda t: K.exp(.5*t))(z_log_var)
eps = Input(shape=(latent_dim,), name = 'I2') # <--- note
z_eps = Multiply()([z_sigma, eps])
z = Add()([z_mu, z_eps])
decoder = Sequential([
InputLayer(input_shape=(latent_dim,), name='z'),
Dense(intermediate_dim, input_shape=(latent_dim,),
activation='relu', name='hidden_dec'),
Dense(original_dim, activation='sigmoid')
], name='decoder')
x_pred = decoder(z)
vae = Model(inputs=(x, eps), outputs=x_pred, name='vae')
vae.compile(optimizer='adam', loss=nll)
Training will be done as follow:
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, original_dim) / 255.
x_test = x_test.reshape(-1, original_dim) / 255.
noise = np.random.normal(0,1, size = (x_train.shape[0],2))
hist = vae.fit({'I1':x_train, 'I2':noise},
{'decoder':x_train, },
epochs=25,
verbose = 1)
And my results are in line with what you expect when using the "generator":
I have experienced a similar issue. Tested https://tiao.io VAE implementation caused exact the same problem, so my guess the issue is related to keras version 2.4.3 or tf 2.3.0, unfortunately the @mbongaerts solution didn't work for me.
I see the problem now,
You need to propagate the changes to validation as well, and now it will work fine!
Thanks!
I see the problem now,
You need to propagate the changes to validation as well, and now it will work fine!
Thanks!
Good it works! Note, that you do need to frequently change the noise, else it will "learn" only this noise. I just put my training in a loop where the noise each iteration changes.
Good luck!
@bryanongwx Moving this issue to closed status as there has been no recent activity.In case you still face the error please create a new issue,we will get you the right help.Thanks!
I'm trying a code out from a tutorial online but there seems to be an error in compiling the VAE. Any help would be greatly appreciated!
The tutorial is online here, which was posted in June this year: https://tiao.io/post/tutorial-on-variational-autoencoders-with-a-concise-keras-implementation/