通过检查点keras加载权重会产生不同的结果

时间:2018-03-29 11:52:47

标签: python keras autoencoder checkpoint

我是keras的新手。事实上,我设想了一个自动编码器并在糖尿病数据集的一部分上进行训练。然后,我使用keras checkpointer来保存权重,以便我可以稍后加载它以便对编码数据向量进行一些操作(计算编码数据的平均值以提取类表示)

问题

当我加载权重然后获取编码数据时,每次运行代码时都会得到不同的结果。在训练自动编码器后,我将compilefit语句转换为commentetd状态,以便每次运行代码时都不重复训练过程。

以下是代码:

checkpointer = ModelCheckpoint(filepath="weights.best.h5",
                               verbose=0,
                               save_best_only=True,
                               save_weights_only=True)
tensorboard = TensorBoard(log_dir='/tmp/autoencoder',
                          histogram_freq=0,
                          write_graph=True,
                          write_images=True)
input_enc = Input(shape=(input_size,))
hidden_1 = Dense(hidden_size1, activation='relu')(input_enc)
hidden_11 = Dense(hidden_size2, activation='relu')(hidden_1)
code = Dense(code_size, activation='relu')(hidden_11)
hidden_22 = Dense(hidden_size2, activation='relu')(code)
hidden_2 = Dense(hidden_size1, activation='relu')(hidden_22)
output_enc = Dense(input_size, activation='tanh')(hidden_2)
autoencoder_yes = Model(input_enc, output_enc)


autoencoder_yes.compile(optimizer='adam',
                         loss='mean_squared_error', 
                         metrics=['accuracy'])
history_yes = autoencoder_yes.fit(df_noyau_norm_y, df_noyau_norm_y,
                               epochs=200,
                                batch_size=batch_size,
                                shuffle = True,
                                validation_data=(df_test_norm_y, df_test_norm_y),
                                verbose=1, 
                                callbacks=[checkpointer, tensorboard]).history

autoencoder_yes.save_weights("weights.best.h5")
autoencoder_yes.load_weights("weights.best.h5")

encoder_yes = Model (inputs = input_enc,outputs = code)
encoded_input = Input(shape=(code_size, ))
encoded_data_yes = encoder_yes.predict(df_noyau_norm_y)
print(encoded_data_yes.tolist())

X_YES= sum(encoded_data_yes) / 7412
print (X_YES)

任何人都可以帮我找出原因以及如何解决这个问题?

由于

0 个答案:

没有答案