使用Keras回调来更改数据集

问题描述 投票:0回答:1

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

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

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

我也看过this入场,但我不太明白这一点。我已经有了一个模型架构,我使用的是Model,而不是Sequential。

python keras
1个回答
1
投票

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

粗略的例子:

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

然后你可以使用fit_generator来适应你的模型。

© www.soinside.com 2019 - 2024. All rights reserved.