如何在keras中进行自定义回调以在VAE训练中生成样本图像?
How to make custom callback in keras to generate sample image in VAE training?
我正在 64*64 图像上训练一个简单的 VAE 模型,我想查看每个时期或每几个批次后生成的图像以查看进度。
当我训练模型时,我会等到训练完成后再查看结果。
我试图在 Keras 中创建一个自定义回调函数来生成图像并保存它但无法执行。有可能吗?我找不到类似的东西。
如果你向我推荐一个解释如何这样做的来源或给我一个例子,那就太棒了。
注意:我感兴趣的是一个干净的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_callback = CustomCallback(...)
并将 image_callback 放入回调列表
我正在 64*64 图像上训练一个简单的 VAE 模型,我想查看每个时期或每几个批次后生成的图像以查看进度。
当我训练模型时,我会等到训练完成后再查看结果。
我试图在 Keras 中创建一个自定义回调函数来生成图像并保存它但无法执行。有可能吗?我找不到类似的东西。
如果你向我推荐一个解释如何这样做的来源或给我一个例子,那就太棒了。
注意:我感兴趣的是一个干净的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_callback = CustomCallback(...)
并将 image_callback 放入回调列表