怎么打断很长的VBA语句

VBA:自动化跨工作簿复制粘贴及排序 从一个工作簿各个子表中复制数据粘贴到另一个工作簿指定位置中,并对指定列进行排序,这个是我们在日常工作中经常做的,如何减少繁琐的工作步骤,提高效率,一键完成上面的工作。下面介绍通过VBA,如何自动化跨工作簿复制粘贴及排序。 图一 图二 将图一工作簿中三个子表含有公式的数据,复制粘贴数值到图二的表1,并进行排序,可以直接点击图二中执行的控件即可完成;以下是VBA脚本的实现。 Sub scopy2() ' ' 复制粘贴及排序 ' #复制粘贴 Application.ScreenUp... 阅读详情

尽管一行VBA代码最多可以包含1024个字母,但是,为了使你个过程容易阅读,最好将长的语句打断为两行甚至多行。VB使用一个专门的连续线(下划线)置于一行代码的末尾,表明下一行是这行的连续。例如:

Selection.PasteSpecial _ 
             Paste:=xlValues, _ 
             Operation:=xlMultiply, _ 
             SkipBlanks: =False, _ 

             Transpose:=False

这个连续符是下划线,你必须在下划线之后带一个空格。 

你可以在下述几种情况中使用连续符:

1、运算符之前或者之后。例如:&,+,Like,NOT,AND

2、逗号之前或者之后

3、冒号和等号(:=)之前或者之后

 

4、等号之前或者之后

你不可以在冒号和等于号之间使用连续符,例如,下面的代码VB是不认的:

Selection.PasteSpecial Paste: _ 
             =xlValues, Operation: _ 
             =xlMultiply, SkipBlanks: _ 
             =False, Transpose: _ 
             =False Selection.PasteSpecial Paste: _ 
             =xlValues, Operation: _ 
             =xlMultiply, SkipBlanks: _ 
             =False, Transpose: _ 

             =False

同样,在引号之内的文本之间加连续符也是不对的,例如,下面的下划线的使用是无效的:

MsgBox "To continue the long instruction, use the _ 

            line continuation character."

上面的指令应该打断为如下代码:

MsgBox "To continue the long instruction, use the " & _ 

             "line continuation character."

了解VBA错误

在编写或编辑VBA过程之中,无论你多么小心,出错的可能性还是很大的。例如,你可以错误拼写
一语句,放错了一个逗号或引号,或者忘记了一个句号或右括号。这些类型的错误称为句法错误。
幸运的是,VB比较容易帮助你发现这种类型的错误。为了让VB在你输入一行代码后,自动帮你检测
语法的正确性,你需要在VB窗口的“工具”-“选项”里,确保勾选了“编辑器”页上的“自动语
法检测”。

图2-7 选项对话框的编辑器上的“自动语法检测”帮你检查VBA过程里的打字错误 

 

图2-8 这个错误由于漏掉了常数xlCellType前面的括号而产生 

 

图2-9 当VB试图在工作表或单元格区域里选择一个并不存在的单元格时,就会产生一个运行时间 
错误 

查找语法错误可能是烦人的并且费时的事情。有些语法错误只有在过程运行的时候才能被发现。在试图运行你的过程的时候,VB可能找到那种因为使用了无效的自变量,或者是漏掉了那些需要成对使用的指令如If语句和循环结构,而造成的错误。


技巧:程序调试 
你很可能不只一次听过“计算机程序里充满了错误”。在编程里,错误就被称为“bug”(错误,漏洞),而“调试”(debug)则是给你的程序除错的过程。调试的第一步就是改正所有的语法错误。 
 

VB提供了无数种工具,你可以使用它们来追踪和消除错误。在本章中,你将知道如何使用VB助手帮助你在编写程序时出现尽可能少的错误;在第十三章中,你将学习如何使用专门的调试工具来捕获你VBA程序里的错误。


除了语法错误外,还有其它两种错误:运行时间和逻辑。运行时间错误发生在过程运行的时候。图2-9显示了一种典型的运行时间错误。运行时间错误经常发生在那些程序员在编写代码的时候没有想到的情况。例如,当程序试图访问一个用户电脑上并不存在的驱动器或者文件,或者没有首先检查是否用户插入软盘并关闭软驱口而试图复制一个文件到软盘,这时就会发生运行时间错误。


第三种错误——逻辑错误,通常不会发出明确的错误信息。过程可能没有语法错误,甚至运行无误,然而,得到的却是错误的结果。逻辑错误通常非常难以查找,并且它藏得很隐秘,间歇发生,你不能指望花几个小时,甚至几天,就能找到错误源。 

查找帮助

当你使用宏录制器时,你所有的操作都被翻译成VBA指令,并且放置在一个模块里。你在研究这些录制的过程时,不要忘记帮助随时可用。你会发现有些代码的意思可能会非常易懂,然而,有些却不怎么明白。这时候,你就需要寻求帮助了。当你独自工作时,只要轻轻一点或者轻轻一按就可以请教你的VBA老师了。使用VB在线帮助比使用词典或参考手册要快捷和容易得多。如果你讨厌一页一页地在词典里找你需要的术语,你将惊讶于你如何快地从VB代码窗口找到需要的帮助页面。


让我们来检查你如何通过内置的VBA老师的帮助,将WhatsInACell过程里的第一句变成你自己的VBA词汇:


Selection.SpecialCells(xlCellTypeConstants, 2).Select


上面的指令可以打断为三部分,哪些部分?Selection是对象还是属性?SpecialCells是什么?


Select是什么?要回答这些问题,请依照下面的操作:


1.  激活你要分析的过程的代码窗口


2.  点击你不懂的词语


3.  按下F1 

 

图2-10 VBA的对象,属性和方法在在线帮助里解释得很详细 

帮助就会显示相应的页面。如果你的光标放在词语“Selection”中间,你就会知道Selection可以是一个应用程序的属性,也可以是一个窗口对象。如果你的光标在下一个不明白的术语(SpecialCells)并且按上面的步骤再做一遍后,你将看到SpecialCells帮助屏幕(参见图2-10)。


注意,每个帮助主题包含许多信息。被查找的指令类型显示在帮助窗口的上面;指令的类型允许词语分类。例如,SpecialCells是方法,可以使用这个方法的对象名称列在“应用于”下面(点击“应用于”,出现对象名称列表)。指令名称下面的“参阅”和“示例”让你快速地跳到其它应用或意义相似的指令,以及查看使用这个指令的例子。指令的意义显示在“参阅”和“示例”标题的下面。接下来则是语法和需要的自变量和其它参数。“说明”部分给出一些推荐使用该指令的情 
形。


你可以很容易地将示例中的代码复制到你的过程中去:选中你要复制的代码行,按下Ctrl+C,或者单击右键,选择快捷菜单上的“复制”,然后切换到VB代码窗口,点击你需要粘贴代码的地方,再按下Ctrl+V或者选择“编辑”-“粘贴”。 

在Excel中应用VBA批量导入数据 在Excel中应用VBA批量导入数据  马维峰 1.       问题由来当一个漂亮MM向你请教如何录制并修改一个宏,把她每次的实验数据(几十个数据文件)导入Excel时,你感慨道:“很多Excel专家会录制一个宏来解决问题,然后每次使用的时候修改代码并粘贴到需要的地方,对于一个合格的程序员,这是最要命的事情。” 漂亮MM打断并告诉你,她不是程序员,也不想做程序员,然后 阅读详情

相关推荐

VBA脚本实战:自动模拟鼠标动作防止Windows锁屏

本文详细介绍了如何使用VBA脚本调用Windows API,通过模拟鼠标点击或移动等微小动作,实现自动防止Windows系统锁屏的实用技巧。文章提供了从原理讲解、代码编写到高级定制的完整教程,特别适合在办公权限受限、无法修改系统设置时,保持屏幕常亮以提升工作效率。

weixin_29021195的博客 428

VBA单行代码过长如何换行

VBA中的代码换行符是 `空格`+`_`

LZJ1995的博客 6452

AI编程工具WorkBuddy:用自然语言与语音生成Excel VBA宏

自然语言处理与生成式AI正在改变编程方式,使非技术人员也能通过对话描述需求自动生成代码。在办公自动化场景中,Excel宏和VBA编程曾是效率瓶颈,而AI辅助工具将需求翻译为可运行代码,大幅降低学习门槛。通过语音或文字描述如“统计考勤迟到次数”,即可生成对应的VBA宏,用于数据清洗、报表汇总等任务。本文以考勤统计为例,介绍环境配置、自然语言需求描述、代码生成与验证,并探讨批量处理与工程化使用,帮助办公人员与开发者理解AI编程的实际价值。

weixin_34110749的博客 452

vb sql 语句太长的处理方法

1、strSql.AppendLine("”) Imports System.Text Dim strSql As StringBuilder = New StringBuilder("") strSql.AppendLine(" SELECT PartBin.PartNum 物料,T1.PartDescription 物料描述,PartBin.WarehouseCode 仓库,Ware...

AStar的博客 3541

PPT长图滚动查看:利用ActiveX控件实现嵌入式交互展示

在演示文稿设计中,交互式内容展示是提升信息传达效率的关键技术之一。其核心原理在于通过控件嵌入,将动态浏览功能集成到静态幻灯片中,从而突破页面尺寸限制。从技术价值看,这种方法无需复杂编程,即可在PPT内部实现类似网页的滚动交互,显著增强了演示的连贯性与专业性。在应用场景上,特别适用于展示纵向业务流程图、系统架构图、数据仪表盘等超长图像内容。本文聚焦于利用PPT的‘开发工具’选项卡和ActiveX控件,具体演示如何通过文本框控件属性设置,为长图添加原生滚动条,有效解决了传统分页或弹窗展示带来的体验割裂问题,是工

weixin_33912246的博客 335

Excel四级联动下拉菜单:数据验证与OFFSET+MATCH实战详解

在数据处理与表单设计中,动态下拉菜单是提升数据录入效率和准确性的关键技术。其核心原理在于通过数据验证功能限制输入范围,并结合函数动态生成选项列表。OFFSET函数能够根据条件偏移并返回指定区域,而MATCH函数则用于精确定位,二者组合可实现选项的级联筛选。这项技术的工程价值在于从源头规范数据结构,避免人工输入错误,为后续的数据透视、BI分析奠定基础。典型应用场景包括行政区划选择、产品分类录入、组织架构管理等层级数据管理。本文以Excel省市县乡四级联动为例,深入剖析了利用数据验证、名称管理器及OFFSET+

weixin_34413103的博客 331

VBA 一条语句分多行和多条语句并在同一行

如标题所述,这正好是两个相反的需求。当我们在 VBE(Visual Basic Editor) 中编码的时候,有时候会碰到特别长的一条语句,一个屏幕显示不下来,要不停的拉滚动条来看完整条语句,特别不方便。这时我们就需要把这样的长语句分成好几行来写。在 VBA 里(VB 也是一样),空格加下划线 ( _) 在语法上表示继续一行代码。我们可以在一个比较自然的地方结束一行,比如逗号后面;然后加上空格

唐诗宋词的专栏 2万+

MSC8112 DSP中断编程实战:三级控制器架构与核间通信详解

中断机制是嵌入式实时系统的核心技术,它允许处理器响应外部事件,实现异步处理与快速响应。其工作原理基于硬件信号触发,通过中断控制器进行优先级仲裁与向量化,最终引导CPU执行特定的服务程序。这项技术的核心价值在于提升系统实时性与资源利用率,广泛应用于通信处理、工业控制等领域。在复杂的多核DSP系统中,如NXP MSC8112,中断管理通常采用分级架构(如GIC、LIC、PIC)以实现高效的中断分发与处理。本文将深入解析此类系统的中断编程模型,重点探讨虚拟中断机制在核间通信中的应用,并提供中断服务程序编写与状态清

a6t2007的博客 475

语句太长,一行写不下如何续行再写(不是字符串)!

 C#中的行继续符号是什么?例如Vb中一行太长,可以用下划线(_)来进行行继续,C#中是什么符号?C#不用换行符,直接换行即可。只有当C#检查到有;时才认为该行结束C语系语法中回车/换行符没有任何特殊的意义,就是一个普通的空白字符而已,所以不用续行。一直看到;才认为语句结束。strAddedOrgId = org.AddNewOrg(TreeView1.SelectedValue,

路航(Luhang)网盘 7107

单细胞分析R包monocle3服务器安装教程

由于centos7系统yum只能安装到低版本gdal,而monocle3依赖包需要 gdal>2 版本,从gdal官网下载2.4.4版本编译安装。monocle3的安装是通过cole-trapnell-lab安装的,该包挂在github上,需要通过github先安装leidenbase包,需要提前安装devtools包下载工具。接着利用BiocManager安装相应的依赖包,由于这些包的特殊性,所以不要切换到国内Bio_Mirror镜像,否则会找不到,如果一次不成功,缺啥补啥即可。运行 ldconfig。

qq_36608036的博客 1万+

数据结构与算法 —— 最短路径Dijkstra算法(迪杰斯特拉)详细图解以及python实现

前两章我们讲到了关于图的基本知识,和广度/深度优先搜索。本章,我们将介绍加权图和最短路径的相关知识。最短路径和最小生成树是图论中常见的问题。最短路径是指在一个图中找到两个节点之间的最短路径,最小生成树是指在一个图中找到一个连通子图,使得所有节点都能够互相到达,且总权值最小。最短路径算法常见的有floyd算法(弗洛伊德算法)和 dijkstra算法(迪杰斯特拉)。本文只介绍dijkstra算法。最短路径运用非常广泛,比如在导航系统中,确定两个地点间哪条路线最短;

‘’ 2万+

Excel VBA基础教程

https://www.w3cschool.cn/excelvba/excelvba-basics.html Excel VBA语言基础 VBA语言的基础认识 详解VBA编程是什么 excel处理录制的宏 Excel中控件的常规使用方法 VBA的变量含义和变量作用 用VBA设置工作表使用权限的步骤 教你...

weixin_30662849的博客 174

Autodesk全家桶安装总报错1603?一个服务设置搞定3dsMax和CAD安装回滚问题

本文详细解析了Autodesk全家桶安装过程中常见的1603错误,特别是3ds Max和CAD安装回滚问题。通过调整AdskLicensingService服务的账户权限,提供四步修复法和安装流程优化策略,帮助用户彻底解决安装难题,提升Autodesk软件的安装成功率。

weixin_30955617的博客 1122

Access开发右下角浮窗提醒

本文介绍在Access中创建桌面右下角滑入通知的实现方法。通过窗体加载事件触发动画效果,从屏幕底部向上滑动显示,停留3秒后渐隐关闭。

398

Polyworks宏脚本开发入门:5分钟搞定环境搭建与基础命令录制

本文详细介绍了Polyworks宏脚本开发的入门指南,包括环境搭建、基础命令录制和核心对象操作。通过5分钟快速启动开发模式,掌握自动化操作流程和脚本调试技巧,帮助工程师高效完成工业测量与三维检测任务。

weixin_29306875的博客 536

国产NAS哪家强?极空间&绿联&威联通&群晖对比

随着个人数据量暴增,传统网盘空间不足和下载速度慢问题愈发凸显。新势力NAS,作为数据管理领域的璀璨新星,正以其独特的互联网设计理念,引领家庭及小型办公用户向数据存储的新纪元。它不仅仅是一款产品,更是为初学者用户量身定制的贴心伙伴。其系统界面之简洁、操作流程之直观,让人一目了然,真正实现了“即插即用”的极致便捷。同时,新势力NAS在保持专业水准的同时,更提供了多样化的扩展性配置,轻松应对各种数据存储与管理需求,让家庭及小型办公场景下的数据管理变得前所未有的简单与高效。

专注大数据、云计算、人工智能、机器人领域技术传播 3647

ESD问题案例分析-智能手表为例

某智能手表在侧键附近打ESD后出现反复开关机现象 根据反复重启的时间判断,类似于长按Power键。检查Power_On信号,发现已经被持续拉低,Power_On信号的原理图如下: 为了降成本,位置1并没有贴TVS管,而是用一个电容代替,电容的耐压值是25V。失效的机器,这个电容已经短路,可以判断ESD进入壳体,直接打坏了位置1的电容。 如果把位置1的电容耐压提高到50V,能抗的ESD抢数量会增多,但最终还是会坏。这个项目不是防水的,密封性做的很差,所以才有问题。 解决方法 把位置1的电容换成TVS管,或者

ltqdxl的博客 1868

YOLOv11【第六章:模型压缩与极致优化篇·第4节】Lamp 剪枝算法:无需超参的自动化剪枝策略!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1211

如何解ESD问题?用几个实际案例带你一起分析

USB周围的有敏感信号,在打ESD时,附近的GND电平瞬间局部抬高,尤其是看到USB接口的屏蔽壳跟表层相连,周围没有非常多的过孔打到内层GND,这更加重了GND局部电平的提高,这会干扰到这些敏感信号,导致死机,黑屏,闪屏问题。电池BTB周围的信号有D+,D-,VBUS,MIPI,BAT_ID,BAT_THERM等,逐个在这些信号上,注入小两级的ESD,比如±2KV,有些信号会导致PMU损坏,有些会导致死机。将USB信号逐个引出,VBUS,D+,D-都没有出现问题,打ID管脚,会出现类似现象。

weixin_39196333的博客 2006

Serial RapidIO Gen2 IP 说明(三)

前言 继续接着上篇文章,介绍Serial RapidIO Gen2 IP 的具体端口信息。 一、端口描述 1、缓冲设计接口 2、物理层接口 参考说明 【1】Serial RapidIO Gen2 v4.1https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/srio_gen2/v4_1/pg007_srio_gen2.pdf ...

记录所学,分享知识,结识挚友 1321

【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)

OpenSSL 是一个开源的软件库,它提供了一系列加密工具和协议,主要用于实现安全通信,如在网络上的数据传输。它支持多种加密算法,包括对称加密、非对称加密、散列函数、伪随机数生成器、数字签名、密钥交换以及证书管理等。

嵌入式技术开发 4161

从工具人到架构师:GPT-5.2 生产力实战指南

从工具人到架构师:GPT-5.2 生产力实战指南

u012589549的博客 876

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

公式冒号是什么意思_用了这么久的Excel,你可能还不知道什么是单元格引用!...

每天一篇Excel技术图文微信公众号:Excel星球NO.196-什么是单元格引用作者:看见星光微博:EXCELers / 知识星球:ExcelHI,大家好,我是星光。多年以前,我Excel学有所成,自信满满去一家企业做培训。当我讲到将A6如何如何,台下一位长相贵气的姑娘礼貌的打断了我的话。她真诚发问:请问A6是指奥迪吗?我前两天新买了一辆,不过和你讲的对不上——多年以后的今天,想起那...

weixin_39799646的博客 658

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MC56F8458x中断与DMA实战:配置详解与协同优化指南

在嵌入式实时系统中,中断控制器(INTC)和直接内存访问(DMA)是提升系统响应效率与数据处理能力的两大核心技术。中断机制允许CPU及时响应异步事件,其核心在于优先级管理与嵌套处理,确保关键任务能够优先执行。DMA则通过硬件控制器在后台执行数据搬运,解放CPU算力以专注于复杂计算。从技术价值看,两者的协同能构建高效任务调度与数据传输骨架,显著提升系统实时性与吞吐量。在电机控制、数字电源、高速数据采集等场景中,合理配置中断优先级、快速中断以及DMA的传输控制描述符(TCD)至关重要。本文基于MC56F8458

weixin_30517215的博客 246

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: VBA数组详解
下一篇: IEC TR 61191-8-2021(原版发行) 处理汽车电子设备用印制板组件表面安装焊点空洞的指南
std7879
博客等级 码龄5年 273粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

std7879

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值