如何从变性自动编码器模型中创建编码器模型

  • 本文关键字:编码器 模型 创建 keras
  • 更新时间 :
  • 英文 :


我创建了一个变异自动编码器,其效果很好,结果很好。现在我想提取编码器模型,以便可以将其用于降低维度。我可以做什么?

x = Input(shape=(original_dim,))
h1 = Dense(n1, activation='relu',name='dens_1' )(x)
h2 = Dense(n2, activation='relu',name='dens_2')(h1)
h3 = Dense(n3, activation='relu',name='dens_3')(h2)
h4 = Dense(n4, activation='relu',name='dens_4')(h3)
h = Dense(n5, activation='relu',name='dens_5')(h4)
z_mu = Dense(latent_dim,activation='relu',name='dens_6')(h)
z_log_var = Dense(latent_dim,activation='relu',name='dens_7')(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(tensor=K.random_normal(stddev=epsilon_std,
                                   shape=(K.shape(x)[0], latent_dim)))
z_eps = Multiply()([z_sigma, eps])
z = Add()([z_mu, z_eps])
x_pred = decoder(z)
vae = Model(inputs=[x, eps], outputs=x_pred)
vae.compile(optimizer='adam', loss=nllfun)
vae.fit(x_train,
        x_train,
        shuffle=True,
        epochs=epochs,
        batch_size=batch_size,
        validation_data=(x_test, x_test))

您可以尝试一下,

首次更改,z = Add(name = 'encoder_output')([z_mu, z_eps])

您可以通过

来检验模型
encoder_model = Model(inputs=vae.inputs,outputs=vae.get_layer('encoder_output').output)

最新更新