使用Keras回调来改变数据

2024-06-17 15:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在每一个纪元改变数据集的一部分。正如在Keras documentation中所写,为了创建回调,我需要创建一个类。所以我从写作开始

class AlterDataset(keras.callbacks.Callback):
    def on_epoch_end(self,epoch,logs={}):
        #???

但后来我意识到我无法访问模型的数据集。这可以用回调来完成吗?在

我也看过this条目,但我不太理解这个。我已经有了一个模型架构,我使用模型,而不是顺序的。在


Tags: 数据模型selfondefdocumentationcallbackclass
1条回答
网友
1楼 · 发布于 2024-06-17 15:31:45

您可以实现一个Sequence,在培训期间为您的模型加载数据。它有一个on_epoch_end方法,您可以在下一个epoch开始之前更改数据。在

粗略的例子:

class MySequence(Sequence):

    def __init__(self, batchSize): # you can add parameters here
        self.batchSize = batchSize
        self.xTrain = loadxData() # load your x data here
        self.yTrain = loadyData() # load your y data here

    def __len__(self):
        return self.xData.shape[0]//self.batchSize

    def __getitem__(self, index):
        return self.xTrain[index*self.batchSize:(index+1)*self.batchSize:]

    def on_epoch_end(self):
        self.xTrain, self.yTrain = changeData(self.xTrain, self.yTrain) # change your data here

然后可以使用^{}来拟合模型。在

相关问题 更多 >