Facebook 正在开发 TransCoder,将代码从一种编程语言翻译成另一种编程语言

Facebook 工程师发布了一个转编译器 转码器,它使用机器学习技术将源代码从一种高级编程语言转换为另一种高级编程语言。 目前,支持在 Java、C++ 和 Python 之间转换代码。 例如,TransCoder 允许您将 Java 源代码转换为 Python 代码,以及将 Python 代码转换为 Java 源代码。 项目开发正在付诸实践 理论研究 创建一个神经网络以实现代码的高效自动转编译 传播 根据 Creative Commons Attribution-NonCommercial 4.0 许可证获得许可,仅供非商业用途。

机器学习系统的实现基于Pytorch。 提供两个现成的模型可供下载: 第一 用于将 C++ 翻译成 Java、Java 翻译成 C++、Java 翻译成 Python,以及 第二 用于广播
C++ 到 Python、Python 到 C++ 以及 Python 到 Java。 为了训练模型,我们使用了 GitHub 上发布的项目的源代码。 如果需要,可以为其他编程语言创建翻译模型。 为了检查广播质量,我们准备了一系列单元测试以及包含 852 个并行功能的测试套件。

据称,在转换准确性方面,TransCoder 明显优于使用基于转换规则的方法的商业翻译器,并且在工作过程中它可以让您无需源语言和目标语言专家的专家评估。 模型运行过程中出现的大部分错误都可以通过在解码器中添加简单的限制来消除,以确保生成的函数在语法上是正确的。

Facebook 正在开发 TransCoder,将代码从一种编程语言翻译成另一种编程语言

研究人员提出了一种用于建模序列的新神经网络架构“Transformer”,其中递归被替换为“注意“(带注意力的 seq2seq 模型),它允许您摆脱计算图中的一些依赖关系,并并行化以前不适合并行化的内容。 所有支持的语言都使用一个通用模型,该模型使用三个原则进行训练——初始化、语言建模和反向翻译。

Facebook 正在开发 TransCoder,将代码从一种编程语言翻译成另一种编程语言

来源: opennet.ru

添加评论