0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习脑补缺失 TF 代码

5RJg_mcuworld 来源:YXQ 2019-08-06 11:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在项目开发中,优秀的代码自动补全工具可以提升工作效率。然而,近来的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳。

近日,有开源项目用深度学习模型进行代码补全,显示出非常有潜力的效果。

近日,Reddit 上的一篇帖子引起了网友的热议。帖子作者「mlvpj」称:

「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全。」

根据介绍,该项目基于 LSTM 模型,训练后,负责对代码的缺失部分进行补全。评价模型的方法是判断节省了多少的按键信息——即模型给出长度为 L 的代码建议,如果和真实的代码匹配,则节省 L - 1 个键入操作。实验结果说明,大约有 30%-50% 的键入成本可以节省下来。

作者在帖子中表示,他们接下来会尝试不同的架构,并提高推断的表现。而现在的模型推断很慢,不能实际使用。作者已在 GitHub 开源了项目代码:

和 IDE 的自动补全有什么区别

该项目对 Python 代码的自动补全与传统 IDE(如 PyCharm)等不同。IDE 补全基于检索方法,需要从已有代码中进行搜索。

以 PyCharm 中的基本补全(Basic Completion)方法为例。基本补全可帮助补全可见区域的类、方法、关键词代码。使用时,PyCharm 会分析补全使用情况,并提供当前位置可能的选择。如果是对空间、参数或变量声明进行补全,则 PyCharm 会基于类别提供一系列可能的命名。

当出现已定义的类、函数、模块和变量时,基本补全就会启动。

此外,PyCharm 也提供智能补全等其他补全功能,但基本上都需要对已有文本进行搜索,根据位置和类型判断补全的方法。这些方法都没有配置机器学习模型。

Pycharm 的自动补全介绍:https://www.jetbrains.com/help/pycharm/auto-completing-code.html

深度学习怎样脑补缺失 TF 代码

最常用的 PyCharm 自动补全也能省很多功夫,但它需要 IDE 能检索到你的代码文件或库,而且补全会提供多个可能的选项。但是在本项目实验的工具中,LSTM 会根据上下文语义确定最可能调用的函数,因此它能节省更多的成本。作者表示如果使用束搜索,那么一次能预测 10 多个字符,不过这样对于实际使用还是有点低效。

在训练深度补全模型前,我们需要先建立训练集。开发者会在清洗评论、标注和空行后,构建比较干净的 Python 代码。然后,模型会在这些数据上进行训练与预测。在数据预处理上,开发者发现通过 tokenizing Python 代码,模型效果比通过 BPE 编码的字符级预测效果还要好。作者提供了一个简单的预训练模型,它是在整个 TensorFlow 项目的 models 代码中训练的。

下图就是作者在验证集中测试的验证样本。绿色的字符表示自动补全的起始位置,用户需要按下 Tab 键选择开始补全。绿色及后面高亮的灰色字符是自动补全的结果。

如上所示为验证样本中的自动补全效果。与代码生成类似,粗略看起来,似乎效果非常不错,但实际上会有很多不合理的地方。不过有意思的是,自动补全中所有字符串都只有一个占位操作,这也是非常合理的处理方法。

样本中自动补全的起始和结束位置都是随机的,也就是说代码可能补全到「tensorfl」就结束了,并不会补全完整的标识符「tensorflow」。这在实际场景中用处非常有限,因此作者将生成结束位置限制为终止 token 而修复问题。目前自动补全能完成多种 operator,且当我们增加束搜索的长度时,它完成的代码长度会更多。

整个模型的主体都是 LSTM,它在 TensorFlow 模型代码库训练后能捕捉非常丰富的 TensorFlow API。如下所示为自动补全模型的主体代码,基本上简单的一个 LSTM 就能搞定:

网友评价

项目开源后,有些网友对作者提出了质疑:

「我们已经有很多很好用的自动补全工具了,比如 kite(一个可以在 IDE 上使用的插件),为什么还要费心搞个机器学习模型?」

在讨论中,有人提出,一些无良的自动补全工具会悄悄上传代码到他们的服务器中,(而自行训练的深度学习模型不存在这个问题)。

也有人提出,其实不一定要用 LSTM 模型,隐马尔科夫模型在处理序列数据上效果也很好。

此外,也有网友建议使用 CuDNN 加速 LSTM 的推断过程。这样能大大提升推断速度,集成到 IDE 中也就有了可能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AI
    AI
    +关注

    关注

    89

    文章

    38091

    浏览量

    296601
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73148
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123907

原文标题:你是成熟的 AI 了,应该自己学会补全代码!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标准判定 精密
    的头像 发表于 11-27 10:19 54次阅读

    传感:无创机接口在神经康复领域的技术突破与临床实践

    11月11日,第四届南渡江智慧医疗与康复产业高峰论坛在海南省海口市召开。本届会议深度探讨了数字疗法、机接口和康复机器人的发展现状与机遇,旨在推动智慧医疗与康复及大健康产业的协同发展。   在“
    发表于 11-11 14:48 3774次阅读

    【「AI芯片:科技探索与AGI愿景」阅读体验】+神经形态计算、类芯片

    AI芯片不仅包括深度学细AI加速器,还有另外一个主要列别:类芯片。类芯片是模拟人脑神经网络架构的芯片。它结合微电子技术和新型神经形态器件,模仿人脑神经系统机选原理进行设计,实现类似人脑的超低
    发表于 09-17 16:43

    如何在机器视觉中部署深度学习神经网络

    图 1:基于深度学习的目标检测可定位已训练的目标类别,并通过矩形框(边界框)对其进行标识。 在讨论人工智能(AI)或深度学习时,经常会出现“神经网络”、“黑箱”、“标注”等术语。这些概
    的头像 发表于 09-10 17:38 693次阅读
    如何在机器视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b>神经网络

    深度学习对工业物联网有哪些帮助

    深度学习作为人工智能的核心分支,通过模拟人脑神经网络的层级结构,能够自动从海量工业数据中提取复杂特征,为工业物联网(IIoT)提供了从数据感知到智能决策的全链路升级能力。以下从技术赋能、场景突破
    的头像 发表于 08-20 14:56 759次阅读

    自动驾驶中Transformer大模型会取代深度学习吗?

    [首发于智驾最前沿微信公众号]近年来,随着ChatGPT、Claude、文心一言等大语言模型在生成文本、对话交互等领域的惊艳表现,“Transformer架构是否正在取代传统深度学习”这一话题一直被
    的头像 发表于 08-13 09:15 3917次阅读
    自动驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?

    电基础系列之电电极的分类与技术对比

    电电极的概述脑电图(Electroencephalogram,EEG)是通过记录大脑皮层神经元电活动来反映功能状态的重要技术手段,广泛应用于临床诊断、神经科学研究及机接口等领域。
    的头像 发表于 03-13 10:27 3195次阅读
    <b class='flag-5'>脑</b>电基础系列之<b class='flag-5'>脑</b>电电极的分类与技术对比

    如何排除深度学习工作台上量化OpenVINO™的特定层?

    无法确定如何排除要在深度学习工作台上量化OpenVINO™特定层
    发表于 03-06 07:31

    灵汐科技开源类深度学习应用开发平台BIDL

    富案例等问题,一直制约着其广泛应用。为了突破这一瓶颈,灵汐科技联合启社区正式宣布开源类深度学习应用开发平台BIDL(Brain-inspired Deep Learning)。
    的头像 发表于 03-05 09:13 1482次阅读
    灵汐科技开源类<b class='flag-5'>脑</b><b class='flag-5'>深度</b><b class='flag-5'>学习</b>应用开发平台BIDL

    军事应用中深度学习的挑战与机遇

    人工智能尤其是深度学习技术的最新进展,加速了不同应用领域的创新与发展。深度学习技术的发展深刻影响了军事发展趋势,导致战争形式和模式发生重大变化。本文将概述
    的头像 发表于 02-14 11:15 818次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural Network
    的头像 发表于 02-12 15:15 1340次阅读

    面向高频逻辑运算的锂离子电容二极管

    离子电子耦合逻辑运算被认为是实现深度计算的可行途径之一,然而高频离子电子耦合器件的缺失大大限制了这一领域的快速发展。
    的头像 发表于 01-20 14:43 861次阅读
    面向高频逻辑运算的锂离子电容二极管

    tf卡与云存储的比较 tf卡的兼容性问题

    TF卡(通常指Micro SD卡)与云存储在数据存储领域各有其特点和优势,同时也存在一些差异。以下是两者之间的比较,以及关于TF卡兼容性问题的分析: 一、TF卡与云存储的比较 数据存储方式 :
    的头像 发表于 12-19 15:24 4310次阅读

    tf卡存储容量选择 tf卡的常见故障及解决方法

    TF卡存储容量选择 TF卡(TransFlash卡)是一种小型的存储卡,广泛应用于手机、相机、平板电脑等便携式设备中。选择合适的TF卡存储容量,需要考虑以下几个因素: 设备兼容性 :首先,需要确认你
    的头像 发表于 12-19 15:20 4314次阅读

    ADS1282HI出现数据缺失是什么原因导致的?

    不同:39TG4A3TF),使用完全相同的程序和板卡,出现数据缺失的情况,波形如下: 明显发现第一个字节丢失。前八个SCLK时DOUT上没有任何输出,是产品批次不同导致的情况还是新进的芯片有问题,希望能有您这边的答复,谢谢
    发表于 12-16 07:03