问题描述:
mindformers 1.3.0版本,参考文档制作mincreocord格式数据集进行训练
https://www.mindspore.cn/mindformers/docs/zh-CN/r1.3.0/function/dataset.html
看文档介绍感觉columns只能支持input_ids和lables,但是目前客户希望支持attention_mask和eod,需要确认mindrecord是否支持以及如何支持
解决方法:
mindrecord 只是一个容器,里面存放内容不限。
通过自定义schema就可以创建任何类型的数据集。
定义schema后add_schema就可以了。
如下样例。add_index是为了加速数据读取的。
from mindspore.mindrecord import FileWriter
writer = FileWriter(file_name="test.mindrecord", shard_num=1, overwrite=True)
schema_json = {"file_name": {"type": "string"}, "label": {"type": "int32"}, "data": {"type": "bytes"}}
writer.add_schema(schema_json, "test_schema")
indexes = ["file_name", "label"]
writer.add_index(indexes)
for i in range(10):
data = [{"file_name": str(i) + ".jpg", "label": i,
"data": b"\x10c\xb3w\xa8\xee$o&<q\x8c\x8e(\xa2\x90\x90\x96\xbc\xb1\x1e\xd4QER\x13?\xff"}]
writer.write_raw_data(data)
writer.commit()