微信公众平台应用开发实战

《微信公众平台企业应用开发实战》源代码 《微信公众平台企业应用开发实战》一书中的完整源代码,应用开发框架,有实例代码,包括:WeiXinApiSDK、WeiXinMessageSDK以及实例 立即下载

微信公众平台应用开发实战

微信公众平台应用开发实战侧面
ISBN 9787111438618
作者 钟志勇
含税价 59.0元 税后 51.3元 增值税 7.7元
卓越价 40.7元(满49元免运费) 有货
出版社 机械工业出版社
出版日期 2013年08月28日
版次 第1版
印刷时间 2013年08月29日
印次 第1次
装帧 平装
纸张 胶版纸
页数 256页
语种 简体中文
开本 170mn×242mn 16开
重量 440克

微信公众平台应用开发实战评价
★★★★☆   4  星 -   1  篇书评

免费下载微信公众平台应用开发实战源码 (约 69KB)

内容简介
腾讯公司资深软件研发工程师兼微信公众平台应用开发先驱者撰写,权威性毋庸置疑
全面介绍微信公众平台应用开发所需各项技术,系统解读微信公众平台开放的 API 和各项高级功能,逐步讲解微信公众平台应用开发的流程、方法和技巧
注重实战,不仅通过3个案例呈现了娱乐型、应用型、游戏型应用的完整开发过程,还实现了一个快速开发公众平台应用的框架,可以直接使用

作者简介
钟志勇 腾讯资深软件研发工程师,毕业于中科院计算所,微信公众平台应用开发先驱,有多款应用开发经验。
在腾讯(深圳)云平台部工作,担任后台开发工程师,参与过腾讯 QCLOUD 的研发。精通 PHP 和 Linux 网络编程技术,实战经验丰富。

微信公众平台应用开发实战相册

免费下载微信公众平台应用开发实战试读PDF(无水印版) (约 4453KB)

目录 可试读

前言 可试读

第1章 搭建开发环境和相关技术介绍 1 可试读
 1.1 微信公众平台简介 1 可试读
 1.2 公众平台开发模式的数据交互方式 2 可试读
 1.3 AppServ 的安装与配置 4 可试读
 1.4 zendstudio 的安装与配置 10 可试读
 1.5 相关技术介绍 13
  1.5.1 PHP 13 可试读
  1.5.2 HTTP 24 可试读
  1.5.3 XML 27 可试读
  1.5.4 MySQL 29 可试读
  1.5.5 HTML5 32 可试读
 1.6 小结 36 可试读

第2章 微信公众平台 API 详解 37 可试读
 2.1 网址接入 37 可试读
  2.1.1 接口配置信息 37 可试读
  2.1.2 Token 验证 38 可试读
 2.2 接收用户信息 39 可试读
  2.2.1 文本消息 39 可试读
  2.2.2 图片消息 40 可试读
  2.2.3 地理位置消息 41 可试读
  2.2.4 链接消息 42 可试读
 2.3 向用户回复消息 43 可试读
  2.3.1 回复文本消息 43 可试读
  2.3.2 回复音乐消息 45 可试读
  2.3.3 回复图文消息 47 可试读
 2.4 事件推送 48 可试读
 2.5 会话界面自定义菜单 49 可试读
  2.5.1 获取凭证的方法 49 可试读
  2.5.2 自定义菜单的创建 50 可试读
  2.5.3 自定义菜单的获取 54 可试读
  2.5.4 自定义菜单的删除 55 可试读
  2.5.5 菜单相关接口的限制 55 可试读
 2.6 小结 55 可试读

第3章 开发你的第一个应用— echo server 56
 3.1 实现网址接入 56
 3.2 解析用户输入并组装返回 59
 3.3 错误处理 62
 3.4 封装代码 64
  3.4.1 日志封装 64
  3.4.2 一个简单的框架 69
  3.4.3 数据库访问封装 75
 3.5 小结 89

第4章 带自定义菜单的 echo server 90
 4.1 在编辑模式中使用自定义菜单 90
 4.2 使用 CURL 发送 HTTP 请求 93
  4.2.1 使用 CURL 发送请求的基本流程 93
  4.2.2 获取 CURL 请求的输出信息 94
  4.2.3 使用 CURL 发送GET请求 95
  4.2.4 使用 CURL 发送POST请求 97
  4.2.5 使用 CURL 上传文件 97
 4.3 获取 access_token 99
 4.4 自定义菜单的操作 102
 4.5 实现带自定义菜单的 echo server 109
 4.6 小结 113

第5章 实战案例1:娱乐性图片应用—“每日十幅图” 114
 5.1 需求和交互描述 114
 5.2 技术方案 117
  5.2.1 为什么使用问号 117
  5.2.2 为什么使用图文消息 117
  5.2.3 表设计 117
  5.2.4 批量重命名 118
 5.3 代码实现 119
  5.3.1 常量定义 119
  5.3.2 成员变量和初始化 120
  5.3.3 主业务逻辑 121
  5.3.4 总代码清单 127
 5.4 小结 131

第6章 实战案例2:人脸识别应用—— findface 132
 6.1 需求和交互描述 132
 6.2 人脸识别基本概念 133
 6.3 人脸识别 OPENAPI 134
 6.4 数据库表设计 136
 6.5 后台逻辑设计 137
 6.6 代码实现 138
  6.6.1 配置定义部分 138
  6.6.2 Face++ 接口封装部分 139
  6.6.3 Group 的创建和训练 142
  6.6.4 findface 主逻辑 142
 6.7 把照片保存到本地 145
 6.8 小结 148

第7章 实战案例3:趣味游戏—命运左轮 149
 7.1 游戏过程 149
 7.2 数据表设计 151
 7.3 自定菜单设计 153
 7.4 具体代码实现 155
  7.4.1 AbstractInterface.php 159
  7.4.2 WeChatCallBackMYZL.php 161
  7.4.3 Ready.php 167
  7.4.4 Start.php 169
  7.4.5 ChipIn.php 173
  7.4.6 PutMagic.php 178
  7.4.7 Shoot.php 185
  7.4.8 GetOp.php 192
  7.4.9 AddUser.php 195
  7.4.10 Matcher.php 196
 7.5 运行截图 198
 7.6 小结 198

第8章 海量请求的应对方法 199
 8.1 影响公众账号的响应速度的因素 199
  8.1.1 网络时延 199
  8.1.2 请求处理时间 200
 8.2 使用高性能的 Web 组件 200
  8.2.1 安装 201
  8.2.2 配置和运行 201
  8.2.3 A/B 测试 205
 8.3 监控服务器的各项指标 208
  8.3.1 top 命令 208
  8.3.2 vmstat 和 sar 命令 210
  8.3.3 netstat 命令 210
  8.3.4 Nmon 监控 211
 8.4 使用缓存系统 212
  8.4.1 Redis 简介 212
  8.4.2 Redis 的使用和性能对比 213
 8.5 数据库的备份和扩展 218
  8.5.1 主从复制和读写分离 219
  8.5.2 数据库的垂直划分和水平划分 220
 8.6 接入层反向代理 224
 8.7 小结 227

第9章 恶意请求的应对方法 228
 9.1 URL 访问限制 228
 9.2 防止 SQL 注入 232
 9.3 用户输入导致 XML 格式错误 234
 9.4 PHP 安全 237
 9.5 DDOS 简介 239
  9.5.1 SYN flood 239
  9.5.2 应用层 DDOS 241
  9.5.3 ReDOS 241
 9.6 小结 245
微信公众平台应用开发实战正面
微信扫一扫《微信公众平台应用开发实战》封面

“微信公众平台应用开发实战”文摘

前言

为什么要写这本书
微信有超过4亿的用户,其公众平台给了我们一个接触这个庞大用户量的机会,然而,到目前为止,公众账号的数量并不多。微信在公众平台道路上的探索还只是初级阶段,公众平台的使用者也在积极地进行着自己的摸索,目前特别成功的案例还很少。公众平台对于我们来说是一个全新的平台,任何人都可以在公众平台上注册账号,进行自己的探索,这意味着大家的机会都是平等的。和大家一样,我也是众多探索者中的一个。
关于机会,唐骏在他的新书《重新出发》中给出了他的理解:“机会有三种,第一种是别人给的,第二种是争取的,第三种是运作出来的。迂回前进是运作机会的最佳方式之一,对于处于弱势的人来说尤其有效。”也许读者目前对公众平台一无所知,我想从现在开始了解并不晚,也许最好的公众账号就是你将来苦心经营的那个。
我是在今年年初的时候第一次接触到公众平台的,一番了解之后,对它的开发模式非常感兴趣,于是自己开发了一些公众账号,包括本书中将会介绍的 meiri10futu、findface 和 mingyunzuolun。在开发和运营这些账号的过程中记录了遇到的问题和对应的处理方法,本书其实是把整个开发的过程展现给读者,我希望读者能够从中得一些帮助,同时也希望自己通过这本书认识更多对公众平台的开发感兴趣的人。

读者对象
❑ 对公众平台感兴趣的人;
❑ 有程序开发经验,想尝试微信公众平台开发的人;
❑ 没有程序开发经验,想入门学习微信公众平台开发的人(本书的准备篇是专门为这类读者准备的);
❑ 想通过开发一些实际应用提升自己开发能力的人(本书使用到的知识是互联网应用通用的);
❑ 已经开发了自己的公众账号,想进一步提升的人。

如何阅读本书
本书在逻辑上分为四大部分:
第一部分为第1章,简单介绍了微信公众账号的开发模式和相关的技术,包括 HTTP、PHP、XML 和 SQL,帮助读者了解一些基础的背景知识。如果读者已经使用过相关技术并对开发模式有所了解,可以跳过这部分。
第二部分为第2~4章,着重讲解公众平台的开放 API,并用这些 API 实现一个入门的 echo server 账号。在这一部分,笔者还进一步实现了一套快速开发公众账号的框架,读者使用这个框架可以快速实现自己的公众账号。
第三部分为第5~7章,依次向读者展示三个公众账号(meiri10futu、findface 和 mingyunzuolun)的开发过程,这三个公众账号分别属于娱乐型、应用型和游戏型。掌握这部分知识之后,读者可以独立完成一个有复杂逻辑的公众账号。
第四部分为第8~9章,介绍了如何处理海量订阅和用户消息、如何防御恶意攻击。这部分意在提高读者能力,同时这部分内容也是运营互联网应用需要重点关注的。这部分给出了一些实用的方法,掌握这些内容,读者将有能力独自运营一个有相当订阅数量的公众账号。
如果读者是公众账号开发的新手,建议至少从第二部分开始阅读,如果读者开发过一些公众账号,可以直接选择自己感兴趣的章节阅读。

勘误和支持
由于笔者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为了更好地和读者交流,笔者专门创建了一个QQ群(190609684),读者可以加入该群与笔者进行交流。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱 pacozhong@qq.com,期待能够得到你们的真挚反馈。
书中的全部源文件可以从天香空城(www.weixingon.com/wechat/)下载。

致谢
首先要感谢腾讯公司的微信团队,是他们创造了这款伟大的软件。
其次要感谢机械工业出版社华章公司的杨福川和孙海亮,感谢你们在我写作过程中提供的支持,因为有了你们的鼓励和帮助,我才能顺利完成全部书稿。
谨以此书献给我亲爱的家人,以及热爱软件开发的朋友们!

“微信公众平台应用开发实战”书评


经验丰富和写出好书是两回事

萧秋水  2013-10-06 10:03:16  ★★★★☆   4  星

相比易伟的《微信公众平台搭建与开发揭秘》,这本书可能更适合于有丰富经验的开发人员来读,不过如果有了丰富开发经验,又是否需要读书,似乎又是个问题,我接触的几位做过微信开发的人,似乎都是自己摸索。

天香空城微信二维码
关注 天香空城 微信号 ulisse 或扫描二维码,可以了解微信营销书籍
微信营销书评
微信公众平台开发源码

Java微信公众平台实例源代码(柳峰--完整版) 柳峰 微信公共平台应用开发 方法技巧与案例 图书源码下载。不错的微信公众号java教程。 立即下载

相关推荐

企业微信公众平台开发实战源码.rar

《企业微信公众平台开发实战:再小的个体也有自己的品牌》方倍工作室,2015年,配套源码。

《微信公众平台应用开发实战(第2版)》一导读

前  言 为什么要写这本书截至本书完成时,微信已有超过6亿的用户,公众平台给了我们接触这6亿用户的机会。公众平台对于我们来说是一个全新的平台,任何人都可以在公众平台上注册一个账号并进行自己的探索,这意味着大家的机会都是平等的。和大家一样,笔者也是众多探索者中的一个。在本书的第1版完成时,公众平台只开放了一些非常简单的接口,给到开发者的自由度很有限。截...

weixin_34179762的博客 495

微信公众平台企业应用开发实战 刘捷 电子工业出版社

《微信公众平台企业应用开发实战》全面介绍了微信公众平台已开放API的功能、使用方法及应用场景,详细解读了微信公众平台应用开发所需的各种技术、方法和技巧,深入讲解了微信公众平台开源开发框架Senparc.Weixin.MP。书中还精选了几个具有代表性的商用开发实际案例,以C#开发语言为例,系统讲解了微信公众平台企业应用开发的系统架构及完整的开发过程。 《微信公众平台企业应用开发实战》共8章,可分为四个部分:第一部分(第1章)介绍了微信公众平台的基础知识,为读者学习后续章节打下基础;第二部分(第2、3章)介绍了进行微信公众平台开发所需的准备工作及将应用接入微信公众平台的方法;第三部分(第4、5章)详细介绍了微信公众平台已开放的API,通过实战项目对开发框架进行了系统讲解,读者甚至可以直接使用开发框架进行自己的应用开发;第四部分(第6~8章)向读者展示了3个企业应用的实际开发过程。通过《微信公众平台企业应用开发实战》的学习,读者将完全有能力胜任大型微信公众平台企业应用开发工作。

微信公众号开发实战

微信web开发工具下载:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html进入下面的“微信公众平台接口测试申请”地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login扫码登录后,会看到如下界面:appID和appsecret是两个重...

编程小战 2387

微信公众平台开发实战

微信公众平台JSSDK开发实战:公众号与HTML5混合模式揭秘(小程序系列

OneOS远程升级能力实操演示 | OTA升级

OneOS远程升级能力实操演示,差分算法提升效率,OTA升级,OTA差分算法,全量升级、压缩升级、差分升级,有线网络连接,bootloader,升级平台,在线差分包制作,触摸屏以及GUI图形操作

OneOS是中国移动针对物联网领域推出的轻量级操作系统 2011

Web App开发入门

WebApp与Native App有何区别呢? Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包,且需要用户手动更新(有些应用程序即使不需要用户手动更新,但是也需要有一个恶心的提示)。 3、非常酷。因为native app可以调用IOS中的UI控件以UI方法,它

freshlover的专栏 5583

【图数据库与知识图谱入门】2.2 图数据库 vs. 关系型数据库 vs. NoSQL数据库

本文对比了关系型数据库、NoSQL数据库和图数据库的核心差异与应用场景。关系型数据库以二维表结构为核心,适合结构化数据的事务处理(如MySQL),但多表关联查询性能随层级增加而下降。NoSQL数据库(如MongoDB)具有灵活schema,适合海量非结构化数据存储,但关联查询能力较弱。图数据库专注于节点-边关系建模,擅长处理复杂关联分析(如社交网络)。通过学生-课程案例展示了MySQL的多表JOIN操作和MongoDB的两种关联实现方式(内嵌文档和文档引用),揭示了不同数据库在数据关联处理上的本质区别。

kngines 1541

基于微信公众号开发h5的前端流程

还有个txt文件,有弹框提示需要下载放在服务器上。1.首先公众号进行配置,必须要https域名。前端处理code的代码封装。

baidu_41899377的博客 2600

分享一个N-MOS管和P-MOS管驱动应用实例

大家好,我是『芯知识学堂』的SingleYork,今天给大家分享一下MOS管驱动相关的知识。 MOS管在电路设计中是比较常见的,按照驱动方式来分的话,有两种,即:N-MOS管和P-MOS管。MOS管跟三极管的驱动方式有点类似,但又不完全相同,那么今天笔者将会给大家简单介绍一下N-MOS管和P-MOS管的工作原理,并结合自己实际的应用来给大家分享一下如何来驱动N-MOS管和P-MOS管。 首先,我们先来看一下N-MOS管和P-MOS管分别在电路中的电气符号: 咋一看上面两个电气符号,似乎非常的相似,可能让很

『芯知识学堂』SingleYork 的博客 3万+

Rocfall安装包&安装教程

Rocfall 第一步:下载安装包 下载路径: 链接:https://pan.baidu.com/s/1Dzvxzv67dSPRi7f7ZT9EeA 提取码:o9pl 第二部:安装 安装包解压 选择part1进行解压 点击Setup.exe启动安装 生成Serial Number 替换启动程序 安装完毕 素材来源于网络(禁止用于商业仅用于完成毕业设计和研究使用) 谢谢! ...

cym的博客 8702

微信公众平台搭建与开发揭秘//////微信公众平台应用开发实战

微信公众平台搭建与开发揭秘,完整扫描版 【香港回来了,累啊。这个是从http://www.ckook.com/处获得的电子书,自制的就不上传了,免得被人叽歪】 《微信公众平台搭建与开发揭秘》以php技术为基础,全面系统地介绍了微信公众平台的搭建。全书共15章,主要内容有微信公众平台介绍、编辑模式的操作管理、开发模式的验证、地理位置信息的使用、常用api对接、数据库操作、缓存处理、w

461

【点云概述】什么是点云、来源、种类、特点、处理?

【点云概述】什么是点云、来源、种类、特点、处理?点云(point cloud)是空间中点的数据集,可以表示三维形状或对象,通常由三维扫描仪获取。点云中每个点的位置都由一组笛卡尔坐标 ( X , Y , Z ) (X, Y, Z) (X,Y,Z)描述,有些可能含有色彩信息 ( R , G , B ) (R, G, B) (R,G,B)或物体反射面强度(Intensity)信。

智慧空间实验室 9818

《微信公众平台应用开发实战(第2版)》一第1章 微信公众平台介绍

本节书摘来华章计算机《微信公众平台应用开发实战(第2版)》一书中的第1章 ,第1.1节,钟志勇 何威俊 冯煜博 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第1章 微信公众平台介绍 最近这段时间,在任何时候打开任意一个IT媒体,都能在显著位置看到关于微信公众平台的文章,无论是稍有历史的优快云、51CTO和ITEYE,还是新兴的36Kr、雷...

weixin_34194379的博客 153

CT探测器普遍采用“星形拓扑+多ADC模组”架构的TDC(时间数字转换器)设计方案

本文提出一种基于TDC反馈机制的CT探测器时钟同步方法,通过延时测量、偏差计算和动态补偿三步硬件流水线,实现高精度同步。系统采用Xilinx Kintex UltraScale FPGA内置CARRY8进位链构建3.5ps分辨率的TDC,结合多级比较器和延迟单元,形成闭环反馈控制。实验表明,在512通道、1.28m传输距离下,同步精度稳定在10ps以内,较传统方案提升两个数量级,并能动态补偿干扰抖动。该方案解决了传统方法在CT旋转腔体环境下精度不足的问题,为下一代超高清CT提供了有效的时钟同步解决方案。

whm128的博客 274

项目报告:基于Sentaurus TCAD的多沟道长度NMOS器件仿真、SPICE模型提取与环形振荡器电路验证

本项目基于Sentaurus TCAD工具,完成了从器件仿真到电路验证的全流程研究。首先构建了45nm、65nm和90nm三种沟道长度的NMOS器件,通过TCAD仿真分析了其电学特性,观察到明显的短沟道效应。随后提取了BSIM4 SPICE模型参数,并生成Hspice可用的模型文件。最后利用该模型设计了11级环形振荡器进行电路验证,证明了模型的实用性。研究结果表明,随着沟道长度缩短,器件性能虽有所提升,但短沟道效应导致关态电流显著增加,影响整体能效。本项目为纳米尺度MOSFET的建模与电路设计提供了完整的技

huanghm88的专栏 284

《微信公众平台应用开发实战(第2版)》一1.5 小结

本节书摘来华章计算机《微信公众平台应用开发实战(第2版)》一书中的第1章 ,第1.5节,钟志勇 何威俊 冯煜博 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.5 小结 本章介绍了公众账号的注册、认证、编辑模式中的自动回复和自定义菜单等功能,并且简单介绍了公众账号的开发模式,相信读者已经对公众账号有了基本的认识。公众账号的强大之处还是它提供...

weixin_33949359的博客 204

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2831

《微信公众平台应用开发实战(第2版)》一1.3 编辑模式

本节书摘来华章计算机《微信公众平台应用开发实战(第2版)》一书中的第1章 ,第1.3节,钟志勇 何威俊 冯煜博 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.3 编辑模式 在注册好公众账号并通过审核之后,就可以使用高级功能了。无论是服务号还是订阅号,都可以使用编辑模式,笔者在这里介绍如何使用编辑模式。登录公众账号,单击左侧菜单栏的“功能”...

weixin_33827590的博客 165

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

《微信公众平台应用开发实战(第2版)》一1.2 微信公众账号的认证

本节书摘来华章计算机《微信公众平台应用开发实战(第2版)》一书中的第1章 ,第1.2节,钟志勇 何威俊 冯煜博 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。 1.2 微信公众账号的认证 订阅号在关注数超过500后可以使用实名认证过的腾讯微博账号进行认证,认证后可以获得自定义菜单功能。订阅号的认证过程比较简单:登录公众号的管理台,在“设置”下的...

weixin_33716941的博客 191

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

微信开发 php 源码,《微信公众平台应用开发实战》php源码

【实例简介】【实例截图】【核心代码】$startTime = microtime(true);require_once dirname(__FILE__) . '/common/Common.php';function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = ...

weixin_39960319的博客 944

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: 微信公众平台简介
下一篇: 微信Token验证
GoodShot
博客等级 码龄22年 968粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值