Java虚拟机规范JavaSE8版,java虚拟机结构,了解一下

Java虚拟机规范 Java SE 8版 - Java虚拟机编译器 Java虚拟机规范JavaSE8版-Java虚拟机编译器 Java虚拟机是为支持Java编程语言而设计的。Oracle的JDK软件包括两部分内容:一 部分是将Java源代码编译成Java虚拟机的指令集的编译器,另一部分是用于实现Java虚拟 机的运行时环境。理解编译器是如何与Java虚拟机协同工作的,对编译器开发人员来说很有 好处,同样也有助于理解Java虚拟机本身。本章内容用于示意,并不属于规范... 阅读详情

#

class文件格式

编译后被java虚拟机所执行的代码使用了一种平台无关的二进制格式来表示,以文件的形式存储,这种格式称为
class文件格式。

数据类型

java虚拟机可以操作的数据类型可以分为两类:
    原始类型primitive type  ,也叫做基本类型
    引用类型reference type, 
编译器应当在编译期间尽最大努力完成可能的类型检查,使得在运行期间无需进行这些操作,
虚拟机的字节码指令本身就可以确定它的指令操作数的类型是什么,可以利用这种特性直接确定操作数的数值类型。
java虚拟机是直接支持对象的,这里的对象可以是指动态分配的某个类的实例,也可以指某个数组。

原始类型与值

原始类型包括:
数值类型numeric type:
整数类型 integr type
byte:8位有符号二进制补码整数 -128~127 -2^7~2^7-1
short:16位 -2^15~2^15-1
int:32位 -2^31~2^31-1
long:64位 -2^63~2^63-1
char:16位无符号整数表示的、指向基本多文种平面的(Basic Multilingual Plane,BMP)的Unicode码点,以utf-16, 0~65535

浮点类型
float :单精度浮点数集合中的元素
double:双精度浮点数集合中的元素

boolean:
编译后都是用java虚拟机中的int数据类型来代替

returnAddress:
会被java虚拟机的jsr、ret和jsr_w指令使用

引用类型

引用类型:
类类型:class type
数组类型:array type
接口类型:interface type

运行时数据区

pc寄存器:

每一条java虚拟机线程都有自己的pc(program counter)寄存器
任意时刻,一条java虚拟机线程只会执行一个方法的代码,
如果不是native方法,寄存器保存java虚拟机正在执行的字节码指令的地址,
如果是native,pc寄存器的值是undefined
pc寄存器的容量至少应当能保存一个returnAddress类型的数据或平台相关的本地指针的值

java虚拟机栈

java virtual machine stack
每个vm线程都有属于自己私有的栈
这个栈与线程同时创建
用于存储栈帧 Frame
用于存储局部变量与一些尚未计算好的结果
栈帧可以在堆中分配
java虚拟机栈所使用的内存不需要保证是连续的

线程请求分配的栈容量超过vm允许的最大容量,就会出现StackOverflowError
动态扩展,内存不足时,就会出现OutOfMemoryError

java堆

heap是可供各个线程共享的运行时内存区域,
是所有类实例和数组对象分配内存的区域
堆在vm启动的时候就创建了
存储了垃圾回收器garbage collector垃圾收集器所管理的各种对象

方法区

method 可供各个线程共享的运行时内存区域
存储了每一个类的结构信息,
方法区在vm启动的时候创建的

运行时常量池

runtime constant pool
是class文件中每个类或接口的常量池表的运行时表示形式
每一个运行时常量池都在java虚拟机的方法区中分配
在加载类和接口到vm后,就创建对应的运行时常量池

本地方法栈

vm实现可能会用到传统的栈(c stack)来支持native方法(java以外的其他语言编写的方法)的执行,这个栈就是native method stack

本地方法栈实现可以是固定大小或者根据计算来动态扩展和收缩
如果采用固定大小的本地方法栈,每个线程可以在创建栈的时候独立选定

栈帧

用来存储数据和部分过程结果的数据结构
同时也用来处理动态链接 dynamic 、方法返回值和异常分派 dispatch exception
栈帧随着方法调用而创建,方法结束而销毁
栈帧的存储空间是由创建它的线程分配在vm栈中
每一个栈帧都有自己的本地变量表、操作数栈、和指向当前方法所属的类的运行时常量池的引用

本地变量表和操作数栈的容量是在编译期确定的

栈帧是线程本地私有的数据
不kennel在一个栈帧之中引用另外一个线程的栈帧

局部变量表

每个栈帧都包含一组称为局部变量表的变量列表
栈帧中局部变量表的长度有编译期决定
long和double的数据占用两个连续的局部变量
局部变量使用索引来进行定位访问

操作数栈

每个栈帧都包含一个称为操作数栈的后进先出栈,
栈帧中操作数栈的最大深度由编译期决定
一个long或者double类型的数据会占用两个单位的栈深度

动态链接

每个栈帧内部都包含一个指向当前方法所在类型的运行时常量池的引用,以便对当前方法的代码实现动态链接
一个方法若要调用其他方法,或访问成员变量,则需要通过符号引用来表示
动态链接的作用就是将这些以符号引用所表示的方法转换为对实际方法的直接引用
类加载的过程中将要解析尚未被解析的符号引用,并且将对变量的访问转化为变量在成都运行时,位于存储结构中的正确偏移量。

方法调用正常完成

方法调用异常完成

特殊方法

java中的构造器(jls 8.8)是一个名为的特殊实例初始化方法的形式出现的

一个类或者接口最多可以包含不超过一个类或接口的初始化方法,类或者接口就是通过这个方法完成初始化的

异常

vm里面的异常使用的是Throwable或其子类的实例来表示,
抛异常的本质实际上是程序控制权的一种即时的、非局部的转换——从异常抛出的地方转换至处理异常的地方

异常出现的原因:
athrow字节码指令被执行

vm同步检测到程序发生了非正常的执行情况,这时异常必将紧接着在发生非正常执行情况的字节码指令之后抛出,而不会在执行程序的过程中随时抛出

其他原因
调用了Thread或者ThreadGroup的stop方法
java虚拟机实现发生了内部错误

字节码指令集

vm的指令由一个字节长度的、代表着某种特定操作含义的操作码opcode以及跟随其后的零至多个代表此操作所需参数的操作数operand所构成
虚拟机中许多指令并不包含操作数,只有一个操作码

每个操作码只能由一个字节长度,所以直接限制了整个指令集的最大数量
字节码无法超过256种的限制就来源于此

操作码助记符
i代表int类型的数据操作
l long
s short
b byte
c char
f float
d double
a reference










类型转换指令

可以在两种java虚拟机数值类型之间相互转换
宽化类型转换是不会因为超过目标类型最大值而丢失信息的, 小转大
窄化类型转换,可能会丢失精度

对象的创建与操作

操作数栈管理指令

控制转移指令


字节码

CA FE BA BE                                      /* u4 magic */
00 00                                            /* u2 minor_version=0 */
00 34                                            /* u2 major_version=52 */
                                                 /* java 1.8 */

指令集

        /* L588 */
        0 aload_0;
        1 aload_1;
        2 invokeinterface 1 2;    /* java.lang.Object get(java.lang.Object arg0) */
        7 dup;
        8 astore_3;
        9 ifnonnull 13;
        12 aload_0;
java虚拟机规范JavaSE8中文版 java虚拟机规范JavaSE8中文版 java虚拟机规范JavaSE8中文版 java虚拟机规范JavaSE8中文版 java虚拟机规范JavaSE8中文版 java虚拟机规范JavaSE8中文版百分百保证可用百度云资源。请相信我! 立即下载

相关推荐

Java虚拟机规范-(Java SE 8版)

Java虚拟机规范-(Java SE 8版) Java虚拟机规范-(Java SE 8版) Java虚拟机规范-(Java SE 8版)

java language specification Java SE 8 Edition 中文版(第一章)

java 编程语言规范(第八版第一章) 这几天在看 java 虚拟机规范,发现java编程语言规范目前还没有中文版,试着翻译一下,如果错误 欢迎批评指正。我会持续更新(beijin9152@163.com 转载请注明出处。谢谢)。 第一章 概述 java 是一种通用,并发,基于类且面向对象的编程语言。它设计的力求简单使得编程者可以清楚编写。java语言借鉴了c和c++但也有很大的区别,

edwardqiang的博客 6506

java虚拟机规范SE 8 高清完整中文版,带目录!百度云下载,绝对真材实料!

java虚拟机规范SE 8 高清完整中文版,带目录!百度云下载,绝对真材实料!紫薯紫薯紫薯紫薯紫薯紫薯紫薯紫薯紫薯紫薯紫薯紫薯

Java虚拟机规范(Java SE 8) 第一章

用户冲浪所使用的设备并不是其中的关键,它们仅仅是一种媒介,无论及其的性能如何,无论使用高速网络还是慢速的modem(调制解调器),用户总能看到并听到同样的内容。Java虚拟机是整个Java平台的基石,是Java技术用以实现硬件无关与操作系统无关的关键部分,是Java语言生成极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的屏障。只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

2401_83621918的博客 749

Java虚拟机规范SE8版

Java虚拟机规范SE8版Java虚拟机规范SE8版Java虚拟机规范SE8版

Java虚拟机规范_SE8版

Java虚拟机规范_SE8版 链接: https://pan.baidu.com/s/1dOSFmu

Java虚拟机 - Oracle Java语言与虚拟机规范

jvm oracle说明文档: “最好的学习资料,是技术官网。” Java Language and Virtual Machine Specifications (译:Java语言与虚拟机规范) https://docs.oracle.com/javase/specs/index.html The Java Virtual Machine Specification, Java SE 8 Edition (译:Java虚拟机规范,JavaSE8版) HTML | PDF HTML:https://doc

dnbug Blog 351

Java虚拟机规范 Java SE 8版-带目录-pdf

Java虚拟机规范 Java SE 8版-带目录-pdf,本书完整而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,还讲述了为支持类型注解及方法参数注解而对class文件格式所做的扩展,并阐明了class文件中各属性的含义,以及字节码验证的规则。

java中javaSE与javaEE的区别(适合新人)

这些文章看起来非常的脑残,甚至是无知,但是毫不谦虚的说,在我初学java的时候,甚至学了一年半载的时候,这两个东西我都不知道是什么东西。 所以这文章是为了让初学者更好的在大脑中构建这个编程的思想, 1,javaSE是什么? 怎么说吧,可以理解为javaSE是java的基石,如果将java程序想象成一座高楼大厦,那么javaSE就是地基。 官方的解释: Java SE(Java Platfor...

qq_41566219的博客 11万+

Java虚拟机规范jdk8版

别人那里下载的,自己留个备份以后慢慢看。 《Java虚拟机规范(Java SE 8版)英文版》由Java虚拟机技术创建人撰写。《Java虚拟机规范(Java SE 8版)英文版》全面而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。《Java虚拟机规范(Java SE 8版)英文版》中完整地讲述了由Java SE 8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,以及为支持类型注解及方法参数注解而对class文件格式所做的扩展等,还阐明了class文件中各属性的含义及字节码验证的规则。, 《Java 虚拟机规范(Java SE 8版)英文版》基于Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的极佳选择

官方java8规范-jls8.rar

The Java Language Specification Java SE 8 Edition, JDK8规范, Java8规范

Java规范请求(JSR)、Java语言规范(jls)与Java虚拟机规范(jvms)

JSR Java语言规范 Java虚拟机规范

tobrainto 1163

CSV文件输入到simulink中

将示波器波形和数据CSV文件保存下来进行数据分析。将波形绘制到simulink中

yay0923的博客 5326

Java 虚拟机规范 (Java SE 7 版) 下载

译者序 从1999年4月出版的《Java虚拟机规范(第二版)》至今,已经超过12年,虽然此规范在 JDK 5发布的时候作了较大的更新,但却始终没有发布完整的规范。在今年6月28 日,最新的 《Java虚拟机规范(Java SE 7版)》终于完成并在7月份正式发布。对于想了解Java虚拟机的程序员来说,《Java虚拟机规范》是必须阅读的,对于想深入了解Java语言细节的程序员, 阅读《Java虚

backtracker的专栏 1226

AGX Orin设计-外围电路设计之一

AGX ORIN是英伟达Jetson系列中算力规格最高端的模组,其高达200TOPS/275TOPS的算力可以为各类场景提供澎湃的算力支持,本篇文章针对AGX ORIN的常规外围电路设计做分析描述。

zhiyuchenkeji的博客 4477

superpowers-中文使用说明

《obra/superpowers:AI辅助开发的流程纪律工具集》 摘要:obra/superpowers是一套面向AI辅助软件开发的系统化流程规范,包含14个核心技能,强调"先理解后行动"的纪律性开发方法。该工具集定义了从头脑风暴到代码评审的完整工作流,要求严格遵循测试驱动开发、子代理隔离执行等原则。核心特色包括:1) 任何实现前必须完成设计和评审;2) 采用红-绿-重构的TDD循环;3) 复杂任务通过独立子代理串行处理;4) 所有产出需经过双重验证(规格合规+代码质量)。该工具集特别注重文档化和可验证性

qq_22786633的博客 765

Java8 虚拟机 规范

Java SE 8 虚拟机 规范下载 百度链接:https://pan.baidu.com/s/1j3VvoTO00-z7EKuXnTDhig提取码:4j7z 阿里云:https://www.aliyundrive.com/s/PSMRqEYHtq2

weixin_46772047的博客 1210

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader远程升级(含完整代码解析)

本文详细介绍了基于STM32F103VET6与W25Q64外部Flash的Bootloader远程升级实现方案,包含硬件选型、存储分区策略、双校验机制及完整代码解析。通过SPI接口实现固件存储与升级,适用于物联网设备开发,提升OTA功能可靠性。

weixin_42620340的博客 357

java 语言规范

随着7月28日,也就是Java SE 7预定的发布日期越来越近,相关的一些规范也已得到或即将得到批准。  这里主要关注的是下面几个规范:  JSR 336: Java™ SE 7 Release Contents  转载:http://rednaxelafx.iteye.com/blog/1081626 JSR 901: Java™ Language Specificati

shuhuai007的专栏 3085

卫星通信链路预算实战:从EIRP到Eb/N0的完整计算指南(含Excel模板)

本文提供了一份卫星通信链路预算的实战指南,详细解析了从EIRP到Eb/N0的完整计算流程。文章重点对比了C波段与Ku波段在应对降雨衰减等动态因素时的不同策略,并分享了包含核心公式的Excel模板,帮助工程师将理论转化为可执行的系统设计依据。

weixin_29230773的博客 534

描边盛开火玫瑰

python描边盛开火玫瑰 代码如下 import turtle as t t.setup(800,800) t.hideturtle() t.speed(11) t.penup() t.goto(50,-450) t.pensize(5) t.pencolor("black") t.seth(140) t.pendown() t.speed(10) t.circle(-300,60) t.fd(100) #jiaodu80 #1ye t.seth(10) t.fd(50) t.fillcolor("gr

weixin_50973371的博客 2062

深入理解java虚拟机 (三) 第二版

参考资料 本书名为“深人理解Java虚拟机”,但要想深人理解虚拟机,仅凭- -本书肯定是远远不够的,读者可以通过以下信息找到更多关于Java虚拟机方面的资料。我在写作此书的时候,也从下面这些参考资料中获得了很大的帮助。. (1)书籍 口《The Java Virtual Machine Specification, Java SE 7 Edition》日要学习虚拟机,无论如何都必须掌握“Java...

ywl470812087的博客 10万+

基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析

第二步,对于每一个街道i,给定空间距离阈值d0,便形成另一个空间作用域,同样对于落在空间作用域内的每块绿地l的供给比率(Rl)利用高斯方程赋以权重,然后对这些加权后的供给比率(Rl)进行加和,便得到每个街道i的绿地可达性Ai。图3与图4是高斯两步移动搜索法的示例。在图3中,以d0为阈值,有1、2、3 三个街道中心点落在了绿地a的空间作用域内。同样在图4中,以d0为阈值,有a、c两个绿地中心点落在了街道2的空间作用域内,根据公式(3),对a、c高斯方程加权后的供需比率进行累加,便得到了街道2 的绿地可达性。

2301_77310370的博客 2404

JavaSE 12 规范草案

JSR 386 – JavaSE 12 规范草案 吐槽 自从 Java 9 开始,JCP 开始了6个月一个大版本的更新… 作为一名 Java 工程师,我心里简直 ---- 喵喵喵(此处含有屏蔽字段) 上个月正式发布了 Java 11, 并开始进行日常 18 个月的安全以及补充更新维护,并提出了 Java 12 的早期版本的规范草案,也就是差不多 6 个月后,Java 12 就发布了… 并且代码实现...

一步一个脚印 1801

YOLO26涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLO26有效涨点

本文提出LSFB差分双维注意融合模块,用于改进YOLO26目标检测模型。该模块通过融合-分离交替策略和差分注意力机制,有效提升模型在复杂场景下的特征分离能力,特别是在处理重叠物体或反射干扰时表现优异。LSFB采用双向投影、双维注意力计算和跨流减法算子,实现特征共享与独立提取的平衡。实验表明,该模块能显著减少特征混淆,提高检测精度和鲁棒性。文章还详细介绍了模块实现的核心代码、YAML配置文件修改方法以及三种改进方案,为YOLO26模型性能提升提供了创新解决方案。

Ai缝合怪、助力小伙伴高效发论文 326

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

java虚拟机规范(se8)——java虚拟机结构(一)

本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第二章 虚拟机结构   本文档描述了一个抽象的虚拟机规范,并不描述某个特定的虚拟机实现。   要正确实现一个Java虚拟机,你只需要能够读取class文件的格式并正确执行其中指定的操作。具体的实现并不是java虚拟机规范的一部分,因为它们会限制实现者的创造...

weixin_30682415的博客 233

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 《kali linux 渗透测试技术详解》了解一下
下一篇: java线程,了解一下
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值