我想在每个时期更改部分数据集。如Keras documentation中所述,为了创建回调,我需要创建一个类。所以我开始写
class AlterDataset(keras.callbacks.Callback):
def on_epoch_end(self,epoch,logs={}):
#???
但是后来我意识到我无法访问模型的数据集。可以使用回调完成此操作吗?
我也看到了this条目,但我不太理解。我已经有一个模型架构,并且我使用模型,而不是顺序模型。
答案 0 :(得分: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
拟合模型。