Создайте поезд и действительный набор данных в petastorm.

Версии: Python3.7.13, Tensorflow-2.9.1, Petastorm-0.12.1.

В petastorm кажется, что единственный способ обучить модель с использованием набора данных, созданного из petastorm, - этомодель внутриконтекстный менеджер, как показано ниже, как это сделано в https://github.com/uber/petastorm/blob/master/examples/mnist/tf_example.py:

      with make_batch_reader(train_s3_paths, schema_fields=cols+['target']) as tr_reader:
    dataset = make_petastorm_dataset(tr_reader).shuffle(10000).repeat(n_epochs).map(parse)
    history = model.fit(dataset)

Я хочу передать набор данных поезда, а также набор данных проверки, как это сделать?

      with make_batch_reader(train_s3_paths, schema_fields=cols+['target']) as tr_reader:
    tr_dataset = make_petastorm_dataset(tr_reader).shuffle(10000).repeat(n_epochs).map(parse)
    with make_batch_reader(val_s3_paths, schema_fields=cols+['target']) as val_reader:
         val_dataset = make_petastorm_dataset(val_reader).shuffle(10000).repeat(n_epochs).map(parse)
         history = model.fit(tr_dataset, validation_data=val_dataset)

Это эффективный способ решить проблему, с которой я столкнулся? Существуют ли альтернативные способы, такие как использование набора данных вне диспетчера контекста или вообще не использовать диспетчер контекста?

1 ответ

Я не уверен насчет make_batch_reader, но оператор with может принимать несколько операторов. Прочтите это для получения дополнительной информации.

В вашем случае это должно сработать -

      with make_batch_reader(train_s3_paths, schema_fields=cols+['target']) as tr_reader, make_batch_reader(val_s3_paths, schema_fields=cols+['target']) as val_reader:
    tr_dataset = make_petastorm_dataset(tr_reader).shuffle(10000).repeat(n_epochs).map(parse)
    val_dataset = make_petastorm_dataset(val_reader).shuffle(10000).repeat(n_epochs).map(parse)
    history = model.fit(tr_dataset, validation_data=val_dataset)
Другие вопросы по тегам