gpt4 book ai didi

keras - 在 keras 回调中使用带有自定义参数的自定义函数

转载 作者:行者123 更新时间:2023-12-04 00:25:51 25 4
gpt4 key购买 nike

我正在 keras 中训练一个模型,我想在每个时期之后绘制结果图。我知道 keras 回调提供了“on_epoch_end”函数,如果人们想在每个 epoch 之后进行一些计算,则可以重载该函数,但我的函数需要一些额外的参数,当给定这些参数时,元类错误会导致代码崩溃。详情如下:

这是我现在的做法,效果很好:-

class NewCallback(Callback):

def on_epoch_end(self, epoch, logs={}): #working fine, printing epoch after each epoch
print("EPOCH IS: "+str(epoch))


epochs=5
batch_size = 16
model_saved=False
if model_saved:
vae.load_weights(args.weights)
else:
# train the autoencoder
vae.fit(x_train,
epochs=epochs,
batch_size=batch_size,
validation_data=(x_test, None),
callbacks=[NewCallback()])

但我希望我的回调函数是这样的:-
class NewCallback(Callback,models,data,batch_size):
def on_epoch_end(self, epoch, logs={}):
print("EPOCH IS: "+str(epoch))
x=models.predict(data)
plt.plot(x)
plt.savefig(epoch+".png")

如果我这样称呼它合适:
callbacks=[NewCallback(models, data, batch_size=batch_size)]

我收到此错误:
TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases 

我正在寻找一个更简单的解决方案来调用我的函数或解决这个元类错误,任何帮助将不胜感激!

最佳答案

我认为您想要做的是定义一个类,该类从回调派生并采用模型、数据等......作为构造函数参数。所以:

class NewCallback(Callback):
""" NewCallback descends from Callback
"""
def __init__(self, models, data, batch_size):
""" Save params in constructor
"""
self.models = models

def on_epoch_end(self, epoch, logs={}):
x = self.models.predict(self.data)

关于keras - 在 keras 回调中使用带有自定义参数的自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56953385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com