генератор наборов данных в тензорном потоке keras

Я делаю классификацию текста и имею набор данных в фрейме данных pandas (с столбцами "текст" и "метка"). Хотите создать функцию-генератор с preprocess_fn внутри. Не знаю, как это сделать. Я погуглил, но все еще неясно. вот что у меня есть:

def tfdata_generator(self, X_train, y_train, is_training, batch_size):
    def preprocess_fn(X_train, y_train):
        text_list = X_train['text'].values
        label_list = y_train['Encoded_Label'].values

        # do some preprocessing of text - using bert-tokenizer, lower-case, vocab_file etc.           

        yield X, y

    dataset = tf.data.Dataset.from_generator(preprocess_fn, output_types=(tf.int32, tf.int32))

    dataset = dataset.padded_batch(batch_size=batch_size, drop_remainder=True if is_training else False)
    dataset = dataset.shuffle(3, reshuffle_each_iteration=True)
    dataset = dataset.repeat()
    dataset = dataset.prefetch(tf.data.experimental.AUTOTUNE)

    return dataset

def training_pipeline(self):
    (X_train, y_train), (X_test, y_test) = self.getXy()
    training_set = self.tfdata_generator(X_train, y_train, is_training=True, batch_size=_BATCH_SIZE)
    testing_set = self.tfdata_generator(X_test, y_test, is_training=False, batch_size=_BATCH_SIZE)

    model = self.keras_model()  # your keras model here
    model.compile('adam', 'categorical_crossentropy', metrics=['acc'])

    model.fit(
        training_set.make_one_shot_iterator(),  #=> I already have a generator. Should I have an iterator here? I think not.
        steps_per_epoch=len(X_train) // _BATCH_SIZE,
        epochs=self.program_config.getint('parameters', 'num_epochs'),
        validation_data=testing_set.make_one_shot_iterator() #=> already have a generator.
        validation_steps=len(X_test) // _BATCH_SIZE,
        verbose=1)

    return model

Я не знаю, верна ли моя функция tfdata_generator. Любые предложения / исправления будут полезны. Кроме того, в model.fit training_set уже будет небольшой партией. Обязательно ли наличие итератора?

0 ответов

Другие вопросы по тегам