社区
教程
Wiki
注册
登录
创作新主题
社区所有版块导航
Python
python开源
Django
Python
DjangoApp
pycharm
DATA
docker
Elasticsearch
分享
问与答
闲聊
招聘
翻译
创业
分享发现
分享创造
求职
区块链
支付之战
aigc
aigc
chatgpt
WEB开发
linux
MongoDB
Redis
DATABASE
NGINX
其他Web框架
web工具
zookeeper
tornado
NoSql
Bootstrap
js
peewee
Git
bottle
IE
MQ
Jquery
机器学习
机器学习算法
Python88.com
反馈
公告
社区推广
产品
短视频
印度
印度
一周十大热门主题
10年顽疾ChatGPT一眼识破!AlphaGo时刻震撼全球医疗界
多邻国联姻瑞幸;if椰子水母企IPO市值冲上100亿;阿里巴巴美国站推B2B先买后付 | TopDi...
Python到底要怎么学?这份6个月上岸攻略,已经帮800+小白成功转行
ChatGPT惨败Llama!MIT官宣AI开飞船0%失败率,马斯克火星殖民不再是梦
时代命题下的民营科技担当:从备份战略看Gitee的国家定位
ChatGPT诞生内幕大曝光!发布前一晚还在纠结
7月27日开考!人社部能建中心《生成式人工智能(AIGC)技术应用》职业培训
专访上海电气品牌公关总监张笛:从“人带人闯市场”到全球品牌,大国重器的出海进化论 | TopDigi...
Nginx和Apache要成旧爱了?PHP有了新搭档:缝合怪FrankenPHP!
#OpenAI近两年大事回顾##ChatGPT进化史#OpenA-20250703130735
关注
Py学习
»
机器学习算法
“AI+”学生项目分享 | 利用深度学习加速芯片设计
MATLAB
• 2 年前 • 593 次点击
实现自主可控的芯片设计已经成为我国社会和行业发展的热点,而伴随着对芯片功能性和稳定性与日俱增的要求,芯片设计也变得越来越复杂,如何快速和便捷地进行设计空间的探索也变得越来越具有挑战性!
今天我们有幸邀请到来自上海交通大学信息工程专业的卢凌峰和李江川两位同学,来分享他们在参与
MATLAB 学生创新项目(MathWorks Excellence in Innovation Projects)
时是如何利用深度学习来加速锁相环设计的。GitHub 上也有他们分享的代码和数据,可以下载哦:
https://github.com/lulf0020/Behavior-modeling-of-PLL
同时,如果是对芯片设计这个话题感兴趣,也可以参加我们 11 月 22/24 日晚上 7-8 点的
小迈步之 MATLAB助力芯片设计系列讲座
!
作为入门级讲座,我们会使用丰富的实际操作案例来介绍如何在各领域使用 MATLAB 与 Simulink 实现芯片设计应用,欢迎来听!
以下是他们的分享——
◆
◆
◆
◆
锁相环(Phase Lock Loop, PLL)被称为芯片的“心脏”!它利用外部晶振作为参考时钟,通过闭环控制输出一个稳定的更高频率的时钟,以供芯片的时序电路使用。心脏的正常跳动很大程度上决定着一个人能否健康地生活,而设计一个稳定的 PLL 则成为保障一个芯片能正常运行的重要前提!
2021 年,我们选修了杨宇红老师主讲的校企合作课程《工程实践与科技创新》,作为课程的一部分,我们需要在课程期间完成一个实践项目。
MathWorks 的学生创新项目
是由其在全球一线工程师们结合当前行业需求和最新技术发展趋势所确立的一些研究和实践课题,涉及 5G、大数据、工业 4.0、人工智能、自动驾驶、机器人、无人机、计算机视觉、可持续发展及可再生能源等各个领域。我们决定在其中选择一个项目并在 3 个月之内完成。
▼
为什么选择“基于深度学习技术进行锁相环行为级建模” 项目?
这个项目的实用性以及新颖性吸引了我们!对锁相环进行行为级建模,可以节省设计过程中的时间成本。具体来说,通过深度学习建立锁相环的行为级模型之后,我们可以输入器件参数直接得到锁相环的性能表现,而不需要经过冗长的仿真测试环节。
另外,在选择这个项目之前,我们曾经在学校的机器学习课程中接触过神经网络的基础知识,也曾在暑期实习过程中,对很多的神经网络进行了调研,并实战过利用 YOLO 算法来做目标识别。一定的知识储备使得我们更加有底气选择这个项目。
▼
在项目中遇到什么问题?是如何解决的?
数据集和模型是开展深度学习的两个关键因素。在这个项目中,我们遇到的两个主要问题包括数据集的收集和模型建立:
问题一:如何高效的收集数据集?
问题二:怎样建立有效的深度学习模型?
下面就给大家详细介绍一下我们是如何解决这两个问题的。
▼
问题一:如何高效的收集数据集?
在这个项目中,没有现成的数据集可供我们使用。项目开始前,MathWorks出题工程师 Pragati Tiwary 对于题目细节给我们做了深入地解释。他告诉我们 MATLAB 的混合信号工具箱(Mixed-Signal Blockset™)里所提供的N分频锁相环参考模型给我们提供了一种可以通过仿真来建立数据集的手段。
该模型(如下图示)包含了五个模块:鉴相器,电荷泵,环路滤波器,压控振荡器和分频器。我们需要做的是不断改变这五个模块的参数,看看会对锁相环输出信号的频率、锁定时间以及相位噪声产生什么样的影响。
图一 N 分频锁相环参考模型
混合信号工具箱除了提供参考模型,还提供了测试平台。
利用这个平台,我们可以便捷地对各种不同参数下的锁相环模型的输出信号进行监测,记录下所需要的输出结果。
项目初期,我们遇到的主要问题是数据集的收集效率低下。
为了获得一组数据,我们每次都需要手动更改模型各个模块的参数设置,再对进行一次仿真测试,最后需要手动记录测试平台的输出结果,十分费时。
这时,Pragati 给我们提供了耐心的指导,他告诉我们如何对锁相环模型进行批量的数据导入、仿真以及数据导出。
在他的帮助下,我们将 Simulink 与 MATLAB 配合使用,由 MATLAB 程序调整模型参数并控制 Simulink 模型进行批量的仿真和测试。
我们将模型中需要测试的参数设置为变量,这样就可以通过更改变量值的方式来更改仿真模型的参数值。
但是,我们随后发现一些涉及到模型结构的参数,比如环路滤波器的阶数,是无法简单地通过改变变量值的方式来进行修改的。
正当我们一筹莫展时,却惊喜地发现锁相环中通常所采用的二阶,三阶和四阶环路滤波器的电路形式具有相似性。
于是,我们统一采用了四阶环路滤波电路的模型,只是在设置参数时,通过将对应的电容、电阻设为0,来模拟
断
路和
短
路,以实现更低阶数的环路滤波器。
至此,我们实现了仿真模型参数的快速更改。
图二 二阶、三阶和四阶环路滤波器(从左到右)
对
输出结果,我们也希望能够像仿真模型的参数一样,实现通过程序自动记录。
但我们经过测试后发现,测试平台的最终输出结果无法导出,而只能导出中间结果。
于是我们只好自动导出中间结果,再根据相应输出结果的计算方法,通过中间结果求解出我们所需要的最终结果。
最终,我们建立起了 MATLAB 和 Simulink 配合仿真和测试的全流程
:通过生成在一定范围内的随机数,对仿真模型的参数值进行更改;使用MATLAB的控制指令进行模型的仿真和测试,Simulink会在仿真结束后将记录的中间结果回传到 MATLAB,最后根据回传的中间结果计算我们关注的输出结果并记录。在设定了程序执行的循环次数后,就能够实现无监管下的数据收集工作,在一定程度上提高了数据集的建立效率。
▼
问题二:怎样建立有效的深度学习模型?
深度学习一般被用于复杂信息的特征提取以及预测量的回归或拟合标定。
譬如在卷积神经网络模型设计中就包含较多的卷积层和池化层等用于图片特征信息的提取。
而在我们的项目中,实际需要的特征值大多已经在项目信息中给出。
通过实验,我们发现仅两层的前馈式神经网络就可以较好地实现对输入参数到输出参数映射关系的建模,于是我们采用了神经网络中结构较简单的前馈式神经网络。
MATLAB
提供了一个深度学习工具箱,你可以从零开始构建想要的神经网络模型,也可以在工具箱所提供的参考神经网络模型上进行修改。
该工具箱可以从 TensorFlow 和 Caffe 导入模型,并支持对 DarkNet-53、ResNet-50、NASNet、SqueezeNet 等较为热门的预训练模型进行迁移学习。
我们要给大家安利的是深度学习工具箱里所提供的 Neural Network Fitting APP。
这个APP提供了如下图所示的神经元节点数可选的两层前馈式神经网络。这个神经网络以经典的非线性激活函数sigmoid作为隐藏层神经元的激活函数,而在输出层则采用了线性的输出函数;以均方差值(MSE)作为训练指标,并且可以对训练的结果进行回归度分析。在这个 APP 的基础上,通过人为地对训练数据、测试数据以及训练完成的模型进行一些数据处理,就大致满足了我们的需求。
图三 Neural Network Fitting APP
不得不提的是,我们建立的模型一开始的拟合效果并不好,于是我们尝试了数据预处理、增加神经节点、调整各个数据集的比例等方式,最后得到了一个还不错的拟合效果。
在前馈式神经网络这一模型主体上,一个良好的数据预处理形式可以使得整体神经网络具有更好的拟合效果。
对于数量级相差较大的数据,我们使用对数函数辅助进行归一化,使得其数据分布尽可能实现均匀且有区分度,不会有过多的差异数据聚集在数据轴上的几个点附近而导致欠拟合或过拟合。
在模型训练过程中,数据集会被划分为训练集、测试集和验证集三个部分。其中,训练集和测试集会用于模型的训练过程,而验证集主要用于模型最终性能的评估。在训练过程中,我们注意到,仅仅保证训练集和测试集占总体数据集大小的比例是不够的,
测试集最好具有一定的绝对数量
,否则其反映出来的模型拟合程度可能无法反应出模型实际的拟合程度。在这个项目中,大约需要 >200 个样本的测试集才能保证其用于训练的模型拟合程度数据较为可靠,使模型训练进程能有效推进下去。
▼
结语:努力学习 + 勇敢尝试 = 成功
时光荏苒,现在我们一个已经在上海三菱电梯工作,一个正在备战考研,但这段跨时差跨语言的项目经历是很难忘的。
我们最大的收获不仅是通过项目实践巩固了所学的知识、体会到创新的重要性,还通过和 MathWorks 的工程师在线上用英语沟通和交流开阔了眼界和提高了胆量。
在此,非常感谢 MATLAB 学生创新项目给我们提供了实践的机会,感谢《工程实践与科技创新》课程的主讲老师杨宇红老师与 MathWorks 的 Pragati Tiwary 及许悦伊博士给我们提供的帮助和指导!
P.S.:
卢凌峰和李江川两位同学参加的 Behavior Modeling of PLL 是 MathWorks 为同学们提供的二百余个 MATLAB 学生创新项目(Excellence in Innovation Projects)项目之一。欲知项目详情,请见下方海报:
▼
最后,如果是对芯片设计这个话题感兴趣,也可以参加我们 11 月 22/24 日晚上 7-8 点的
小迈步之 MATLAB助力芯片设计系列讲座
!作为入门级讲座,我们会使用丰富的实际操作案例来介绍如何在各领域使用 MATLAB 与 Simulink 实现芯片设计应用,欢迎来听!
Python社区是高质量的Python/Django开发社区
本文地址:
http://www.python88.com/topic/149202
593 次点击
登录后回复