java编程思想笔记

Think In Java《Java编程思想(第4版)》的中文版 _读书笔记:目录先行 @[TOC](Think In Java《Java编程思想(第4版)》的中文版 _读书笔记:目录先行) 读书计划:270天即9个月看完这本书。 目录 出版者的话 专家指导委员会 读者评论 关于《Thinking in C ++》 译者序 译者简介 前言 绪论 第1章 对象导论1 1.1抽象过程1 1.2每个对象都有一个接口2 1.3每个对象都提供服务4 1.4被隐藏的具体实现4 1.5复用具体实现... 阅读详情

第一章 对象导论

1,继承只覆盖父类的方法,不添加新方法,叫做纯粹替代(is-a关系);继承添加新方法,叫做非纯粹替代(is-like-a关系)。

2,多态:同一操作,作用于不同的对象,可以有不同的解释,产生不同的执行结果,叫做多态。通常表现为:在运行时,通过指向基类的引用来调用派生类的方法。

3,选择容器时,第一要考虑容器的接口和外部行为是否合适,第二要考虑所需操作的性能。

4,客户端编程:(1)脚本语言:javascript(与java无关) (2)applet/java web start(java编写)

服务器编程:(1)CGI程序(Perl/Python/c++编写)(2)servlet程序(java编写)

第二章 一切都是对象

1,java中,操作对象的标识符实际上都是对象的一个引用。

2,存储速度:寄存器 (java不能控制) > 堆栈(存储基本类型和对象引用) > 堆 (存储对象)  > 非RAM存储(存储流对象和持久化对象)

注:常量存储方式:一般直接存放于程序代码内部;在嵌入式系统中,存放于ROM中。

3,Java数组:基本类型的数组被初始化为0,其它类型被初始化为NULL。

4,如果一个变量在使用前未初始化,则java编译器会报错。

5,java.lang包是java程序默认导入的包,其中包括了java进行程序设计的基础类,包括object,math,class,包装器类,System类,线程类等。

第三章 操作符

1,Random rand = new Random(seed); 等价于Random rand = new Random();rand.setSeed(seed);

int j = rand.nextInt(100);

注:(1)设定seek会产生固定的随机数数列,如果没有设置,则会以当前时间为种子;

(2)rand.nextInt(100),中100为随机数的上限值,下限值为0;

2,++/- - 是递增或递减一个单位,不一定是加减1。

3,比较是否相等(1)基本类型用== (2)包装器类型和系统定义类,用.equals()(3)其他自定义类型,用覆写的equals()

注:判断对象引用是否为null,用==

4,直接常量表示:(1)八进制:前缀为0, (2)16进制:前缀为0x(3)二进制表示:Integer.toBinaryString()或Long.toBinaryString();(4)Long型:后缀用L,double型:后缀用D,float型:后缀用F

5,指数记数法举例:double exp = 47e47;

float ft = 1e-43f;注:后缀f必须有,编译器通常会将指数作为double类型处理

6,java在进行窄化转换时,默认是截尾操作,可以用Math.round()方法进行四舍五入操作(注:负数的.5是进行舍去操作,例如Math.round(-1.5) = -1,Math.round(-1.6) = -2)(Math.round()其实是先+0.5再进行floor()运算)

7,如果运算溢出,java编译器不会有任何的出错警告信息,这是java编译器的不足之处之一。

第四章 控制执行流程

1,Math.random()产生大于0小于1的double值

2,可以用Character中static isLowerCase()检查字符的大小写。

3,用键盘强制中断死循环:ctrl + c

4,foreach用于数组或者实现Iterable接口的对象遍历

第五章 初始化与清理

1,(1) tihs只能在方法的内部使用,表示调用该方法的那个对象

(2)如果为this添加了参数列表,则表示对符合该参数列表的某个构造器的调用

(3)static方法中不存在this

2,(1)正常的资源释放应该写在普通的代码中,例如:流的关闭

(2)垃圾回收器只有在资源耗尽的情况下才会自动工作

(3)终结处理protected void finalize(){} :垃圾回收器在工作前会先调用finalize()方法,所以可以用finalize()来验证对象的终结条件

(4)finalize()用来清理使用“本地方法 例如C++”所分配的资源

(5)System.gc()用来强制进行终结处理

3,(1)数组初始化:即使 Integer[] a = new Integer[100],a也只是代表一个引用数组,在调用数组中元素之前,必须初始化。

(2)Arrays.toString()方法,将数组转换为标准的数组字符串

(3)在数组初始化时,最后一个“,”可有可无,即:int[] a = {1,2,3,}也可以编译通过

4,可变参数列表格式:void f(int... args) 或 void g(Object... args)

5,枚举类型:public enum Spiciness{ NOT,MILD,MEDIUM,HOT,EFAMING }

注:enum类型中会自动加入static values()和ordinal()方法

第六章:访问权限控制

1,类的访问权限只有public和包访问权限

2,访问权限修饰符的作用域:

(1)public:包外

(2)protected:不同包的子类

(3)包访问权限:包内,类内

(4)private:类内

第七章 : 复用类

1.,组合和继承的选择判断:是否需要从新类向基类进行向上转型,如果不需要,则应该认真考虑是否需要继承。

2,(1)编译期常量:必须是基本数据类型,并且在定义时赋值

(2)对于基本数据类型,final使数值恒定不变;对于对象引用,final使引用恒定不变

(3)final static 修饰的基本数据类型一般用大写字母命令

(4)可以定义空的final,但在使用前必须初始化

(5)final参数仅可读,不可修改

(6)final类禁止继承,final类中的方法都隐式的指定为final,类中的域则不一定

第八章:多态

1,多态时通过后期绑定来实现的(除了static和 final方法外,其他方法都为后期绑定)

2,可以再类中定义一个dispose()函数用来销毁对象,销毁的顺序和初始化的顺序相反

3,编写构造器的一条有效准则:用尽可能简单的方法使对象进入正常状态,尽量避免调用非final方法(因为有可能会有多态发生)

第九章:接口

1,接口中的方法默认为 public,域默认为public final static

2,适配器模式:根据现有的接口,产生需要的接口

3,接口可以通过extends 来扩展多个接口

4,可以用接口来创建 常量组,但建议用enum(更强大)

5,在接口中定义的域不能为空,但可以用非常量表达式(eg:随机数)初始化

6,嵌套接口:为实现某个接口时,不需要实现嵌套在其内部的任何接口。而且,private接口不能在定义它的类之外被实现。

7,工厂方法:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到了子类。

第十章:内部类

1,(1)内部类似乎还只是 一种名字隐藏和组织代码的模式

(2)内部类拥有其外围类的所有元素的访问权

2,外部类名字.this:返回外部类对象的引用

3,要想创建外部类的对象,必须使用外部类的对象来创建内部类对象,例如:Outer.new inter()

4,如果创建嵌套类(静态内部类)的对象,则不需要外部类对象的引用。

5,内部类可以对外部类中的private域或方法直接修改或者调用,而外部类要访问内部类的方法则需要通过内部类的对象访问。

6,可以再方法和作用域中创建内部类,内部类的作用域仅等于创建其的域。

7,如果在方法中定义一个 匿名内部类,并且希望它使用一个在其外部定义的对象,那么编译器会要求其参数引用是final的。

8,在匿名内部类中,可以通过实例初始化来达到构造器的效果。

9,普通的内部类对象隐式的保存了一个引用,指向创建它的外部类对象 。

10,正常情况下 ,不能在接口中放置任何代码,但是嵌套类可以作为接口中的一部分,接口中的任何类都自动public和 static

11,内部类可以使多重继承更加完善

12,闭包 :闭包 是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。内部类是面向对象的闭包。

13,回调,回调的价值在于它的灵活性----可以再运行时动态决定要调用什么方法。

14,内部类不能被覆盖。

15,局部内部类不能有访问修饰符,因为它不是外围类的一部分,但是它可以访问当前代码块中的常量以及此外围类的所有成员。

16,局部内部类仅仅比匿名内部类好在了多了构造器。

第十一章:持有对象

1,@SuppressWarning(unchecked) “不受检查的异常”的警告信息应该被抑制

2,添加一组元素:(1)Arrays.asList()返回一个固定大小的list

(2)Collections.addAll()将所有指定元素添加到指定collection中,效率较高

(3)Collention.addAll()参数只能为Collection类型

3,Arrays.asList() (1)返回的list底层实现是 数组,因此不能改变尺寸

(2)此方法的限制是对所产生的list做了最理想的假设,所以有时候需要显式类型参数说明,P221详细讨论。

4,可以用Arrays.toString()来参数数组的可打印列表,而容器可直接打印

5,(1)HashSet/HashMap 是有利于快速获取元素

(2)TreeSet/TreeMap按照比较结果的升序保存对象

(3)LinkedHashSet/LinkedHashMap按照被添加的顺序保存对象

6,(1)ArrayList常用于随机访问元素,但是在list的中间插入和移除较慢

(2)LinkedList随机访问元素较慢,但插入和移除较快

7,Iterator的方法(1)hasNext() (2)next()(3)remove()

listIterator的方法(1)add() (2)hasNext()(3)hasPrevious() (4)next()

(5)nextIndex() (6)previoutIndex()(7)remove()(8)set()替换访问过的最后一个元素

8,stack和Queue可以用linkedList来作为底层实现。

9,Collentions.shuffle(List<?>list,Random knd)使用指定的随机源对列表进行置换。

10,java容器结构图P246

第12章:通过异常处理错误

1,所有标准异常类都有两个构造器,一个是默认无参构造器,另一个是接受一个字符串作为参数的构造器,以便能把相关信息放入异常对象中。

2,根类Throwable的直接子类Error和Exception

3,通常异常对象中仅有的信息就是异常信息,除此之外不包含任何有意义的内容

4,获得异常信息的4个方法,获得的信息量依此递增(1)getMessage() (2)getLocalizedMessage()(3)toString() (4)printStackTrace()

5,可以用for(StackTraceElement ste : e.getStackTrace())

System.out.println(ste.getMethodName())来访问栈信息

6,e.fillInStackTrace(); 返回一个Throwable,重新抛出异常

7,不需要在异常说明中抛出RuntimeException异常

8,在异常没有被当前异常处理程序捕获的情况下,异常处理机制也会在跳到更高一层的异常处理程序之前,执行finally子句

9,即使在try{}中有return子句,finally{}语句也会执行。

10,java异常的瑕疵为:会导致异常丢失,eg:在finally中包含return子句

限制:在覆盖方法的时候,只能抛出基类的异常说明里 列出的异常

11,(1)如果一个方法同时复写了基类方法,又实现了接口的方法,那么该方法所抛出的异常只能是这两个方法的异常的交集。

(2)异常限制对构造器不起作用,且子类的构造器的异常说明必须包含基类的构造器的异常说明

(3)派生类的构造器不能捕获基类构造器所抛出的异常

(4)派生类可以 不抛出任何异常

(5)派生类的方法的异常可以由基类的异常派生而来

第13章:字符串

1,字符串类的定义为:public final class String{}

2,格式化输出的格式:%[argument_index][flags][width][.pression]conversion

flags:对齐方式:默认是右对齐可以同过 -  改为左对齐

width最小尺寸

.pression最大尺寸

例子:printf("Row1 :  [%d %f]\n",x,y);

3,格式化输出方式(1)System.out.printf(); (2)System.out.format();(3)(new Formatter(System.out)).format();

4,类型转换修饰符 d十进制整数 cUnicode字符

b Boolean值s String字符串

f 浮点数(十进制整数)e浮点数(科学计数法)

x 十六进制整数h 十六进制散列码

5,String.format()是一个static方法,接受与Formatter.format()方法一样的参数,但返回一个string对象

6,正则表达式格式: StringpatternStr = ”...“;

Pattern p = Pattern.compile(patternStr);

Matcher m = p.matcher(str);

Matcher查找匹配的方法:(1)lookingAt()从开始匹配,成功则返回true

(2)find() 从字符串中按顺序查找 下一个匹配,成功则返回true

(3)matches()匹配整个字符串

(4)replaceAll()替换全部匹配

7,String类中内建的正则表达式的功能(1).matches() (2).split()(3).replaceAll() / .replaceFirst()

8,(1)Scanner的构造器可以接受任何类型的输入对象 

(2)Scanner的默认定界符为\s,可以通过useDelimiter(regex)修改定界符,用delimiter()方法返回 当前正在作为定界符使用的Pattern对象

9,用正则表达式扫描:Scanner.next(pattern);

MatchResult match = Scanner.match();

暂时先复习到第13章,以后的有空再复习!奋斗奋斗奋斗














【东华大学oj】找到最大数(一维数组->中等) 一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。 阅读详情

相关推荐

Unity适配Nintendo Switch平台开发

查看文档、下载SDK,都需要账号登录。

凝遥的笔记本 2102

@SuppressWarnings(unchecked)作用解释.doc

解释一:           屏蔽某些编译时的警告信息         在强制类型转换的时候编译器会给出警告        加上        程序代码        @SuppressWarnings("unchecked")        就不会警告了 解释二: 注释类型 当你的编码可能存在警告时,比如安全警告,可以用它来消除 api中是这样描述的 指示应该在注释元素(以及包...

我的IT技术杂谈 338

使用项目管理画布启动项目

许多人对商业模式画布并不陌生,它是亚历山大·奥斯特瓦德(Alexander Osterwalder)、伊夫·皮尼厄(Yves Pigneur)在《商业模式新生代》(Business Model Generation)中提出的一种用来描述商业模式、可视化商业模式、评估商业模式以及改变商业模式的通用语言。 在我们做敏捷软件项目inception(项目启动规划)的时候经常会用到商业画布,此时它的作用是帮助我们快速了解客户的业务、产品和市场,帮助客户梳理自己的资源、优势和盈利模式,总的来说,商业画布是一种简单实用的

IDEAL Garden 1224

注解 学习 -- @SuppressWarnings("unchecked")

@SuppressWarnings(“unchecked”)注解 背景 一般在项目中会出现红色的报错,这个是影响项目运行的,无法启动,会停在那里,而warning警告,黄色的虽然不是会让项目停止,但是却是不规范,留下隐患,而@suppresswarnings就是告诉编译器忽略警告。不用在编译完成后出现警告。 @SuppressWarnings(“”) @SuppressWarnings({}...

寿春 5367

人大金仓的‘影子表’sys_user:搞懂Schema优先级,告别字段不存在的报错

本文深入解析人大金仓数据库中‘影子表’sys_user的Schema优先级问题,帮助开发者解决字段不存在的报错。通过分析Schema搜索路径机制,提供四种解决方案,包括连接时指定Schema、动态调整搜索路径、永久修改用户设置和使用完全限定表名,确保查询准确无误。

weixin_30329623的博客 596

详解Σ-Δ型ADC拓扑结构的基本原理

现在,总环路滤波器的H(f)具有更大的滚降,Mod 2型的噪声传递函数具有40 dB/十倍频程的上升速率。同样,当正弦波输入为负满量程时,+1和–1之间的转换会减少,输出以–1为主。噪声传递函数是一个高通滤波器函数,提供噪声整形,在DC附近的较低频率,对量化噪声有很强的抑制。H(f)是环路滤波器的函数,定义噪声和信号的传递函数。Σ-Δ型ADC的噪底由热噪声决定,而不受量化噪声的限制。量化噪声为量化器的输入与输出之差。图5. Mod 1 Σ-Δ环路的线性模型(b),包括方程、滤波器、信号和噪声传递函数图。

qq_43416206的博客 1810

Java中@SuppressWarnings("unchecked")的作用

简介:java.lang.SuppressWarnings是J2SE5.0中标准的Annotation之一。可以标注在类、字段、方法、参数、构造方法,以及局部变量上。作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。使用:@SuppressWarnings(“”) @SuppressWarnings({}) @SuppressWarnings(value={})根据sun的官方文档描述...

u012994320的博客 13万+

【JS】自定义上传组件,文件上传与回显,自定义进度条显示(基于element-plus与axios)

公司是做B 端产品的,有sass平台也有源码交付的项目,最近开发了很多小系统,这里记录一下开发遇到的问题。 需要定制一个上传组件,要求可以自定义文件存储路径,自定义可上传的文件类型,限制文件大小等,并且提供基础的文件回显功能,例如上传一张图片到服务器指定目录的`/file`文件夹下面,并且实现可以查看预览的功能。

余浩的博客 1162

Java编程思想笔记目录

祝各位 程序???? 节日快乐???? ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020102311591445.gif#pic_center) 写在前面:   前阵子,小名“偷偷地”发了一批文章,是小名的一些读书笔记✍,那么为什么要把笔记发出来呢,嘻嘻,当然是小名的????不太灵光啦????但是吧,小名坐地铁或者走在大街上的时候,脑袋里总是会想一些有的没的,不排除会想一些Java基础的知识,时常联系不起来,就有可能别扭一整天。所以呢,把它发出来一方面是为了和大

小名同学 23万+

【人工智能时代】- 一键部署本地AI大模型

Ollama是一个开源项目,致力于简化大型语言模型(LLM)的本地部署过程。它允许用户在自己的硬件上运行和测试最新的语言模型,无需依赖云服务。Ollama提供了一个类似于OpenAI的API接口,使得开发者可以轻松地在自己的应用程序中集成大型语言模型。此外,Ollama WebUI为用户提供了一个友好的界面,用于管理和与模型进行交互。

xiaoli8748的专栏 2383

windows 配置 libxml2

路径:\libiconv-1.9.2-1-src.zip\src\libiconv\1.9.2\libiconv-1.9.2\include\。执行完后,在当前win32目录中会生成了一个bin.msvc目录,其中就有开发需要的libxml2.lib和libxml2.dll文件。将 libiconv.la 复制到 新建的 lib 目录,并将其改名为 iconv.lib。路径:libiconv-1.9.2-1-bin.zip\lib\。将如下的 iconv.h 复制到新建的 include 目录。

SHELLCODE_8BIT的博客 3886

Java编程思想 读书笔记一

Java编程思想 读书笔记一

wanglei9876开发人生 238

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

1315

看"java编程思想"笔记

这几天因为工作需要将"java编程思想"(三)再看了一遍,在看的过程中间将以前一些没有注意的细节做了下笔记,里面所写的很多是我自己归纳总结的,如果有不对,敬请指正.现在将其作为我的第一篇文章发表出来,后面的我会陆续发表出来,谢谢捧场.第二章1.        java之间都是引用(reference),通过new关键字创建对象2.        原始类型(primitive boole

"**绿茶"的专栏 1344

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

Java编程思想读书笔记_01

Java编程思想读书笔记_01

H_Misaya的博客 513

深度学习工具包 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编程思想》java复习笔记

《java编程思想》java复习笔记最近在看《java编程思想》,书挺厚的,但是里面确实有很多东西在学的时候没有注意,重新在读的过程中,找到很多之前没有注意到的东西,在此记录。第四章、控制执行流程 java中能否使用goto语句? goto在java中作为保留字,但是在语言中没有用它。但是java中也可以完成一些相应的操作。标签是后面跟有冒号的标识符,例如 ‘lable:’。标签可以和 b

mmrx的博客 662

VC中sqlite的使用

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

《java编程思想》读书笔记

从今天开始记录一下每天的读书笔记,书籍是《java编程思想》,作者是Brunce Eckel,希望能从中获取更多的知识,也希望与大家共勉。

Ivan2527的博客 73

《java编程思想》的一些笔记

我以前学习java只是学习java的一些语法,并没有对java这门语言进行全面的了解和认识,前段时间我认真的看了一下《大话设计模式》(现在忘得差不多了),对面向对象有了更深刻的了解。最近又在看java的圣经《java编程思想》,这是一本不可错过的好书,尽管里面有些地方的翻译不专业(如果能看英文版的,尽量去看),但是这里开始讲到java对内存的一些入门知识。打算这本书之后开始《深入理解 Java 虚...

包子骑士的博客 308

【读书笔记】Java编程思想 - Thinking In Java

Thinking In Java 读书笔记

qq_40690815的博客 754

Java编程思想笔记一:基本概念

写Java编程思想笔记系列的文章的初衷,是希望同小伙伴们一起探讨关于Java后端开发的进击之路。借鉴了很多业界公开的以及一些大神同事的经验,总结了关于学习Java的路线图,后续我会根据这张思维导图去不断丰富,同时会更新自己的学习笔记,感兴趣的伙伴可以一起探讨。

willingdays的博客 511

《Java编程思想》读书笔记(合集)——持续更新中

读一读经典的好书,《Java编程思想》

Arya的博客,专注后端领域 173

java编程思想读书笔记(四)

如图:

JayWRZZ的博客 553

java编程思想读书笔记(三)

如图

JayWRZZ的博客 511

《Java编程思想》读书笔记

除了@符号以外,@Test的定义很像一个空的接口。定义注解时,会需要一些元注解(meta-annotation),如@Target和@Retention。@Target用来定义你的注解将应用于什么地方(例如是一个方法或者一个域)。@Rectetion用来定义该注解在哪一个级别可用,在源代码中(SOURCE)、类文件中(CLASS)或者运行时(RUNTIME)。没有元素的注解称为标记注解,例如上例种的@Test。

lt_xiaodou的博客 668

OOP丨《Java编程思想》阅读笔记Chapter 1对象导论

面向对象编程课程学习之阅读笔记 《Java编程思想》第一章 对象导论

TheSumSt的经验站 856
上一篇: 泛型的约束与局限性
下一篇: 中缀表达式转换到后缀表达式(java实现)
拓-拓
博客等级 码龄12年 10粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值