VC6.0中GDI+使用

VC6.0MFC下使用GDI++编译链接通不过的解决方案之一(syntax error : identifier 'Count') 在写那个优快云博文提取的时候因为要显示用户的头像在对话框上面,自然想到的就是使用大名鼎鼎的GDI+了,但是在我准备使用gdi库,加入头文件,引入lib之后,引发的错误吓了我一跳!32个错误。后面根据有人的博文看到要在stdafx里面写成如下,错误减少到16个 #ifndef ULONG_PTR #define ULONG_PTR unsigned long* #include "GdiPl 阅读详情

GDI+可应用于二维向量图象,栅格图象及排版,是为C/C++程序员而设计的表现为C++类而存在的接口,能用于一切基于Windows的应用中。作为GDI的后继者,GDI+在GDI中增加了新功能,如文本的反锯齿,渐变笔刷,Alpha溶合;也优化了GDI许多已有的功能。此外,GDI+改变了编程模式,使其更灵活及易用。

GDI+并不限于在.Net中存在,实际上它由Windows XP或Windows Server 2003操作系统提供。它被打包在一个名为GdiPlus.dll的文件中。此文件位于C:/Windows/WinSxS下的相应文件夹下。以笔者的XP系统为例,共有2个版本,其相应的文件夹分别是:

x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.0.0_x-ww_8d353f13
x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82

在应用程序中,我们不需指定版本号,系统自动选择最新的版本。先假设我们已经在VC6中编好一个GDI+应用,在degbug版本中单击菜单Build->Start Debug->Go启动调试,再终止应用,在VC6的Output区域中可以看到以下信息:
Loaded ''C:/WINDOWS/WinSxS/x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82/GdiPlus.dll''
说明系统自动选择了最新的版本。

如同Windows是用C语言编写,GdiPlus.dll是以C函数实现的,并没有封装为C++类,从而给非C程序员带来不便。又如同MFC所为,微软再次将这些C函数打包为C++类的形式,向C++程序员提供了以GdiPlus.h领头的30个头文件及一个GdiPlus.lib。因此,如果您是C程序员,则只需GdiPlus.dll就行了;C++程序员则还需要找到GdiPlus.h等头文件及GdiPlus.lib文件。

Windows XP或Windows Server 2003应使用系统自带的GdiPlus.dll,以免与系统服务冲突。而对于版本低于Windows XP的Windows,如Windows NT 4.0 SP6, Windows 2000, Windows98及Windows Me,则需要此文件。可到微软的官方地址去下载分发包gdiplus_dnld.exe文件,地址为:
http://www.microsoft.com/downloads/details.aspx?FamilyID=6a63ab9c-df12-4d41-933c-be590feaa05a&DisplayLang=en

该文件是一个自解压的文件,应将其解压到应用程序的目录下,但不要安装在系统目录中。

C++程序员还应去找GdiPlus.h及GdiPlus.lib。以下地址所提供的名为gdiplus.zip的文件就包括了这些文件:
http://www.crazy-bit.com/download/gdiplus.zip

而以下的地址则提供了一站式的所有资源,即包含了GdiPlus.h等头文件, GdiPlus.lib及GdiPlus.dll:
http://www.codersource.net/samples/mfcgdiplus.zip

根据解压的不同方式,有不同的引用方法。

第一种方法是直接引用,需要将gdiplus.h, gdiplus.lib分别拷贝至VC相应的include及lib目录下。这两个目录可通过VC6的Toos->Options->Directories标签页中,在Show directories for下拉列表框中分别选择Include files及Library files查询到。如Include,一般包括3个路径:VC98/INCLUDE, VC98/MFC/INCLUDE及VC98/ATL/INCLUDE,分别对应非MFC应用,MFC应用及ATL应用所用的不同路径。

然后在StdAfx.h中加入如下的语句:

#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")

GdiPlusInit.h中使用了ULONG_PTR的数据类型,但此类型在VC6中没有定义。因此必须在#include语句之前先进行定义。#pragma comment(lib, "gdiplus.lib")指示在连接时在应用所在目录或系统LIB目录下查找gdiplus.lib。

第二种方法是将其解压到任意一个文件夹,然后在StdAfx.h中明确指明具体路径。

#define ULONG_PTR ULONG
#include "C:/gdiplus/Include/gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib, "C:/gdiplus/lib/gdiplus.lib")

除了用以上的方法连接gdiplus.lib之外,还可以在Project->Settings->Link->Object/library modules中输入gdiplus.lib(若有多个库,可用空格隔开,但GDI+只有一个库)。这种方法,可不用在StdAfx.h中输入#pragma comment。

在使用GDI+之前,您必须通过GdiplusStartup()启动GDI+,而在使用完毕后,调用GdiplusShutdown()来清理现场。 根据MFC的特点,应相应地放在XXXApp类的InitInstance()及ExitInstance()中。

先为XXXApp类添加两私有成员变量:
private:
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;

然后在InitInstance()中,在调用m_pMainWnd->ShowWindow()及m_pMainWnd->UpdateWindow()之前调用GdiplusStartup():

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;

注意,如果GdiplusStartup()放在ShowWindow()及UpdateWindow()之后,则当窗口第一次显示时,由于GDI+还未启动,GDI+所画的图形不会显示出来,直到第二个WM_PAINT的消息传到。

而在ExitInstance()中,如下编写代码:

GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();

现在,GDI+已经准备完毕,可以使用了。

在XXXView类的OnDraw()方法中:

Graphics graphics(pDC->m_hDC);

Pen pen(Color(50, 255, 0, 255), 15);
pen.SetDashStyle(DashStyleDash);
pen.SetStartCap(LineCapRoundAnchor);
pen.SetEndCap(LineCapArrowAnchor);

graphics.DrawLine(&pen, 20, 20, 300, 100);
graphics.DrawLine(&pen, 300, 100, 600, 100);

先使用OnDraw()方法的参数pDC的成员变量m_hDC在堆上构造一个Graphics的实例graphics,创建一个Pen并进行设置,然后通过graphics的DrawLine()方法画出直线来。

与GDI相比较,GDI+不必将Pen, Brush等对象选进DC再画图,而是通过使用DC的句柄来创建一个Graphics实例,之后,直接使用此实例来进行画图。这种风格,确实大大方便了编程人员。

至此,我们可以在VC6 MFC中使用GDI+描绘美好的未来了。:)

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/desow/archive/2009/09/25/4592847.aspx

安装文章2:

VC.net中使用GDI+的方法  
在Visual C++.NET使用GDI+一般遵循下列步骤:   

(1)、在应用程序中添加GDI+的包含文件gdiplus.h以及附加的类库gdiplus.lib。通常gdiplus.h包含文件添加在应用程序的stdafx.h文件中,而gdiplus.lib可用两种进行添加:第一种是直接在stdafx.h文件中添加下列语句:

#pragma comment( lib, "gdiplus.lib" )  另一种方法是:选择"项目->属性"菜单命令,在弹出的对话框中选中左侧的"链接器->输入"选项,在右侧的"附加依赖项"框中键入gdiplus.lib,

(2)、在应用程序项目的应用类中,添加一个成员变量,如下列代码:

ULONG_PTR m_gdiplusToken;其中,ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: GdiplusShutdown来关闭GDI+。

(3)、在应用类中添加ExitInstance的重载,并添加下列代码用来关闭GDI+:

int CGDIPlusApp::ExitInstance()
{
 Gdiplus::GdiplusShutdown(m_gdiplusToken);
 return CWinApp::ExitInstance();
}(4)、在应用类的InitInstance函数中添加GDI+的初始化代码:

BOOL CGDIPlusApp::InitInstance()
{
 CWinApp::InitInstance();
 Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
 ...
}(5)、在需要绘图的窗口或视图类中添加GDI+的绘制代码:

void CGDIPlusView::onDraw(CDC *pDC)
{
 Graphics graphics( pDC->m_hDC );

 GraphicsPath path; // 构造一个路径
 path.AddEllipse(50, 50, 200, 100);

 // 使用路径构造一个画刷
 PathGradientBrush pthGrBrush(&path);

 // 将路径中心颜色设为蓝色
 pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));

 // 设置路径周围的颜色为蓝芭,但alpha值为0
 Color colors[] = {Color(0, 0, 0, 255)};
 INT count = 1;
 pthGrBrush.SetSurroundColors(colors, &count);

 graphics.FillRectangle(&pthGrBrush, 50, 50, 200, 100);

 LinearGradientBrush linGrBrush(
  Point(300, 50),
  Point(500, 150),
  Color(255, 255, 0, 0), // 红色
  Color(255, 0, 0, 255)); // 蓝色

 graphics.FillRectangle(&linGrBrush, 300, 50, 200, 100);
}

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/scollins/archive/2010/03/24/5413161.aspx

GDIGDI+.rar MFC中使用GDI与GDI+ 立即下载

相关推荐

Microsoft GDI+ 库

完整的GDI+库,VC6可以正常使用! 关于配置看 http://blog.csdn.net/bllqbz/archive/2010/05/08/5569637.aspx

GDI+ for VC6 MFC

五年前,笔者曾在C#中使用GDI+开发程序,对其颇有好感。这一段时间,在使用VC6作图时,深切感会到使用GDI的种种不便,不比GDI+好用。沉迷于VC6的高效与轻便,不想只为了一个GDI+而被迫安装沉甸甸的.Net,便产生了一个疑问,难道GDI+只能用于.Net中吗?访问微软的MSDN网站后,随即解开了此谜。于是便有了此文 – 如何在VC6 MFC中使用GDI+。GDI+可应用于二维向量图

Sarkuya的编程园地 6457

IGDIPlus(Delphi GDI+库).zip

IGDIPlus(Delphi GDI+库).zip\完整的库文件,欢迎下载

GDI+入门(总结)

大部分是参照其它资料,然后加以自己的理解,那是什么,总结。算不得什么教程。。。。。。。汗,自己看着就行了。。如果别人能看那就更好了。 首先下载GDI+文件包,一个动态链接库,使用GDI+就是调用那个动态链接库里的函数。类似画图什么的,了解这个主要是想把bmp图片转换成jpg的,然后做个简单屏幕监控,几个月前尝试做了一下,差不多是半分钟才传过来一张图片。知识有限,没办法,那时候,也没怎么上心,

JackWoo的专栏 3万+

GdiPlus_1.1.zip

GDIPlus1.1 for Delphi

PBR:双向反射分布函数(BRDF)介绍与Cook-Torrance模型的实现

PBR:双向反射分布函数(BRDF)介绍与Cook-Torrance模型的实现 BRDF简介 再介绍BRDF之前我们要引入渲染方程这个东西: 其中L表示辐射率,其公式为: 它表示了一个拥有辐射强度Φ的光源在单位面积A,单位立体角ω上的辐射出的总能量。 辐射率是辐射度量学上表示一个区域平面上光线总量的物理量,它受到入射光线与平面法线间的夹角θ的余弦值cosθ的影响:当直接...

小龙虾的博客 1万+

在VC6 0中使用GDI+的两种办法

在VC6 0中使用GDI+的两种办法

gdruhv的博客 726

深入了解 Google Gemini:主要功能是什么以及我们为什么要使用它?

Google Gemini开启AI新纪元,以其独特的多模式功能重塑技术未来。

KompasAI的博客 4067

在VC6.0中使用GDI+的两种办法

                                                                                      朱金灿       GDI+是GDI的升级版本。在VC6.0中并没有配备GDI+的相关文件。那么如何在VC6.0使用GDI+呢?我从网上搜索了一些资料,并结合自己的使用,总结出一下两种方法。下面我各建一个MFC工程介

clever101的专栏 9343

告别GPS,用Sentinel-1数据+Python实战SBAS-InSAR监测城市地面沉降(保姆级教程)

本文详细介绍了如何利用Sentinel-1数据和Python实现SBAS-InSAR技术监测城市地面沉降。通过保姆级教程,从环境配置、数据获取到干涉处理、时序分析和形变反演,逐步解析全流程技术细节,帮助读者掌握毫米级精度的形变监测方法,并以上海陆家嘴区域为例展示实际应用效果。

weixin_32771907的博客 536

ABAP内表数据导出Excel:OLE、ALV与GUI_DOWNLOAD方案全解析

在企业级应用开发中,数据导出是连接后台系统与前端业务分析的关键桥梁。其核心原理是将结构化数据转换为通用文件格式,以实现跨平台的数据交换与可视化。从技术价值看,一个健壮的导出功能能显著提升数据处理效率,减少人工干预,是衡量系统实用性的重要指标。常见的应用场景包括报表生成、数据交接和临时数据提取。本文聚焦于SAP ABAP开发领域,深入探讨如何将内表数据高效、稳定地导出至Excel,涵盖了OLE自动化、ALV标准导出以及基于CL_GUI_FRONTEND_SERVICES与GUI_DOWNLOAD的通用方案,并

weixin_32715349的博客 324

在VC6.0中使用GDI+

在VC6.0中使用GDI+        GDI+在原来GDI的基础上进行了许多的升级和优化,比如线条平滑、颜色透明度、图形变换(平移、缩放、旋转),更多图片格式支持等技术都进行了很大的改善,使用GDI+可以很方便的实现对各种图形的绘制和优化。GDI+属于.NET组合,不过VC6.0的朋友也可以很方面地使用它,在VC6.0和工程中使用GDI+的流程如下:       1.安装GDI+组件。对于

jia_xiaoxin的专栏 895

天祥TX-1C单片机开发板-秒表程序

郭天祥TX-1C开发板实现秒表程序 附开发板图片和原理图 代码 #include <reg52.h> sbit key1=P3^4; //按键S2 sbit key2=P3^5; //按键S3 sbit U1=P2^6; //LED位选 sbit U2=P2^7; //LED片选 unsigned char code ledchar[]={ /...

Run_long_road 3513

VC6.0使用GDI+的方法及初始化工作

GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。  

曾经沧海 675

[实践篇]13.13 再来梳理一下HAB的设计原理

HAB全称为Hypervisor Abstraction,即硬件抽象,主要用于提供对HOST OS硬件资源的访问。

从0到1,突破自己 7260

RAP 语义键:让 UUID 世界变得可读、可导航、可校验

RAP 语义键的核心价值与实现要点 语义键(Semantic Key)是 ABAP RAP 模型中连接技术实现与业务体验的关键设计:通过为实体指定一组业务可读的标识字段(如订单号、物料编码等),在保持技术主键(如UUID)不变的同时,显著提升用户界面的可读性和导航体验。 主要优势: 提升UI可读性:Fiori元素会突出显示语义键字段,帮助用户快速识别关键业务数据 改善导航体验:OData URL会使用可读的语义键而非技术ID,便于分享和排查问题 降低沟通成本:业务人员能准确引用有意义的业务标识而非技术ID

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 155

VC6.0下使用GDI+

GDI+forVC6.0和本例源代码下载 1、新建一单文档工程GDITEST。 2、在GDITEST下新建 \Bin目录放置可执行文件, \Inc\GDIPlus目录放置GDIPlus头文件, \Lib\GDIPLUS目录放置GDIPlus的lib文件, gdiplus.dll放置在工程目录下,注意dll与头文件lib文件版本的对应,一般为5.0.3.49版gdiplus。

可乐鸡翅 1753

Python爬虫实战:爬取小红书数据做爆款分析,我破解了签名加密+移动端反爬(附完整代码)

爬取小红书数据的核心,不是“简单的HTTP请求”,而是“理解移动端接口的加密逻辑和反爬规则”——从x-s/x-t签名破解到移动端UA伪装,再到行为模拟,每一步都是对移动端爬虫的深度理解。这套方案的价值在于,不仅能稳定抓取小红书数据,还能从数据中拆解出有价值的爆款特征,真正把“数据”变成“洞察”。对程序员来说,小红书爬虫不仅是技术练手,更是了解新媒体平台数据逻辑的窗口。希望这篇分享能帮到做新媒体分析或爬虫进阶的小伙伴,也欢迎在评论区交流小红书反爬和爆款分析的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2058

vc6.0 java_VC 6.0 配置和使用gdi+

GDI+GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能...

weixin_30794381的博客 262

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

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

在vc6.0中使用GDI+图形函数

例如怎样使一个字符串透明输出,怎样放大,缩小或旋转一幅图片,或将一幅bmp图片保存为jpg格式,我总是回答使用GDI+图形函数,那么怎样使用呢? 下面是我写的一个简易教程,第一次写教程,难免有疏漏还请各位网友指正批评. GDI+图形函数,一个组在.net环境下提供的以取代GDI图形函数的类,将来会逐渐取代GDI图形函数. 如果在vc6.0中使用gdi+图形函数,那么请按以下步骤操作: 1.下载下面的rar文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和L

q37s6569522的专栏 658

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC 6.0 配置和使用gdi+

GDI+   GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1241

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

下一篇: VC6.0中安装DirectShow
「已注销」
博客等级 码龄16年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值