Использование обратных вызовов Keras для изменения набора данных - PullRequest
0 голосов
/ 25 марта 2019

Я хочу менять части своего набора данных в каждую эпоху. Как написано в документации Keras , для создания обратного вызова мне нужно создать класс. Итак, я начал с написания

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

но потом я понял, что у меня нет возможности получить доступ к набору данных модели. Можно ли это сделать с помощью обратных вызовов?

Я также видел эту запись, но я не совсем понял это. У меня уже есть модель архитектуры, и я использую модель, а не последовательную.

1 Ответ

1 голос
/ 25 марта 2019

Вы можете реализовать последовательность , которая загружает данные для вашей модели во время обучения.У него есть метод 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...