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

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

3天内不再提示

关于模型设计开发过程中的正确模型的选择指导

MATLAB 来源:djl 作者:董淑成 2019-09-17 15:13 次阅读

在基于模型设计的开发过程中,一定要拿正确的模型去生成代码。

有人要问:什么样的模型才算得上正确的模型?

我认为:

至少,正确的模型应该是经过充分验证的。

除了“充分验证”,还应该满足什么条件呢?

我能想到的就是“可验证”。

“可验证”也是充分验证的前提。

关于模型设计开发过程中的正确模型的选择指导

模型的“可验证”以后会专门介绍,本文就说说模型中代码生成之前可以做哪些验证。按照模型是否需要运行来划分,可以把验证分为静态验证和动态验证两大类。

M静态验证

静态验证有评审、静态检查、形式化验证等方式。

评审是质量体系要求的

通常我们模型画完之后,需要通过评审的方式去评审模型是否实现了相应的需求。那么,评审发生的时刻应该如何把握?是否在画完模型之后紧跟着就去做评审呢?我个人认为,如果有工具可以帮我们实现静态检查,我们为什么不先做静态检查呢?先做静态检查的好处是把可以通过工具发现的软件缺陷在评审之前消除掉,这样可以避免在评审的时候在此类问题上浪费时间。

静态检查

目前MATLAB通过Simulink Verification & Validation(以下简称SLVnV)提供了Model Advisor,可以实现建模标准的静态检查,实现起来也不困难,并且工具还具有可定制功能,可以在SLVnV提供的诸多检查项里挑选适合自己开发团队的检查集,也有可能有一些检查是Model Advisor没有提供的,这种情况下,也可以通过编写MATLAB程序的方式定制检查项。

形式化验证

MATLAB提供了Simulink Design Verifier(以下简称SLDV)产品,可以对模型进行形式化验证。SLDV可以检查模型中是否有整数溢出,或者是否有死逻辑。这两类错误都是很容易被评审和功能测试错过的错误,其实,软件里一旦发现有这两类错误,复现或者定位这两类错误都非常困难,而SLDV可以通过分析模型的给出发生或者可能发生错误的环节。另外,需要注意的是,在模型评审或者功能测试过程中,我们都可能发现一些软件缺陷,发现这些缺陷之后,我们需要修改模型,模型经过修改可能会再次引入数据溢出或者死逻辑之类的错误,所以建议做功能测试之后,再次使用SLDV检查一下模型。

M动态验证

动态验证主要有功能测试。功能测试可以分为单元级功能测试和集成级功能测试两个阶段。如果系统比较大,集成级功能测试还会继续划分为组件级集成测试和系统级集成测试。

单元级功能测试

也就是我们经常提到的单元测试,单元测试的测试用例需要用户根据需求编写,写完测试用例就是执行测试过程,测试过程的执行要尽量自动化。这个阶段的测试工作量非常大,通常花在单元测试上的时间会明显大于建模的时间,这往往是很多开发者难以接受的,很多人从心理上没有这个准备,一般认为模型画完就接近大功告成,所以不会计划很多时间在模型测试上,这个想法是非常危险的。当然,这个阶段的测试是否完善可以通过“测试覆盖率”这个数据来把握。覆盖率没有达到预定的目标就要继续增加测试用例。

测试覆盖率应该从两个层面去度量:

一需求覆盖率,测试用例所覆盖的需求比例;

一结构覆盖率,测试用例所覆盖的软件实现的分支。

对于工具,Simulink只能从结构上度量哪些分支测过哪些分支没测过,需求覆盖率通常需要测试者自己去把握。对于结构覆盖率,我们有条件覆盖(Condition Coverage)、判定覆盖(Decision Coverage)、MC/DC覆盖等。

集成级功能测试

集成测试的目的和单元测试是不同的,集成测试要求做单元测试结束之后才可以进行。集成测试主要测试不同单元模块之间从接口上、调度上是否有问题,有时候集成测试也可以发现不同单元模块之间需求上的冲突。集成测试不会有结构覆盖率要求。

集成测试的实现方式有模型上的集成测试,也可能会结合硬件进行测试,比如我们经常提到的快速原型,是否要结合硬件要取决于是否有条件和是否有必要这样做,这里不做展开。

到此,如果模型经过了各种静态验证,再经过足够的动态验证,我们可以认为模型已经正确了吧?

接下来,就可以对正确的模型进行代码生成工作了。

当然,上述验证活动都是建立在“模型可验证”的基础上的,模型的“可验证”如何去把握,这我们后面再专门讨论。

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

    关注

    1

    文章

    290

    浏览量

    19604
  • 静态验证
    +关注

    关注

    0

    文章

    6

    浏览量

    5982
收藏 人收藏

    评论

    相关推荐

    大语言模型如何开发

    大语言模型开发是一个复杂且细致的过程,涵盖了数据准备、模型架构设计、训练、微调和部署等多个阶段。以下是对大语言模型
    的头像 发表于 11-04 10:14 79次阅读

    Meta推出可自我评估AI模型

    Meta近期宣布了一项重要的人工智能进展,即将发布一系列全新的人工智能模型。其中,一款能够自我评估的模型尤为引人注目,这一创新有望显著减少人工智能开发过程中的人类参与。
    的头像 发表于 10-22 17:07 278次阅读

    【实操文档】在智能硬件的大模型语音交互流程接入RAG知识库

    就不讲太多了,这里实操用CSK6大模型开发板接入自建的空调产品手册知识库演示接入过程,只要对照文档步骤就可以完成操作。操作过程中遇到问题,也可以参考后半部分的排错流程来定位和解决问题。
    发表于 09-29 17:12

    NVIDIA助力提供多样、灵活的模型选择

    在本案例,Dify 以模型中立以及开源生态的优势,为广大 AI 创新者提供丰富的模型选择。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服务器
    的头像 发表于 09-09 09:19 434次阅读

    PyTorch神经网络模型构建过程

    PyTorch,作为一个广泛使用的开源深度学习库,提供了丰富的工具和模块,帮助开发者构建、训练和部署神经网络模型。在神经网络模型,输出层是尤为关键的部分,它负责将
    的头像 发表于 07-10 14:57 437次阅读

    模型单卡的正确使用步骤

    引言 在当今科技飞速发展的时代,大模型单卡作为一种高效的数据处理工具,广泛应用于各个领域。然而,正确使用大模型单卡对于提高工作效率、保证数据安全等方面至关重要。本文将从大模型单卡的工作
    的头像 发表于 07-05 14:32 540次阅读

    深度学习模型训练过程详解

    详细介绍深度学习模型训练的全过程,包括数据预处理、模型构建、损失函数定义、优化算法选择、训练过程以及模型
    的头像 发表于 07-01 16:13 1070次阅读

    鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 module的切换

    从FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件module标签下,具体差异见下列表格。
    的头像 发表于 06-27 14:16 396次阅读
    鸿蒙<b class='flag-5'>开发</b>Ability Kit程序框架服务:FA<b class='flag-5'>模型</b>切换Stage<b class='flag-5'>模型</b><b class='flag-5'>指导</b> module的切换

    微软、谷歌等科技巨头承诺安全开发AI模型

    近日,微软、谷歌、OpenAI等16家科技巨头在“人工智能(AI)首尔峰会”上达成共识,承诺在AI模型开发过程中注重安全性,并在无法控制最极端风险时关闭其尖端系统。
    的头像 发表于 05-22 11:25 478次阅读

    【大语言模型:原理与工程实践】大语言模型的应用

    的提示词设计。当人类运用“系统2”决策时,他们会在思考、观察和行动之间灵活切换。他们了解自己的局限,并知道如何利用工具获取所需信息,进而指导推理过程。此外,人类还具有反思的能力,能够修正和优化决策
    发表于 05-07 17:21

    【大语言模型:原理与工程实践】大语言模型的评测

    和优化至关重要,它们能够提供准确的反馈,指导模型在训练和调优过程中的改进方向。 大语言模型对话能力评测:对话能力评测是大语言模型性能评估的
    发表于 05-07 17:12

    【大语言模型:原理与工程实践】探索《大语言模型原理与工程实践》

    处理预训练架构Transformer,以及这些技术在现实世界的如何应用。通过具体案例的分析,作者展示了大语言模型在解决实际问题中的强大能力,同时也指出了当前技术面临的挑战和局限性。书中对大语言
    发表于 04-30 15:35

    FPGA开发过程中配置全局时钟需要注意哪些问题

    正确性和稳定性。通过仿真可以检查时序是否满足要求,及时发现和解决问题。 综上所述,配置全局时钟是FPGA开发过程中的一个重要环节,需要仔细考虑和规划。通过选择合适的时钟源、优化时钟分配、减小时钟歪斜、使用时钟管理单元以及进行仿
    发表于 04-28 09:43

    OpenVINO™协同Semantic Kernel:优化大模型应用性能新路径

    作为主要面向 RAG 任务方向的框架,Semantic Kernel 可以简化大模型应用开发过程,而在 RAG 任务中最常用的深度学习模型就是 Embedding 和 Text completion,分别实现文本的语义向量化和文
    的头像 发表于 03-08 10:41 625次阅读
    OpenVINO™协同Semantic Kernel:优化大<b class='flag-5'>模型</b>应用性能新路径

    ASIC芯片开发过程

    电子发烧友网站提供《ASIC芯片开发过程.ppt》资料免费下载
    发表于 12-25 10:04 1次下载