Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在keras中进行自定义回调以在VAE训练中生成样本图像?_Python_Machine Learning_Keras_Callback_Autoencoder - Fatal编程技术网

Python 如何在keras中进行自定义回调以在VAE训练中生成样本图像?

Python 如何在keras中进行自定义回调以在VAE训练中生成样本图像?,python,machine-learning,keras,callback,autoencoder,Python,Machine Learning,Keras,Callback,Autoencoder,我正在64*64图像上训练一个简单的VAE模型,我希望看到每个历元或每两个批次后生成的图像,以查看进度 当我训练模型时,我等待训练完成,然后查看结果 我试着在Keras中创建一个自定义回调函数,生成一个图像并保存它,但是做不到。有可能吗?我找不到类似的东西 如果你让我参考一个解释如何做的资料或者给我一个例子,那就太棒了 注意:我对一个干净的Keras.callback解决方案感兴趣而不是迭代每个历元,训练并生成样本是的,这实际上是可能的,但我总是使用matplotlib和一个自定义函数。举个例子

我正在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\u callback=CustomCallback(…)

并将image_callback放在回调列表中

非常感谢,这是我现在使用的临时解决方案,但我仍然对clean callback方法感兴趣。