首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种使用Docker容器构建深度学习缺陷数据集的方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:天津大学

摘要:本发明涉及一种使用Docker容器构建深度学习缺陷数据集的方法,本发明构建了数据集gDefects4dl,这是一个深度学习应用的缺陷数据集,旨在帮助开发人员更好的了解深度学习应用中的缺陷以及评估他人开发的深度学习缺陷定位与缺陷修复技术的有效性。

主权项:1.一种使用Docker容器构建深度学习缺陷数据集的方法,其特征在于:所述方法的步骤为:1commit追踪和筛选issue与commit之间是多对多的关系,为了获取真实的修复需要追踪筛选与该issue相关的全部commit,若只有一个commit对应这个issue,就认为这个commit是针对这个issue的修复;若存在多个commit与这个issue相对应,则人为鉴别哪个commit是真实的修复;2测试用例构建与增强一旦确定了修复该issue的commit,接下来便需要手动构建一个测试用例,这个测试用例在commit这个版本中可以通过,在commit之前的那个版本中出现异常;定义commit之前的那个版本为c-l,commit版本为c;根据c与c-l两个不同的commit,使用Git创建两个不同的分支,c-1所在的分支称为buggy分支,c所在的分支称为fix分支,并为每个分支添加测试用例;对于buggy版本测试用例报错的情况,在测试用例中增加traceback模块,Python的traceback模块提供一个标准接口来提取、格式化和打印Python程序的堆栈跟踪;对于buggy版本测试用例不报错的情况,对测试用例增加assert来区分buggy版本与fix版本,Python断言用于判断一个表达式,在表达式条件为false时会触发异常,断言可以在条件不满足程序运行的情况下直接返回错误,而不必等到程序运行后出现崩溃才报错;对于fix版本的测试用例,为了更直观地显示其与buggy版本的区别,对于每个缺陷的fix版本测试用例,最后都会附加输出一条“success”信息;3环境隔离通常情况下,每个缺陷的运行环境是不同的,有些缺陷只能在特定环境下被复现,因此,在对测试用例增强之后,需要进行环境隔离,Conda版本:在这个版本中,为每个缺陷构建了一个文件夹,其中提供了创建Conda环境、下载数据集和依赖库以及执行测试用例的脚本,当用户想要复现某个缺陷时,只需运行该脚本即可;Docker版本:在这个版本中,为每个缺陷构建了一个单独的Docker镜像,镜像中预装了缺陷的所有必备环境,用户可以在Docker中复现该缺陷,容器启动后,容器的内部文件项目存储在home目录下的metadata文件夹下,运行测试用例的shell脚本则存储在script目录下;4元信息提取与扩充缺陷元信息提供了该缺陷的基础信息,通过元信息用户可以方便地获取该缺陷的相关信息,因此为每个缺陷附加了元信息,以“库名+issue编号”命名的缺陷名、人为定义的缺陷类型、异常信息、issue的URL、commit的URL、缺陷描述、支持度以及这个缺陷可以被泛化的原因,支持度表明数据集中有多少缺陷与该缺陷具有相似或相同错误原因与修复模式;支持度可以间接或直接的反应某一类缺陷的泛化能力;同时,为每个缺陷定义了定位难度与修复难度两个修复指标以及一个修复操作符,定位难度指的是运行buggy版本测试用例产生异常的代码位置与修复的代码位置之间的距离;若异常信息指向位置所在的文件与修改位置所在的文件不同,需要获取文件的树形目录结构,通过找寻两个文件的最近公共祖先LowestCommonAncestor,LCA,取两个文件到最近公共祖先的最小值作为定位难度,求最近公共祖先的算法采用的是Tarjan算法;若异常信息指向位置所在的文件与修改位置所在的文件相同,定位难度lscore的计算方法如公式4-1所示,其中line是异常代码行号与修复代码行号的差值: 修复难度主要由修改的字符串行数和修改的字符串长度决定,修复难度rscore的计算方法如公式4-2所示, 其中:clines是修改的字符串行数;slength是修改的字符串长度;修复操作符是指这个修复需要多少步操作才可以完成,若只需修改一步,操作符的值就为1;5工具集成构建深度学习应用的缺陷数据集gDefects4dl目的是为深度学习缺陷定位与缺陷修复技术的研究提供一个基准数据集,为使数据集gDefects4dl具有更广泛的用途,gDefects4dl提供了一些可扩展接口,并集成了三个缺陷定位工具ShapeFlow、DEBAR、GRIST来支持对数据集中缺陷的评估,每一个缺陷的Docker镜像都集成了这三个工具,Conda环境的脚本也会自动下载这些缺陷定位工具;ShapeFlow是TensorFlow的一个动态抽象解释器,可以快速捕获张量形状不匹配错误;ShapeFlow与TensorFlow共享相同的API,但是只捕获和识别张量的形状,ShapeFlow构造自定义形状计算图,类似于TensorFlow使用的计算图;ShapeFlow不需要程序员进行代码注释或代码修改;DEBAR是一种基于抽象解释的静态分析方法,被用来检测神经网络体系结构中的数值错误,包含两种抽象技术,一种适用于张量,一种适用于数值;GRIST是一种通过梯度反向传播暴露深度学习中数值错误的方法,采用动态技术,自动生成一个可以暴露深度学习程序中数值错误的小输入,利用深度学习的内置梯度计算功能来识别数值错误。

全文数据:

权利要求:

百度查询: 天津大学 一种使用Docker容器构建深度学习缺陷数据集的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术