J2ME Study

基于J2ME的手机游戏开发 随着通信技术的发展和手机的普及,手机游戏的开发技术越来越为人们所关注。以J2ME为开发平台,利用Java提供强大工具,不但可以在手机上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种手机游戏。本文在介绍J2ME及其体系结构的基础上,以贪吃蛇游戏为实例,描述了借助J2ME的MIDlet类库开发手机游戏的过程。 阅读详情

J2ME Study

2004-8-3

为了找工作,趁暑假时间对J2ME进行了初步的了解,下面将J2ME的基本知识和一些学习资料链接汇总如下。愿与java爱好者共同分享。

J2ME基本知识:

1) 什么是J2ME?

当JAVA平台发展到JAVA 2的版本以后,为了适应不同级别计算机硬件的开发需要,JAVA平台形成了三个主要分支:

J2SE :Java 2, Standard Edition,是为台式机而设计的,主要运行在Linux, Solaris, 或Microsoft Windows等操作系统上。

J2EE:Java 2, Enterprise Edition,则是一个适合分布式的、多用户、企业级应用系统运转的平台。它以J2SE为基础,增加了处理服务器端计算的功能,用于开发电子商务或企业web应用。

J2ME:Java 2, Micro Edition,和J2SE不同,它既不算是一个软件也不能算是一则规范。准确地说,J2ME是为了支持象PDA(personal digital assistant)、手机等小型的嵌入式或移动设备而推出的一系列的技术和规范的总称。它借用了J2SE类库的一部分,使用了更少的API,而且其J2ME采用的JAVA虚拟机(JVM)比J2SE的JVM也要小得多。

  

                             图 1

   遵循「对於各种不同的装置而造出一个单一的开发系统是没有意义的事」这个基本原则。J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机);另外一种则是运算能力相对较佳、并在
电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机顶盒 (set-top box))。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,然後把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说, J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。 

CDC 的应用设备的典型特征为具有一个32位的处理器,超过2MB的存储容器,可连续供电。

CLDC应用设备的典型特征为具有一个16位或32位的处理器,和160KB到512KB的总内存,通常以电池供电,并联入某类网络中。

CDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。但是,实际应用中,不同的设备之前存在着很大的差异。因此,我们在Configuration的基础上,又提出了Profile的概念。Profile规定的内容,是针对某一类设备所制订的规范和API,有了Profile以后,才真正有了可以建立一个可运行J2ME应用程序的完整环境。

移动信息设备描述(Mobile Information Device Profile或MIDP)以CLDC为基础,它是第一个制订完成的Profile,为那些运行在象移动电话和登录级PDA这样的设备上的应用提供完整的J2ME运行时环境。

MIDP致力于解决用户界面,持久存储,联网和应用程序生命周期这样的问题。

MIDLet指那些使用由MIDP和CLDC规范定义的API编写的应用程序。

2)   MIDP 2.0的新特性

   MIDP出现最早,也发展最快,在此我们也仅讨论J2ME MIDP应用程序的开发。2002年10月,JCP(Java Community Process,参见http://www.jcp.org)推出了MIDP2.0的规范,和MIDP1.0相比,它大大加强了对用户界面、多媒体和游戏功能、网络连接功能的支持,同时将OTA应用程序下载包括到规范中来,另外还为无线信息设备提供了端到端(end-to-end)的安全机制。

为了支持对声音的处理(例如播放WAV文件),MIDP2.0中增加了一个可选包ABB(Audio Building Block)。在以前,ABB只包含在Mobile Media API(MMAPI)中,现在将其纳入到MIDP中来,开发者就可以不用依赖于MMAPI了。当然,如果使用了MMAPI,可以为移动设备开发更多的功能,比如可以在PDA上播放视频流等等。

对J2ME游戏开发的支持可能是开发者和用户都企盼已久的,MIDP2.0提供的游戏API使得游戏本身可以更充分的利用设备自身的图形处理功能。它的出现无疑大大简化了J2ME游戏的开发工作,同时也使得开发者可以更多地控制程序的图形处理性能。

在通信方面,MIDP1.0仅支持HTTP,MIDP2.0则增加了对HTTPS、报文、socket通信以及串口通信的支持。另外,MIDP2.0还支持服务器Push体系架构,这样,你的手机能够收到来自服务器的报警、消息或者广播,根据要求启动手机上的应用程序进行操作。

支持Over-the-air (OTA) Provisioning是MIDP2.0的一个重要的新特点,它使得用户能够动态地部署和更新移动设备上的应用程序。新版的MIDP规范中规定了如何在移动设备上发现、安装、更新和删除MIDlet套件;同时,提供应用程序下载的服务提供商还能够判断该MIDlet套件是否能够运行在申请下载的设备上,并且从设备上获取安装、更新和删除的信息。MIDP OTA provisioning模型为移动服务提供商提供了单一、标准的部署MIDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳。

自从人类步入网络时代以后,网络安全始终是很一个关键的问题。MIDP2.0增加了强大的“端到端”的安全模型。一方面,MIDP2.0支持HTTPS,可以对传输的数据进行加密;另一方面,MIDP2.0采用了和MIDP1.0不同的安全机制,采用安全域来确保未经授权的MIDlet套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。

J2ME开发工具

1)  J2MEWTK(J2ME wireless toolkit J2ME 无线工具包):由sun公司提供,目前最新版本为J2ME wireless toolkit 2.2 Beta版,该工具仅提供MIDlet项目的运行环境,不包括开发环境。

J2ME wireless toolkit2.1 下载:http://java.sun.com/products/j2mewtoolkit/download-2_1.html

J2ME wireless toolkit2.2 beta下载:

            http://java.sun.com/products/j2mewtoolkit/download-2_2.html

   (安装J2MEWTK需要先安装J2SE SDK1.4.2及其以上版本,下载时需先注册一个账号)

2)  Sun Java Studio Mobility 6:是sun公司提供的一个J2ME 集成开发工具,使用该工具可方便的开发,调试 MIDlet程序。

下载:http://developers.sun.com/prodtech/javatools/jsmobility/downloads/index.html

3)   Borland Jbuilder

    搭建这个平台,我们必需要安装:JBUILDER 7 或 JBUILDER 8 ,BORLAND 的 MOBILESET 3.1。

4)  Java communith Edition 集成开发环境:Forte

(本人没有找到该工具的下载地址)

本人学习J2ME主要使用的是前两个sun公司提供的工具,其他的都没有涉及。

如果开发的MIDlet程序需要和J2EE关联则可能还需要安装 j2SDKEE1.3.1或其更高版本,或TOMCAT,WEBLOGIC,Apache Web等服务器工具。

j2SDKEE1.3.1下载:http://java.sun.com/j2ee/download.html

tomcat 下载:http://jakarta.apache.org/site/binindex.cgi

 

  J2ME编程入门:

   1)在移动设备上执行的MIDLet程序的都必须继承于MIDlet类,继承了该类的用户类是主程序,可在该程序可调用其他用户类。在Sun Java Studio Mobility 6中,新建一个MIDlet类时会自动生成如下代码:

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class Test extends MIDlet

{

    public void startApp() {    }

    public void pauseApp() {    }

    public void destroyApp(boolean unconditional) {    }

}

3)  一般的MIDlet程序还需要相应按键命令操作,这是还需要继承 CommandListener接口,继承了该接口后,就必须在类中实现public void commandAction(Command c, Displayable s)方法。下面给出一个一般的通用结构:

   public class TestMIDlet   extends MIDlet   implements CommandListener  { 

 

private Display mDisplay;

  private Form mMainForm;

    private StringItem mMessageItem;

    private Command mExitCommand, mConnectCommand;

 

    public TestMIDlet() {

     mMainForm = new Form("HitMIDlet");

     mMessageItem = new StringItem(null, "");

     mExitCommand = new Command("Exit", Command.EXIT, 0);

     mConnectCommand = new Command("Connect",Command.SCREEN, 0);

     mMainForm.append(mMessageItem);

     mMainForm.addCommand(mExitCommand);

     mMainForm.addCommand(mConnectCommand);

     mMainForm.setCommandListener(this);

      } 

public void startApp() {    

       mDisplay = Display.getDisplay(this);

       mDisplay.setCurrent(mMainForm);

 

  }

    public void pauseApp() {    }

public void destroyApp(boolean unconditional) {    }

 

  public void commandAction(Command c, Displayable s) {

      if (c == mExitCommand)

         notifyDestroyed();

      else if (c == mConnectCommand) {

          .. .. .. ..

     }

}

     Display对象指手机的显示屏,Form对象是显示的窗口,Command对象为命令对象。

startApp()方法是程序的入口。

     参见实例http://developers.sun.com/techtopics/mobility/midp/articles/tutorial2/

该实例实现了MIDlet程序和web服务器的servlet连接的功能。

4)  游戏编程

MIDP 2.0包括游戏api, 该api大大简化了2D游戏的编写,位于javax.microedition.lcdui.game包内。该包中包括5个类 :GameCanvas ,Layer ,LayerManager ,Sprite ,TiledLayer,这5个类提供了2个重要的特性:

     GameCanvas类提供了在一个游戏循环体内实现重画屏幕和响应输入的功能。

     Layer类使得创建复杂画面更高效。

具体使用方法可参看实例:http://developers.sun.com/techtopics/mobility/midp/articles/game/

5)  在上面的两个实例中提供了两种创建线程的方法,关于线程的使用可参看其api ,在java.lang包内。

   

6)  实例Java Smart Ticket Sample Application提供了j2EE和j2ME的整合,比较复杂但也代表了一个很大应用方向。但还需要很强的j2EE知识。该实例的说明和源代码可在此下载:http://java.sun.com/blueprints/code/index.html

参考文献

1)  sun公司提供的网站资料:http://java.sun.com/j2me/index.jsp

2)  J2ME的现状与发展:http://dev.youkuaiyun.com/develop/article/18/18870.shtm

 

 

J2ME程序开发基础详解与示例代码 J2ME是Java平台的一个子集,专门用于开发嵌入式设备和移动设备上的应用程序。J2ME(Java 2 Platform, Micro Edition)是一种用于开发移动设备上的Java应用程序的平台。本文对J2ME程序开发的基础知识进行了详细讲解,并提供了一个简单的计算器应用程序示例。以上示例演示了一个简单的计算器应用程序,用户可以输入两个数字并点击计算按钮,应用程序将计算结果显示在界面上。下面是一个简单的J2ME程序示例,演示了如何创建一个简单的计算器应用程序。三、J2ME程序开发步骤。 阅读详情

相关推荐

J2ME开发基础全接触:从入门到精通

本文还有配套的精品资源,点击获取 简介:Java 2 Micro Edition (J2ME) 是Java平台的一个子集,专为嵌入式系统和移动设备等物联网应用设计。本教程全面覆盖J2ME开发的基础知识,包括架构、开发环境、核心组件、用户界面、数据存储、网络编程、设备特性和性能优化等关键内容。开发者将学习如何利用MIDP和CLDC等技术,创建具有丰富功能的移动应用程序。本教程...

weixin_30798867的博客 1780

J2ME 百科

J2ME 百科 J2ME(Java2 microEdition)是一种高度优化的Java运行环境,针对市面上的大量消费类电子设备,例如Papers、cellularphones(蜂窝电话),screen-phones(可视电话?)、digital set-top boxes(数字机顶盒)、car navigationsystems(汽车导航系统)等等。 J2ME

sliven ' s blog 933

紫光同创国产FPGA学习之Fabric Debugger

文章从紫光同创参考书拷贝过来的。因为我用的时候,看了一下就会用了(纯粹只是会用了,默认和xilinx的一样),没有看教程。先更新点文本,后面在写程序。 一、      软件简介 Fabric Debugger是一款界面化的FPGA芯片调试工具,能够针对公司目前以及未来的FPGA芯片进行在线调试。本软件直接与JtagHub、DebugCore交互,能够实时的配置目标FPGA、设置触发条件并且观测结...

my_share的专栏 6388

J2ME开发入门(老java游戏)

一.文件下载 链接:https://pan.baidu.com/s/1JLTE8UagTVYNVNanQmhysA 提取码:iarr 1.WTK2.5.2,32位的 2.eclipse,老版本的,新版不知道什么问题,不能新建J2ME项目 3.eclipseme,J2ME插件 4.jdk1.8,32位,因为WTK只有32位 二.安装 1.jdk直接安装就行 2.WTK也能直接安装 3.eclipse直接解压出来就能运行 4.eclipseme 点击help - install new software 点

u011727804的博客 4700

青龙人形机器人硬件平台设计全解析:从构型到控制系统的实战指南

本文深度解析了青龙人形机器人硬件平台的设计全流程,从需求分析、构型设计到核心系统实现。文章详细阐述了其43个自由度的仿生构型、高动态性下肢设计、灵巧作业系统以及分布式控制架构,并探讨了旋转关节与直线关节等关键技术选型,为开发者提供了从理论到实践的完整硬件设计指南。

weixin_29248313的博客 381

LabVIEW QMH模板实战:从创建到错误处理的完整指南

本文提供LabVIEW QMH模板从创建到错误处理的完整实战指南。详细解析了队列消息处理器(QMH)作为LabVIEW核心设计模式如何实现任务解耦与异步通信,涵盖事件处理循环、消息处理循环的搭建、用户事件创建、队列引用管理、消息优先级控制以及健壮的错误处理机制,帮助开发者构建稳定、可维护的复杂应用程序。

white的博客 725

j2me study process list[小糊涂的灵感]

graphic / drawpixs network client class 转载于:https://www.cnblogs.com/cnsoft/archive/2004/10/19/54276.html

105

Quartus Prime 软件 USB-blaster 驱动安装失败【已解决】

一、安装步骤 1、将FPGA 开发板插入电脑时,未安装驱动的电脑会提示安装usb-Blaster驱动。Windows搜索框打开设备管理器,在“其他设备”下会发现黄色感叹号的“USB-Blaster”的设备驱动。 2、Quartus系列软件的安装目录下自带USB-blaster的驱动程序,右键更新驱动,选择驱动目录:(D:\intelFPGA\18.1\quartus\drivers\usb-blaster,文件位置和版本请按照自己安装的路径选择),点击Next开始安装。 3、安装成功,重启电脑即可使

adolphwang_909086的博客 6万+

JAVA study

一、 Java具有三个方面的内涵是一种编程语言是一套开发工具是一个运行环境二、(1)Java的开发环境的搭建1、 什么是JDK(Java Development Kit)开发工具,Javac及基础核心类运行环境, java及基础核心类2、 按Java的应用环境划分J2EE(Java 2 Platform Enterprise Edition )J2SE(Java 2 Platform St...

weixin_34348174的博客 371

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2015

搭建PX4开发系统(Ubuntu 22.04)

本文是《从零开始学 PX4 无人机开发》系列第二篇,适合开发者在 Ubuntu 系统下快速搭建 PX4 编译与仿真环境,支持 QGroundControl、Gazebo、MAVSDK 等完整工具链。

qq_15856721的博客 4198

Mophun & J2ME 的游戏开发之旅(二)

CASE STUDY:Mophun版贪吃蛇 for 索尼爱立信 T610(中国称为T618)本CASE 抛弃Mophun附带的Snake版本,作者以A to Z的方式进行整个CASE。Title:MyMSnakeVersion: 0.01采用语言: C设计概要:       在这个版本中,只体现游戏的逻辑,强调可玩性,忽略菜单设计,最高分存档,游戏进度存储读取等。整个游戏类似或者模仿Nokia82

好好学习,天天向上! 1420

基于STM32F407的摄像头(不带FIFO的OV7670)图像采集及LCD显示实验-笔记整理

硬件说明 STM32F4开发板 stm32f4系列的芯片处理的能力可以说非常强大了的,而且内部还自带有数字摄像头接口(DCMI),可以说stm32f407的核心板和不带FIFO的摄像头模块OV7670简直就是绝配! 我手上的这块张这个样子 (图片来源:某宝): F4系列的DCMI接口内部结构框图如下图3所示,具体的配置使用方式可以参考以下这篇博文:《stm32f4的数字摄像头接口(DCMI)使用》 这位博主大大已经很详细地介绍了DCMI接口的具体使用方法和原理,更重要的是里面还有接口的配置函数,虽然不完

LiangWF22的博客 2万+

study url

c++ http://www.cppprog.com/ http://www.zeroc.com/index.html   program open http://developer.ebay.com/developercenter/windows/ mobile tech htt

flyonok的专栏 1054

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

quic study

Opcionálissudo mnecho pingPythonimport osdef run():CLI(net)net.stop()run()):Cargocd quichecargo test。

hyl999的专栏 243

Camera2Demo

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

study java

目前 Java 可以说是产业界和学术界最热门的语言,许多读者都很急切想把 Java 学好。除非像电影「骇客帝国」(Matrix)一样能够把需要的专业技巧下载到脑海(女主角只花了几秒下载数据,就马上具备飞行员的技巧),或是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的。花时间,不打紧,就怕方法错误,事倍功半。我认为,学习 Java 包括了下列的范畴:  * 认识 Java

Fly my dream! 1182

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

vue-starter-study-node

参考文献:https://www.jianshu.com/p/c4a87e1b4ef7 1 vue 挂载点 模板 与实例 挂载点:Vue中的el属性所绑定的DOM节点,Vue只会处理挂载点内的内容; 模板:挂载点内部的内容都是模板 模板不仅仅可以放在挂载点内部,也可以放在Vue实例中,用template属性,写在template属性中; 实例:如:new Vue({……}) 2 实例...

最爱下雨天 371

Experience of Study Introduction to Algorithm(1)

This days I always study this book,because I want to study Algorithm and several tell me this book is very good.So I begin to read it.Unfortunately,I only find a English Version.But I still to read it

cherip的专栏 409

java面试题

Java面试题总结:基础及语法169道收集整理微信:答案来源收集与互联网,部分内容经供参考,代码全部为手写验证通过.1~201. Java跨平台原理(字节码文件、虚拟机)C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相应的编译器重新编译。Java源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字节码文件再解释成机器码运行。解释是通过Java虚拟机来执行的。字节码文件不面向任何具体平台,只面向虚拟机。Java虚拟机是可运行Java字节码文件的虚拟计算机。不同平台

weixin_41238665的博客 205

MeeGo平台(linux embeded) study

<br /><br />首先介绍下MeeGo平台的来历,MeeGo平台是基于Nokia的Maemo和Intel的Moblin两个平台整合而来的,其目的是专门为上网本和智能手机等便携设备提供类似便携电脑的用户体验。在Nokia称霸移动平台10几年以来,它终究还是意识到了智能手机才是未来移动平台发展的大趋势,这也要归功于Apple的iPhone OS和Google的Android,还有MTK山寨机对它的两面夹击。Nokia已经无路可走,MeeGo或许承载了它过多的期待。<br />犹记得03年初进入移动开发行业

Power of technology will free your body and spirit 549

《A comprehensive study of named entity recognition in Chinese clinical text》——笔记

ABSTRACTObjectiveThe goal of this study was to systematically investigate features and machine learning algorithms for NER in Chinese clinical text.Materials and methods来自协和医院的400份入院记录和400份出院小结,抽取四种实体,

u013319237的博客 1094

matlab边坡可靠性分析,响应面法与蒙特卡洛法边坡可靠性评价方法对比研究 Comparative study of methodologies between response surface me...

[1]谭晓慧,王建国,刘新荣.改进的响应面法及其在可靠度分析中的应用[J].岩石力学与工程学报,2005,24(S2):5874-5879.Tan Xiaohui,Wang Jianguo,Liu Xinrong.Improved response surface method and its application to reliability analysis[J].Journal of Ro...

weixin_26874745的博客 592

java study 01day 基本常识

一、常用的dos命令: dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd.. : 退回到上一级目录 cd/ : 退回到根目录 del : 删除文件 exit : 退出 dos命令行在dos中删除文件不走回收站;删除文件夹时,文件夹一定是空的。 练习回顾:Eg:cd abc\d\ (直接进入指定的目录) Eg:Ec

cfj912的专栏 325
上一篇: 武当归来
下一篇: 第一讲 Java语言概述
coolriver
博客等级 码龄26年 68粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值