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

添加評論