arckit
用于轻松处理抽象与推理语料库(ARC-AGI,前身为ARC)数据集的Python和命令行工具。
pip install -U arckit
Arckit提供了以友好格式加载数据的工具(无需单独下载!),使用高质量矢量图形可视化数据,并在数据集上评估模型。
✨ v0.1新功能: 通过version
参数更新至最新的ARC-AGI和Kaggle数据集。
🐍 Python API
加载数据集
>>> import arckit
>>> train_set, eval_set = arckit.load_data() # 加载ARC1训练/评估集
# TaskSets可迭代且可索引
>>> train_set
<TaskSet: 400 tasks>
>>> train_set[0]
<Task-train 007bbfb7 | 5 train | 1 test>
# 可以通过任务ID进行索引
>>> train_set[0] == train_set['007bbfb7']
True
# 可以通过ID加载特定任务
>>> task = arckit.load_single('007bbfb7')
与任务交互
>>> task.dataset
'train'
>>> task.id
'007bbfb7'
## 提取任务网格
>>> task.train # o task.test
=> List[Tuple[ndarray, ndarray]] # 输入/输出对列表
>>> task.train[0][0] # 第一个训练示例的输入
array([[0, 7, 7],
[7, 7, 7],
[0, 7, 7]])
# 可以在Python中预览任务(带颜色!)。
>>> train_set[15].show()
<Task-train 0d3d703e | 4 train | 1 test>
┏━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━┳━━━━━━━━┓
┃ A-in 3x3 ┃ A-out 3x3 ┃ B-in 3x3 ┃ B-out 3x3 ┃ C-in 3x3 ┃ C-out 3x3 ┃ D-in 3x3 ┃ D-out 3x3 ┃ ┃ TA-in ┃
┡━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━╇━━━━━━━━┩
│ 3 1 2 │ 4 5 6 │ 2 3 8 │ 6 4 9 │ 5 8 6 │ 1 9 2 │ 9 4 2 │ 8 3 6 │ │ 8 1 3 │
│ 3 1 2 │ 4 5 6 │ 2 3 8 │ 6 4 9 │ 5 8 6 │ 1 9 2 │ 9 4 2 │ 8 3 6 │ │ 8 1 3 │
│ 3 1 2 │ 4 5 6 │ 2 3 8 │ 6 4 9 │ 5 8 6 │ 1 9 2 │ 9 4 2 │ 8 3 6 │ │ 8 1 3 │
└──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──────────┴───────────┴──┴────────┘
# 获取原始ARC格式的任务,遵循fchollet的仓库格式。
>>> task.to_dict()
=> {
"id": str,
"train": List[{"input": List[List[int]], "output": List[List[int]]}],
"test": List[{"input": List[List[int]], "output": List[List[int]]}]
}
为提交文件评分:
要评估Kaggle ARC格式的提交:
>>> eval_set.score_submission(
'submission.csv', # Kaggle格式的提交文件,包含output_id和output两列
topn=3, # 考虑的预测数量(默认:3)
return_correct=False # 是否返回已解决任务的列表
)
加载特定版本的数据集
ARC-AGI数据集自最初发布以来进行了几次小的错误修复。默认情况下,加载latest
版本,但你可以为load_data
和load_single
指定version
参数。版本选项包括:
latest
,arcagi
: ARC-AGI的最新版本(也固定为aa922be
)kaggle
,kaggle2024
: 2024年Kaggle竞赛的数据arc
,kaggle2019
: 原始ARC数据,与2019年Kaggle竞赛相同
🖼️ 创建可视化
arckit.vis
子模块提供了使用drawsvg
模块创建任务矢量图形可视化的有用函数。这些函数的文档字符串提供了更详细的信息以及额外的选项。
>>> import arckit.vis as vis
>>> grid = vis.draw_grid(task.train['2013d3e2'][0], xmax=3, ymax=3, padding=.5, label='Example')
>>> vis.output_drawing(grid, "images/grid_example.png") # svg/pdf/png
在绘制任务时,arckit会智能地调整所有网格的大小,使插图的总大小不超过所选的宽度/高度。
>>> task = vis.draw_task(train_set[0], width=10, height=6, label='Example')
>>> vis.output_drawing(grid, "images/arcshow_example.png") # svg/pdf/png
💻 命令行工具
arcshow
直接在控制台绘制特定任务的可视化:
arcsave
将特定任务的可视化保存到文件(pdf/svg/png),用于检查任务或生成显示特定任务的高质量图形(例如,用于论文)。可以通过十六进制ID或数据集指定任务,例如train0
。
用法:arcsave [-h] [--output OUTPUT] task_id width height
将任务保存为图像文件。
位置参数:
task_id 要保存的任务ID。可以是任务ID或字符串,例如`train0`
width 输出图像的宽度
height 输出图像的高度
可选参数:
-h, --help 显示此帮助消息并退出
--output OUTPUT 要保存的输出文件。必须以.svg/.pdf/.png结尾。默认使用pdf。
💡 贡献
欢迎任何相关贡献!请随时提出问题或拉取请求,或者如果您想讨论任何可能的更改,请给我发电子邮件。
📜 致谢
ARC数据集由Francois Chollet慷慨地在Apache 2.0许可下发布,原始格式可以在这个仓库中找到。该数据集在arckit
包中以相同的许可证复制。