Python 如何在keras中进行自定义回调以在VAE训练中生成样本图像?
我正在64*64图像上训练一个简单的VAE模型,我希望看到每个历元或每两个批次后生成的图像,以查看进度 当我训练模型时,我等待训练完成,然后查看结果 我试着在Keras中创建一个自定义回调函数,生成一个图像并保存它,但是做不到。有可能吗?我找不到类似的东西 如果你让我参考一个解释如何做的资料或者给我一个例子,那就太棒了Python 如何在keras中进行自定义回调以在VAE训练中生成样本图像?,python,machine-learning,keras,callback,autoencoder,Python,Machine Learning,Keras,Callback,Autoencoder,我正在64*64图像上训练一个简单的VAE模型,我希望看到每个历元或每两个批次后生成的图像,以查看进度 当我训练模型时,我等待训练完成,然后查看结果 我试着在Keras中创建一个自定义回调函数,生成一个图像并保存它,但是做不到。有可能吗?我找不到类似的东西 如果你让我参考一个解释如何做的资料或者给我一个例子,那就太棒了 注意:我对一个干净的Keras.callback解决方案感兴趣而不是迭代每个历元,训练并生成样本是的,这实际上是可能的,但我总是使用matplotlib和一个自定义函数。举个例子
注意:我对一个干净的Keras.callback解决方案感兴趣而不是迭代每个历元,训练并生成样本是的,这实际上是可能的,但我总是使用matplotlib和一个自定义函数。举个例子
for steps in range (epochs):
Train,Test = YourDataGenerator() # load your images for one loop
model.fit(Train,Test,batch_size= ...)
result = model.predict(Test_image)
plt.imshow(result[0,:,:,:]) # keras always returns [batch.nr,heigth,width,channels]
filename1 = '/content/runde2/%s_generated_plot_%06d.png' % (test, (steps+1))
plt.savefig(filename1 )
plt.close()
我认为还有一个干净的keras.callback版本,但我一直使用这种方法,因为您可以使用其他库来简化每个循环的数据扩充。但这只是我的意见,希望我能至少帮你一点。如果你仍然需要它,你可以在keras中定义自定义回调作为
keras.callbacks.callback的子类:
class CustomCallback(keras.callbacks.Callback):
def __init__(self, save_path, VAE):
self.save_path = save_path
self.VAE = VAE
def on_epoch_end(self, epoch, logs={}):
#load the image
#get latent_space with self.VAE.encoder.predict(image)
#get reconstructed image wtih self.VAE.decoder.predict(latent_space)
#plot reconstructed image with matplotlib.pyplot
然后将回调定义为image\u callback=CustomCallback(…)
并将image_callback放在回调列表中非常感谢,这是我现在使用的临时解决方案,但我仍然对clean callback方法感兴趣。