Создайте поезд и действительный набор данных в petastorm.
Версии: Python3.7.13, Tensorflow-2.9.1, Petastorm-0.12.1.
В petastorm кажется, что единственный способ обучить модель с использованием набора данных, созданного из petastorm, - это
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)