def mnist_adaptive_prior_discriminator(data_dim, latent_dim):
data_input = Input(shape=(data_dim,), name='disc_internal_data_input')
# center the data around 0 in [-1, 1] as it is in [0, 1].
centered_data = Lambda(lambda x: 2 * x - 1, name='disc_centering_data_input')(data_input)
discriminator_body_data = repeat_dense(centered_data, n_layers=3, n_units=512, name_prefix='disc_body_data')
theta = Dense(4*512, activation='relu', name='disc_theta')(discriminator_body_data)
discriminator_body_data_t = repeat_dense(centered_data, n_layers=3, n_units=512, name_prefix='disc_body_data_t')
discriminator_body_data_t = Dense(1, activation=None, name='disc_data_squash')(discriminator_body_data_t)
latent_input = Input(shape=(latent_dim,), name='disc_internal_latent_input')
discriminator_body_latent = repeat_dense(latent_input, n_layers=3, n_units=512, name_prefix='disc_body_latent')
sigma = Dense(4*512, activation='relu', name='disc_sigma')(discriminator_body_latent)
discriminator_body_latent_t = repeat_dense(latent_input, n_layers=3, n_units=512, name_prefix='disc_body_latent_t')
discriminator_body_latent_t = Dense(1, activation=None, name='disc_latent_squash')(discriminator_body_latent_t)
merged_data_latent = Multiply(name='disc_mul_sigma_theta')([theta, sigma])
merged_data_latent = Lambda(lambda x: ker.sum(x, axis=-1), name='disc_add_activ_sig_the')(merged_data_latent)
discriminator_output = Add(name='disc_add_data_latent_t')([discriminator_body_data_t,
discriminator_body_latent_t,
merged_data_latent])
collapsed_noise = Lambda(lambda x: 0.5 * ker.sum(x**2, axis=-1), name='disc_noise_addition')(latent_input)
discriminator_output = Add(name='disc_add_all_toghether')([discriminator_output, collapsed_noise])
discriminator_model = Model(inputs=[data_input, latent_input], outputs=discriminator_output,
name='disc_internal_model')
return discriminator_model
architectures.py 文件源码
python
阅读 18
收藏 0
点赞 0
评论 0
评论列表
文章目录