Keras 联合优化自动编码器和全连接网络进行分类
我有一大组未标记的数据和一小组标记的数据。因此,我想首先在未标记的数据上训练一个变分自动编码器,然后在标记的数据上使用编码器对三个类进行分类(连接一个完全连接的层)。为了优化超参数,我想使用Optuna 一种可能是首先优化自动编码器,然后优化完全连接的网络(分类),但随后自动编码器可能学习对分类没有意义的编码 是否有可能联合优化自动编码器和完全连接的网络 我的自动编码器如下所示(params只是一个包含params的字典): 连接到编码器的完全连接网络如下所示:Keras 联合优化自动编码器和全连接网络进行分类,keras,deep-learning,classification,autoencoder,optuna,Keras,Deep Learning,Classification,Autoencoder,Optuna,我有一大组未标记的数据和一小组标记的数据。因此,我想首先在未标记的数据上训练一个变分自动编码器,然后在标记的数据上使用编码器对三个类进行分类(连接一个完全连接的层)。为了优化超参数,我想使用Optuna 一种可能是首先优化自动编码器,然后优化完全连接的网络(分类),但随后自动编码器可能学习对分类没有意义的编码 是否有可能联合优化自动编码器和完全连接的网络 我的自动编码器如下所示(params只是一个包含params的字典): 连接到编码器的完全连接网络如下所示: latent = vae.pre
latent = vae.predict(images)[0]
inputs = Input(shape=(input_shape,), name='fc_input')
den = inputs
for i in range(len(self.params["units"])):
den = Dense(self.params["units"][i])(den)
den = Activation('relu')(den)
out = Dense(self.num_classes, activation='softmax')(den)
model = Model(inputs, out, name='fcnn')
optimizer = keras.optimizers.Adam(lr=self.mc.CONFIG["fcnn"]["learning_rate"], beta_1=0.9, beta_2=0.999,
epsilon=1e-08, decay=self.mc.CONFIG["fcnn"]["learning_rate_decay"])
model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
model.fit(latent, y,
epochs=self.params["n_epochs"],
batch_size=self.params["batch_size"],
verbose=0,
shuffle=True)
y_prob = model.predict(latent)
latent = vae.predict(images)[0]
inputs = Input(shape=(input_shape,), name='fc_input')
den = inputs
for i in range(len(self.params["units"])):
den = Dense(self.params["units"][i])(den)
den = Activation('relu')(den)
out = Dense(self.num_classes, activation='softmax')(den)
model = Model(inputs, out, name='fcnn')
optimizer = keras.optimizers.Adam(lr=self.mc.CONFIG["fcnn"]["learning_rate"], beta_1=0.9, beta_2=0.999,
epsilon=1e-08, decay=self.mc.CONFIG["fcnn"]["learning_rate_decay"])
model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
model.fit(latent, y,
epochs=self.params["n_epochs"],
batch_size=self.params["batch_size"],
verbose=0,
shuffle=True)
y_prob = model.predict(latent)