wxLua 2.8.10 - FAQ

【wxlua教程一】搭建环境 【wxlua教程一】搭建环境 本文章将讲述搭建wxlua运行环境与如何运行wxlua脚本。 本系列托管在github上 wxlua教程一搭建环境 说明 在win下 第一种 用lua for window 第二种 下载本项目的win32文件夹 第三种 编译wxlua源码与lua使用 在linux下 在mac下 说明:wxlua脚本其实是lua脚本,只要wx库的路径正确用lua解释器就能运行。 阅读详情

原文作者: John Labenski; 翻译:刘贵学(liuguixue@gmail.com)

  1. 为何选择 wxLua?
    1. wxLua, wxPython, wxSomethingElse哪个最好?
    2. 能将wxlua嵌入我的C++应用程序中作为脚本解析器吗?
  2. 如何学习wxLua
    1. 阅读 wxLua 文档
    2. 阅读C++ wxWidgets 文档
    3. 运行并跟踪示例代码
  3. wxLua编程
    1. wxStrings?
    2. wxArrayString 与 wxSortedArrayString?
    3. wxArrayInt?
    4. 什么时候 删除对象,如何删除?
    5. 为何在示例中使用main()函数? 它在wxLua有什么特别吗?
    6. 在类的成员函数调用时,为何额外参数常出现错误?

  1. 为何选择 wxLua?

    1. wxLua与wxPython选择哪一个?
      • 这取决于: wxPython 比wxLua 应用支持更广泛,更棒,那是因为它提供了更多的Python标准库.
      • 反过来讲,wxLua是非常小,大小只有 wxWidgets库加上大约100KBLua库,在加上500多KB的wxLua库。
      • wxLua 可以很简单的与C++ 结合,成为很强大的扩展语言,这也是它的设计意图。
      • 总之,如果你在一个应用程序中使用脚本语言,你需要Python提供的功能,而在wxlua中还没有提供,那您应当使用wxPython(功能面选择wxPython); 相反,如果您在编写应用程序中考虑的是更小的开销,或者只是扩展你的C++应用程序,请选择wxLua. (开销小,扩展性好,选择wxLua)
    2. 能将wxlua嵌入我的C++应用程序中作为脚本解析器吗?
      • 可以!wxLua的主页有详细解释。
      • 这是wxLua的优点之一,使用轻量且快速的解释器来扩展您的应用程序,让用户可以客制化。
      • 在单个程序中,您愿意创建多少wxLua解释器都可以。
    • 因为Lua语言简单, 属于函数式编程语言,用它编程更有趣 .(译者注: 这里的fun一语双关, 代表函数式编程也指有趣、有意思。)
    • 它看起来与大家熟悉的BASIC或C类似。
    • Lua代码可读性非常高,与BASIC或C没有大的变化,几乎没有那些特殊的符号,陷阱,或古怪结构。
    • 大小 : Lua解释器本身才只有大约100KB,加上wxWidgets也只有 几Mb而已.
    • 速度 : Lua 几乎是所有解释型语言中最快的,看这篇 《伟大语言的决战》
    • 关于为何使用Lua的其他内容, 请参考:http://www.lua.org/about.html
  2. 如何学习wxLua

    1. 阅读 wxLua 文档
      • wxlua.html是wxLua的手册,主要介绍Lua语言,wxWidget如何在Lua中实现,以及如何使用。
      • wxluaref.html是自动产生的,可以当做一份参考手册,它包括wxLua对wxWidgets的封装说明,以及与 C++ wxWidgets相比一些使用差异的说明。
      • binding.html 描述了如何绑定一个用C/C++实现的库,但是那些只会写Lua 代码的人也应该阅读这份文档,便于理解 wxluaref.html文档。
    2. 阅读C++ wxWidgets 文档
      • wxLua与wxWidgets匹配的很好,也就是说wxWidgets里的函数及参数的描述也适用于wxLua。 看看wxluaref.html文档去验证一下,所有不一致的行为都已被清晰的标记出来。
      • 看一下wxWidgets wiki页面中例子,如何入门,以及其他的有用信息。
      • 阅读 wxPython文档及Wiki页面时需要注意: wxLua一些符合比wxPython更象C++。
    3. 运行并跟踪示例代码
      • 示例代码将尽可能的展示各种类的使用方法。
      • unittest.wx.lua 用于wxlua是否运行正常,但它也提供了丰富的信息: 哪些函数允许调用;如何强制类型转换; 如何使用虚函数;以及如何导出函数。
      • binding.wx.lua 遍历在wxLua中使用到的所有C的结构体,非常值得花时间浏览一下,看看它们是如何组合在一起的。
  3. wxLua编程

    1. wxStrings?
      • wxLua也能使用Lua string,所以所有使用wxString的函数 也同样可以使用Lua string.
      • 但如果确实需要,也可使用wxString。
    2. wxArrayString 与 wxSortedArrayString?
      • 所有可以使用wxArrayString或wxSortedArrayString的函数也同样可以使用已数字为索引的string表.
      • 所有返回wxArrayStrings 或 wxSortedArrayStrings的函数,如果没有在wxluaref.html里特殊说明,也可使用一个wxArrayString 或 wxSortedArrayString代替。
    3. wxArrayInt?
      • 所有可以接收wxArrayInt的函数,也同样可以接收一个以数字为索引的数字表(表的索引为数字,内容也是数字)。
      • 所有返回值为wxArrayInts类型的函数,如果没有在wxluaref.html里特殊说明,也可以使用一个wxArrayInt代替。
    4. 什么时候 删除对象,如何删除?
      • 您应当阅读 wxlua.html手册中的"C++ Classes CLASS_NAME" 与 "Programming in wxLua"章节。
      • 简单的说,您创建的所有图形处理相关的对象,在用完后,都应该立即被删除。 函数的参数为"const wxPen& pen" 或wxObject派生对象时,它们是引用的拷贝而非指针,所以应当删除。
      • 使用函数 "table = wxlua.GetGCUserdataInfo()" 来获取一个table时,此table不需要被手动删除,垃圾回收机制会处理。
      • 类对象在声明中 (参考wxluaref.html)会含有%delete标志,意思是,该对象将由垃圾回收机制自动处理,或wxLua添加删除函数处理。 当然,将带 %ungc标记的参数传给有%delete标志的对象函数,会发生异常。%ungc标记的意思是对象还会被使用,在wxLua里不要使用GC删除。
      • 底线——只有以下情况需要考虑手动删除:
        • 图形处理对象 (特别是MSW );
        • 特殊指出的一些类(参考 wxluaref.html),应当考虑手动删除,因为垃圾回收机制不能及时删除;
        • 非常庞大的对象,例如wxImage(1000,1000);1000).
    5. 为何在示例中使用main()函数? 它在wxLua有什么特殊含义吗?
      • main()函数只是一个通用的程序入口名称,没有特殊的意义。
      • 我们通常将程序的初始化代码用一个函数来封装,这样做很好,很有用。因为,您应当使用局部变量,而不要用临时数据污染全局表。
      • 总之,在调试的时,您可以在任何地方只需要加入"do return end",便可插入初始化代码。而不是使用大量的 "if false then ... end".
      • 代码。
    6. 在类的成员函数调用时,为何额外参数常出现错误?
      • 因为使用':'调用成员函数时,会将 'self'作为第一个参数传入。
      • s = wx.wxSize(1, 2); s:Set(3, 4) 与 s.Set(s, 3, 4)效果一样, 且第一个参数必须是对象本身,因此 s.Set(s,"hello", 4) 或者r s:Set("hello", 4) 都会抛出一个错误:第二个参数不是数字。
      • 不幸的是,根本不可能去告诉用户应该使用 '.' 还是 ':' 来调用函数,因为错误信息可能专门为了区别静态、非静态成员函数而定制。 只要记住一点,在使用 ':'调用时,非静态成员函数的第一个参数为'self'。
【wxlua教程三】开始例程 说明:这一篇就开始讲wxlua的使用了,wxlua可以集成在你的C++程序里, 也可以当成一个独立的库给lua调用。我这里假设你已经有一些lua基础,了解面向对象编程。 本系列托管在github上 相关链接维基面向对象页面 wxlua官网如何运行wxlua程序wxlua本质是lua脚本,用lua解释器可以成功运行,因为需要载入wx库, 所以wx库文件要放在lua可以寻找到的地方。通常放在程 阅读详情

相关推荐

wxlua_tutorial:wxlua(围绕wxWidgets跨平台GUI库的lua脚本语言包装器)教程

wxlua 教程 本项目是一套wxlua(一个wxwidget与lua的绑定,用来写界面的)教程。宗旨是方便小白学习,方便大神查阅。 说明 本教程尽量采用非线性文本写作,阅读顺序是不重要的,反正我是想到什么写什么,读者可以使用搜索来找你感兴趣的。 目录结构 doc文件夹 --教程的主目录 code文件夹 --代码集合包括wxlua自带例程还有本教程的例子 src 文件夹 --wxlua的源码与lua5.1.4的源码,需要的自行看里面的文档编译 bin 文件夹 --包含了编译好的wx库(win,linux(32+64),mac,支持lua5.1,5.2,5.3)看里面的说明 LICENSE.md 文件 --开源协议,要转载或者使用本教程请先阅读这个文件。 编写规范: 本教程使用Markdown语言写成(后缀为md),可以在github在线查看,或者点击"download zip“ 下载后离线

wxLua实现的“每个字都是一朵花”小应用、双缓存动画、srLua及其他

话说,五年前的一天我曾经发博客说:我要实现个“每个字都是一朵花“的那种应用……五年过去了,终于到了我兑现诺言的时候了……可惜,这次用的不是HTML5和JS,这次用的是wxLua,也就是lua以及lua的wxWidget绑定库……这个程序的代码是纯手写的,尽管后来我发现了wxFormBuilder这个神器~可惜,我并木有使用它……这个程序最早的时候是我两年前的一个HelloWorld的小练手,程序中涉及一个跳动的小球,这个小球动画也是花费了不少时间,幸好wxWidget提供比较好的双缓存支持,也就是wxBuf

yimengqiannian的专栏 4911

wxLua-2.8.7.0-MSW-bin.zip

内含:<br>docs,wxlua samples源码,<br>lua.exe,luac.exe,wxlua.exe,wxluacan.exe,<br>wxluaedit.exe,wxluafreeze.exe等

用Lua写一个窗口

在Lua中创建一个窗口可以使用一个叫做"wxLua"的库。wxLua是一个将wxWidgets C++ GUI库绑定到Lua的库,可以让你使用Lua语言编写图形界面应用程序。 下面是一个简单的例子,展示如何在Lua中使用wxLua创建一个带有一个按钮的窗口: -- 引入wxLua模块 local wx = require("wx") -- 创建窗口 local frame = wx.wxFram...

weixin_35750747的博客 1689

wxlua单步调试工具

支持Lua进行单步调试,提供简单IDE功能。。。。。。

wxLua-2.8.7.0-src(wxLua工程源码)

wxLua工程源码,里面含有安装与编译说明文档。 wxLua is a Lua scripting language wrapper around the wxWidgets cross-platform GUI library. It consists of two IDE type editors that can edit and run Lua programs (wxLua and wxLuaEdit), an executable for running standalone wxLua scripts (wxLuaFreeze), a Lua module to load using require("wx") when using the standard Lua executable, and a library for extending C++ programs with a fast, small, fully embeddable scripting language.

【wxlua教程二】关于wxlua库的大小

有的同学觉得wxlua很大,想说能不能给它弄小一点,我的答案是可以。 wxlua下有什么 为wxlua加壳压缩 wxlua下有什么编译过wxlua的人知道在cmake中有一个选项为 wxWidgets_ALL_COMPONENTS_28=gl;stc;richtext;aui;xrc;qa;media;net;xml; html;adv;core;base 用来设置wxlua生成所需要

帆随风而动 3019

wxLua-2.8.12.3-Lua-5.1.5-MSW-Ansi.zip

wxLua-2.8.12.3-Lua-5.1.5-MSW-Ansi.zip lua for wxWidget

wxLua 有多简单?

wxLua 有多简单?其实不简单。因为调用 wxWidgets 本身就是件麻烦事。但是语言的力量是巨大的。我在 lua 下编写了一套名为 wxe (Lua wxWidgets Extension) 的库,调用这个库,我大大简化了 Lua 下的 GUI 编程。下面是一个例子:   编写这样的界面只需要不到 30 行代码(连空白行也算进去):   require "wxe" frame = wx...

remember1989的专栏 2627

wxlua教程.pdf

wxlua教程.pdf

wxLua用于wxWidgets跨平台GUI库的Lua脚本语言包装-开源

wxLua是用于wxWidgets跨平台GUI库的Lua脚本语言包装。 它由用于编辑,运行和调试wxLua脚本的可执行文件,用于使用快速,小型,可完全嵌入的脚本语言扩展C ++程序的库以及各种示例程序组成。 使用wxLua,您可以快速为MS Windows,Linux和OSX编写具有图形,网络,打印等功能的全功能程序。

lua是什么

Lua是什么 管理提醒: 本帖被 lua china 从 lua新手入门 移动到本区(2008-12-01) 1993年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的...

weixin_30568715的博客 502

Vc出现不能连接到一个或多个 vCenter server 系统:http://vcenter-vx.utibet.edu.cn:443/sdk

问题描述: 解决办法: esxi6.7的bug 第一种通过升级系统来解决问题 第二种是通过删除数据来解决 第一步:进入到esxi的shell 第二步查看其中的服务开启状态 第二步 df -h 第三步 /opt/vmware/vpostgres/current/bin/psql -d VCDB -U postgres 第四步 SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oi

m0_49328536的博客 9900

Lua语言的图形用户界面

Lua是一种轻量级的、可扩展的脚本语言,自1993年首次发布以来,已成为一个广受欢迎的编程语言。与许多其他语言相比,Lua的语法简单、灵活,内存占用小,非常适合嵌入到应用程序中。此外,Lua也提供了丰富的数据结构和函数支持,使得开发者能够快速实现复杂的逻辑。Lua的核心库非常小,适合在资源受限的环境中运行。Lua的执行速度较快,并且可以通过C语言扩展来提高性能。Lua可以在多种操作系统上运行,包括Windows、Linux和macOS等。

2501_90770606的博客 1269

PINN——加入物理约束的神经网络

【摘要】 基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。本文主要解析这种神经网络以...

qq_39444290的博客 4584

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

wxLua 如何打包生成可执行文件

到 http://wxlua.sourceforge.net/ 下载最新的win32 binary 包, 目前最新版为 2.8.7.0, 对应的包为: wxLua-2.8.7.0-MSW-bin.zip 解压到某目录(如: C:\), 方便起见, 将 C:\wxLua\bin 添加到系统环境变量 %path%, 这样做能延长键盘寿命. 在 C:\wxLua\bin\ 下建立一个批处理文件 cl

xzben‘blog 3358

别再只用三次多项式了!用MATLAB手把手教你搞定七次多项式轨迹规划(附完整代码)

本文详细介绍了七次多项式在轨迹规划中的优势与应用,通过MATLAB实现从理论推导到实际代码的全过程。相比传统的三次多项式,七次多项式能精确控制位置、速度、加速度和加加速度,实现更平滑的运动控制,特别适用于工业机器人和数控机床等高精度场景。文章包含完整的MATLAB代码示例和优化技巧,帮助工程师快速掌握这一高级轨迹规划方法。

weixin_30872337的博客 298

wxLua 扩展

目标:使用脚本,实现GUI可配置 支持:wxWidgets, LUA, wxLua, MinGW, Bakefile 平台:Windows 版本:Lua5.1, wxWidgets2.8.xx,GCC4.5.0   1.环境搭建 1.1下载MinGW     http://sourceforge.net/projects/mingw/files/Automated%20MinGW%2

Loon.x 4671

新一代XMOS会议四麦方案主控芯片 XVF3800

2023年,知名的音频芯片制造厂商 XMOS 正式发布了新一代会议麦阵芯片片 XVF3800 ,这款芯片采用最先进的四麦音频算法,可在嘈杂的环境中提供高质量语音,算法支持圆形、条形阵列,可根据应用场景组成不同的产品形态。传统的麦阵解决方案,不仅需要捕捉会议中的人声,也会同时捕捉环境中的其他噪声,而 XMOS 先进的语音算法解决了这一问题。声学回声消除功能可消除麦克风音频输入的回声,同时减少远端回声,使 XVF3800 能提取清晰的语音信号。• 180度拾音条形麦克风阵列。• 360度拾音环形麦克风阵列。

PawPaw_electron的博客 784

Quantum Espresso Hands-On实战训练(四)——PDOS计算与轨道分析

本文详细介绍了Quantum Espresso中PDOS计算与轨道分析的实战方法,重点解析了PDOS在材料电子结构研究中的核心价值,包括原子级分辨率、轨道级解析和自旋极化分析。通过具体案例和操作步骤,帮助读者掌握从输入文件准备到结果解读的全流程,并提供了高级分析技巧和疑难问题解决方案。

weixin_29211309的博客 504

LUA常见库和工具

相比Java、Python、Perl,Lua的开源工具和库可能并不算多,但其中不乏优秀之作。以下介绍的资源均可在http://lua-users.org/wiki/LuaAddons上找到,而且绝大多数都遵循着与Lua相同的许可协议。 一、Kepler Kepler是一个简单且轻量的Web开发平台(但这并不意味着只能用它来开发简单的应用),支持用Lua撰写Web程序,因此相当易学易用,

yhhwatl的专栏 5821

算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

【代码】算法 | 植物根茎生长优化算法(PRGO)原理、公式及应用,matlab代码(2025最强优化算法)

尘世冰封的专栏 1017

用 wxWidget 构建跨平台的 GUI

为什么要使用 wxWidgets 呢?原因很简单,它让您可以快速轻松地编写能够跨平台运行的 GUI,能让您随意选用编程语言,还能让您的 GUI 如下图所示一样优秀:图 1. Chandler 电子邮件客户机 图 1 显示了 Chandler,一个在开放源码应用程序基础上开发的日历和电子邮件管理程序。它是使用 wxWidgets 工具包编写的。虽然原始版本的 wxWidgets 是在 C++

蜗牛档案室 5502

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4428

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

c++lua静态库的加载

    静态库的编译可参考: https://blog.csdn.net/hjssss/article/details/86648791 1 新建测试工程,并引入lib头文件和lib库   2 设置工程lib文件的引入   3,可参考目录结构 目录结构: Solution |___Resources |___luaScript | ...

hjssss的博客 819

深度学习工具包 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")

上一篇: 谈研发内训
下一篇: Javascript MVC —— Class
0x16
博客等级 码龄20年 79粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值