five

Karel Dataset

收藏
github2024-01-05 更新2024-05-31 收录
下载链接:
https://github.com/carpedm20/karel-dataset
下载链接
链接失效反馈
官方服务:
资源简介:
Karel数据集用于程序合成和程序诱导,提供了一种用于教育编程语言的领域特定语言,并详细描述了数据集的结构和使用方法。

The Karel dataset is utilized for program synthesis and program induction, offering a domain-specific language for educational programming. It provides a detailed description of the dataset's structure and usage methods.
创建时间:
2017-12-13
原始信息汇总

Karel Dataset 概述

数据集描述

数据集使用

安装

  • 安装命令: pip install karel

数据生成

  • 生成命令:
    • 生成程序及其输入/输出示例: python generate.py --data_dir=data --max_depth=5 --parser_type=synthesis
    • 生成仅作为文本的程序: python generate.py --mode=text --beautify=True --parser_type=curly
  • 输出文件:
    • 数据文件: data/train.npz, data/test.npz, data/val.npz
    • 文本文件: data/train.txt, data/test.txt, data/val.txt

解释器

  • 运行命令:
    • 使用随机网格世界运行解释器: python -m karel.parser_with_curlypython -m karel.parser_for_synthesis
    • 使用特定世界文件运行解释器: python -m karel.parser_with_curly --world=assets/simple.world

作者

搜集汇总
数据集介绍
main_image_url
构建方式
Karel数据集的构建基于Karel编程语言,该语言专为教育目的设计,旨在通过简单的指令控制机器人在网格世界中的行为。数据集的生成过程通过Python脚本实现,支持两种解析器类型:一种使用花括号明确表示代码块范围,另一种专为程序合成任务设计。生成脚本能够自动生成训练、测试和验证数据集,并以NPZ或文本格式保存。此外,数据集还包含网格世界的状态表示,每个单元格由一个16维向量描述,涵盖了机器人朝向、墙壁存在以及标记物数量等信息。
特点
Karel数据集的特点在于其简洁且结构化的表示方式,能够有效支持程序合成和强化学习任务。数据集中的每个程序都通过Karel语言的特定语法进行编码,且网格世界的状态以高维张量的形式呈现,便于机器学习模型的输入处理。此外,数据集提供了多种生成模式,用户可以根据需求生成包含输入输出示例的NPZ文件或纯文本格式的程序代码。这种灵活性使得数据集能够广泛应用于不同的研究场景,如程序合成、代码生成和机器人控制等。
使用方法
使用Karel数据集时,用户首先需要通过pip安装karel包,随后利用提供的Python脚本生成所需数据。生成脚本支持多种参数配置,如最大程序深度和解析器类型,用户可根据具体任务需求进行调整。生成的数据集可直接用于训练机器学习模型,或通过Karel解释器进行实时调试和验证。解释器支持随机网格世界或指定世界文件的运行,用户可以通过交互式命令行界面输入程序并观察其执行结果。这种直观的使用方式使得Karel数据集成为程序合成和机器人控制研究的理想工具。
背景与挑战
背景概述
Karel数据集是基于Karel编程语言构建的,旨在支持程序合成和强化学习领域的研究。Karel作为一种教育性编程语言,广泛应用于计算机科学教学中,帮助初学者理解编程逻辑。该数据集由Taehoon Kim等人于2017年创建,并在相关论文《Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis》和《Neural Program Meta-Induction》中详细描述。其核心研究问题是通过语法规则和强化学习技术,实现神经网络的程序自动生成。Karel数据集的发布为程序合成领域提供了重要的实验数据,推动了该领域的研究进展。
当前挑战
Karel数据集在构建和应用过程中面临多重挑战。首先,程序合成领域的核心问题在于如何从有限的输入输出示例中生成正确的程序逻辑,这对模型的泛化能力和推理能力提出了极高要求。其次,数据集的构建过程中,如何准确表示Karel程序的状态空间并生成多样化的训练样本,是一个复杂的技术难题。此外,Karel语言的语法规则和语义约束需要精确建模,以确保生成的程序具有可执行性和正确性。这些挑战不仅考验了数据集的构建技术,也为后续的研究提供了重要的改进方向。
常用场景
经典使用场景
Karel数据集在程序合成领域具有重要应用,特别是在教育和研究环境中。该数据集通过模拟Karel编程语言的环境,生成一系列程序代码及其对应的输入输出示例,为研究者提供了一个标准化的测试平台。经典的使用场景包括利用这些数据进行神经程序合成算法的训练和验证,帮助研究者探索如何通过机器学习和强化学习技术自动生成有效的程序代码。
实际应用
在实际应用中,Karel数据集被广泛用于教育和培训场景。例如,在计算机科学课程中,教师可以利用该数据集设计编程练习,帮助学生理解基本的编程概念和算法。此外,该数据集还被用于开发智能编程助手,通过分析程序代码和输入输出对,自动生成代码片段或提供编程建议,从而提高开发效率。
衍生相关工作
Karel数据集衍生了许多经典的研究工作,特别是在神经程序合成和强化学习领域。例如,基于该数据集的研究提出了多种程序合成算法,如利用语法规则和强化学习技术进行程序生成的模型。此外,该数据集还激发了关于程序元归纳的研究,探索如何通过少量示例自动生成复杂的程序代码。这些工作不仅推动了程序合成技术的发展,还为其他相关领域提供了宝贵的参考。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作