package用法

InSAR图像配准:从像素级到亚像素级的精度提升策略 本文深入探讨了InSAR图像配准技术,从像素级到亚像素级的精度提升策略。通过分析最大频谱法和相干系数法的适用场景,结合频域补零插值和四叉树分块等高级技术,实现1/8像素级的高精度配准。文章还提供了实用的精度验证方法和常见问题排查指南,为InSAR数据处理提供全面解决方案。 阅读详情
java应用程序文件
这个说法是我自己抽象出来的,指的是一般的组织在package中的所有文件。
大体分成这三种:
1,java程序源文件,扩展名为.java。
2,编译好的java类文件,扩展名为.class。
3,其他文件,除了以上的,就是资源文件。
例如图片文件,xml文件,mp3文件
等等等等都可以组织在package之中。(你当然也可以把一部电影放在package里面,当然
不提倡这样做)

package干吗用?
package就是组织文件的一种方式。
最大的作用就是组织java类文件。
成千上万的class文件,总难免重名吧,即便不重名,那么多你记得住么?当然要分门别类
的组织起来方便你随时取用吧,这个就是package最大的作用。

package是个什么东西?
package本身是一个比较抽象的逻辑概念,它的宗旨是将东西组织在一棵树里面,就好像
linux的文件系统一样,它有一个根,然后从根开始有目录和文件,然后目录中也可以有
目录。而实现的时候是怎样的呢?是利用文件系统的目录结构或者利用压缩文件中的目录
结构来组织的。

package怎么实现的?
首先讲其最重要的应用——组织源代码。
我们知道java源代码的基本单元是一个.java文本文件。
一个.java文件可以包含一个public类和无数包级类,
默认什么访问修饰都没有的类就是一个包级类。这种类只能在本package中使用。
当然了,类当中还可以有类,名唤内隐类,内隐类的访问修饰就可以是protected
或者甚至是private了。
好,那么何谓本package呢?
当你在源代码的最开头(当然,注释可以放在更开头的位置)不写package语句的话,那么
当前编译单元中的所有编译出来的类就只能够放在package的"/"上,这种package我们叫做
default package。一般我们写个HelloWorld或者简单调几个api实现个小功能的话,一般
采用这种“不打包”似的default package就可以了。
但是,当你的类开始泛滥起来的时候,你就必须考虑给类打个包放在某个package中了。
方法很简单,在所有代码开始之前写一句
package 包名;
即可。
包名是用"."间隔的字符串,一般能够当作文件名的字符串就能用到这里来。
比如
package aaa.bbb.ccc;
意味着这个编译单元所编译出来的class都必须放在/aaa/bbb/ccc这个目录之下。
否则这种类就无法正常使用,正是这种机制保证了类的严格组织。
实际上,当你在编译一些有package语句的编译单元的时候,如果你使用的是命令行的话,
应该使用-d参数让编译器自己生成目录结构,实际上你的.java就应该放在这种目录结构
之中。我举个非常简单的例子,有个人写了这么两个.java文件。
/*   A.java */
package aaa.bbb.ccc;
public class A{
    B b=new B();
}
/* B.java*/
package aaa.bbb.ccc;
public class B{}
然后这个人就把这两个文件就放在当前目录之下,然后javac A.java,
然后傻眼。

说找不到B,怎么找不到呢?
为什么找不到呢,不是在一个package里面吗?

对,是在一个package里面,但是B.java必须放在当前目录/aaa/bbb/ccc下面才可用,
当javac编译A.java的时候,它发现当前所在的包是aaa.bbb.ccc,然后需要一个B类,
没有B.class,就要去找B.java,而B.java的package语句和自己所在目录结构不符,没法
使用,所以就傻眼了。

这个人就知道了把B.java放到当前目录/aaa/bbb/ccc里面,嘿,编译通过了。
没错,生成了A.class,但是A.class还是不可用的,因为它不在它应该在的地方。
我们又必须将它放到它应该在的地方,它才能好好运作。

那你说我把A.java也放在当前目录/aaa/bbb/ccc里面,然后
javac aaa.bbb.ccc.A.java
漂亮吧?
不行,为什么?因为javac接受的参数是一个文件系统的文件名,javac命令行中的参数
只能是一个完整的路径名。
那我把A.java放在当前目录/aaa/bbb/ccc里面,然后
javac aaa/bbb/ccc/A.java
这下好了吧,恩,差不多,但是生成的class还是直接丢在了源代码目录之下

最好是
javac -d bin aaa/bbb/ccc/A.java
这样就会在当前目录的bin目录下看到完整的目录结构以及放置妥当的class文件。

package与classpath不得不说的事
讲了半天还是觉得不太清楚package的"/"到底在哪里,在当前目录吗?
如果不知道package的"/"在哪里,那那些package中的文件在哪里就更无从得知了。
回答很简单,package的"/"在classpath中。
头痛了,package没有搞懂的,classpath一般也不会很懂。
没事,classpath说白了就是一堆path,这些该死的path有的指向一个目录,有的指向一个
文件(只能是zip或者jar两种,当然更保险的话还是用jar比较好)。
对于java虚拟机而言,它并不想过问这些path的八卦,它所做的是一视同仁!
它要的是所有这些path中的内容,对,对它而言,它不在乎内容是来自一个目录还是来自
一个文件,总而言之,所有的这些东西在他眼里都一样。就好像它空出一块地方,把所有
的文件解压,把所有的目录中的内容保留目录结构的送入相应位置,形成一套它自己感
兴趣的package组织方式。它要的就是这种方式来访问。
所以我可以在a.jar中有一个目录结构aaa/bbb/ccc/A.class,然后在b.jar中也有一个同样
的目录结构aaa/bbb/ccc/B.class。当我把这两个文件都放在classpath中的时候,
对虚拟机而言,这个A.class和这个B.class就是放在同一个package中的。
前面的那个实践也透视了这一点,实际上编译A.java的时候,是在classpath中寻找class
文件的,找不到,则会在sourcepath中寻找其源代码文件(不设定的话,sourcepath就是等
于classpath),当我们把B.java放在当前目录中合适的目录结构中的时候,它就会找到
这个文件并将它编译,然后进行使用。因为当前目录"."是在classpath中的。
原则就是,对java而言,它是忽略文件系统细节的,它要求的只是自己的classpath
中按照约定存放的资源。

(以上classpath对应的classloader是app classloader)

import干吗用的?
java几乎所有的api都是用java语言本身写成的,是的,那些你所经常使用的String,
HashSet,HashMap等等这些类都是用java语言写成的。
这些类的制作是我们也可以来做的事情,他们同样是写出一个个java文件,打上不同的
package,然后编译好,最后压缩一下,成为jre里面的dt.jar之类的文件,变成了我们常
常调用的库。
有的人以为,当我们写下import java.util.*;之前,我们的这些库就是“不可达”的,
而当我们写下了import java.util.*之后,我们所需要的那个库文件就会被某种不知道的
机制加入到我们的工程。
错!这些人是纯粹打死不看书的想当然类型,只在乎自己的意象,不在乎其所以然。

不管你写还是不写import语句,对当前外部的编译和执行环境都不会有任何的影响。
即便你不写import java.util.*;
你照样可以用java.util.HashMap来调用系统api,根本不用做更多的事情。
这里我不得不再提一次,不要把dt.jar放到CLASSPATH环境变量中,它已经在classpath中
了,而且此举常常让初学者丢掉了默认在classpath中的"."当前目录,让他们一番热情学
java写helloworld的火焰被一盆水扑灭。

import有啥用的呢?
它只不过是一种让你少打点字的方法,就跟c++的名称空间的using语句功能一样,就是暴
露那个package下面所有的类,写代码的时候就可以直接写类名,而不用写下完整的
包名.类名,仅此而已。
不得不提的是,*仅仅代表类名,不负责以下更深层次中各级目录中的东西。
import java.*;实际上没有暴露任何类,因为没有类是打在这个包里面的。它没有
暴露java.util.*,也没有暴露java.sql.*等等,它仅仅暴露了java目录下面所有的类。

打包成jar文件
一般的打包成jar文件,除了将目录结构压缩存储在一个zip格式但是扩展名比较畸形的
文件中之外没有做任何事情。
jar文件可以用任何能够解压zip的工具来解压,如果你讨厌使用jar命令行,你甚至可以
直接使用winrar来压缩,然后改个名字即可。
当然了,jar文件也有别的用处,比如“可直接执行的jar”。
“可直接执行的jar”跟“不可直接执行的jar”的区别仅仅在于它多了一个配置文件在
jar文件中,这个文件中指出了一个完整的类名,告诉java.exe或者javaw.exe,main方法
这个类里面而已。
欲知道更多关于jar文件的用法,请参考精华区。



贴二——package从实践到理论:


package就是catalog,所谓目录册。
什么是目录册呢?比较抽象的说,就是让你快速定位一个东西的册子。
比如电话簿,比如字典,比如搜索引擎。
java中,主要是class文件,当然也可以是任何别的文件,就是通过package来组织的。
package有点类似一个虚拟的文件系统,可以将所有的东西组织在树形结构之中。
这有一个根"/",也就是我们什么package语句都不写的情况下class文件所应该处的位置。
直接赤裸裸放在classpath中的东西都是放在"/"下面,然后如果有package语句,则这个
class文件或者java源代码文件都要放在和package语句中包名对应的目录结构之中。


1,什么都别说,先跟着我来做一把
我们先找一个目录,比如C:\myjob
然后我们建立两个目录,一个叫做src,一个叫做bin
C:\myjob>md src
C:\myjob>md bin
C:\myjob>dir
驱动器 C 中的卷是 LIGHTNING
卷的序列号是 3DD1-83D9
C:\myjob 的目录
2005-12-25  14:33    <DIR>          .
2005-12-25  14:33    <DIR>          ..
2005-12-25  14:34    <DIR>          src
2005-12-25  14:34    <DIR>          bin
               0 个文件              0 字节
               4 个目录    305,123,328 可用字节
C:\myjob>
然后我们在src目录中去写程序
C:\myjob>cd src
C:\myjob\src>
我们写这么4个java文件
////A.java
package com.lightning;
public class A{
{System.out.println("com.lightning.A");}
}
////B.java
package com.lightning;
public class B{
{System.out.println("com.lightning.B");}
}
////C.java
package com;
public class C{
{System.out.println("com.C");}
}

////Test.java
package net.test;
import com.lightning.*;
import com.*;
public class Test{
public static void main(String[] args)
{
        new A();new B();new C();
        System.out.println("net.test.Test");
}
}
写好之后就是这样

C:\myjob\src>dir
驱动器 C 中的卷是 LIGHTNING
卷的序列号是 3DD1-83D9

C:\myjob\src 的目录

2005-12-25  14:34    <DIR>          .
2005-12-25  14:34    <DIR>          ..
2005-12-25  14:39                86 A.java
2005-12-25  14:40                86 B.java
2005-12-25  14:42               194 Test.java
2005-12-25  14:43                68 C.java
               4 个文件            434 字节
               2 个目录    305,106,944 可用字节

然后我们建立com目录,com\lightning\目录,net\test\目录
C:\myjob\src>md com
C:\myjob\src>md com\lightning
C:\myjob\src>md net\test\
我们将Test.java放入net\test\中去
将A.java,B.java放入com\lightning\中去
将C.java放入com\中去
C:\myjob\src>move Test.java net\test\
C:\myjob\src>move A.java com\lightning\
C:\myjob\src>move B.java com\lightning\
C:\myjob\src>move C.java com\

然后我们在c:\myjobs中发令:
C:\myjob\src>cd ..
C:\myjob>javac -sourcepath src -d bin src\net\test\Test.java
然后我们看看bin目录中多了什么
C:\myjob>dir bin /s
驱动器 C 中的卷是 LIGHTNING
卷的序列号是 3DD1-83D9

C:\myjob\bin 的目录

2005-12-25  14:34    <DIR>          .
2005-12-25  14:34    <DIR>          ..
2005-12-25  14:46    <DIR>          net
2005-12-25  14:46    <DIR>          com
               0 个文件              0 字节

C:\myjob\bin\net 的目录

2005-12-25  14:46    <DIR>          .
2005-12-25  14:46    <DIR>          ..
2005-12-25  14:46    <DIR>          test
               0 个文件              0 字节

C:\myjob\bin\net\test 的目录

2005-12-25  14:46    <DIR>          .
2005-12-25  14:46    <DIR>          ..
2005-12-25  14:46               520 Test.class
               1 个文件            520 字节

C:\myjob\bin\com 的目录

2005-12-25  14:46    <DIR>          .
2005-12-25  14:46    <DIR>          ..
2005-12-25  14:46    <DIR>          lightning
2005-12-25  14:46               338 C.class
               1 个文件            338 字节

C:\myjob\bin\com\lightning 的目录

2005-12-25  14:46    <DIR>          .
2005-12-25  14:46    <DIR>          ..
2005-12-25  14:46               354 A.class
2005-12-25  14:46               354 B.class
               2 个文件            708 字节

     所列文件总数:
               4 个文件          1,566 字节
              14 个目录    305,057,792 可用字节

然后我们执行,同样在c:\myjobs\下发令
C:\myjob>java -cp bin net.test.Test
com.lightning.A
com.lightning.B
com.C
net.test.Test

2,从实践到理论

刚才我用一个非常简单但是非常完整的例子给大家演示了java的package机制。
为什么以前脑海里面那么简单的javac会搞得这么复杂呢?

实际上它本就这么复杂,
并不是一个.java,一行javac一个当前目录中的class这么简单。

首先我要打破一些东西,然后才好建立一些东西。
javac并非只是给一个.java编译一个class的。javac自带有make机制,也就是说,如果在
javac的参数中java文件使用到的任何类,javac首先会去找寻这个类的class文件存在与否
,如果不存在,就会在sourcepath中找寻源代码文件来编译。

什么是sourcepath呢?sourcepath是javac的一个参数,如果你不加指定,那么sourcepath
就是classpath。

比如我们装好jdk之后,我说过不要设定classpath环境变量,因为大部分人一旦设定了
classpath,不是多此一举把什么dt.jar放进去。(我可以好好打击你一下,告诉你一个可
悲的事实——jre永远不会从你这个classpath中去寻找dt.jar。你完全是徒劳的!)就是
把"."搞不见了,搞得是冷水一盆盆的往自己身上泼,脑袋一点点的涨大。

不要设!classpath没有你想象中那么普适和强大,它只是命令行的简化替代品。
你不设的话它就是"."。


回到sourcepath,sourcepath指的是你源代码树的存放地点。
为什么是源代码树?而不是一个目录的平板源代码呢?
请大家将原本脑海中C的编译过程完全砸掉!
java完全不同,java没有头文件,每个.java都是要放在源代码树中的。
那么这颗树是怎么组织的呢?
对了,就是package语句。
比如写了package com.lightning;
那么这个.java就必须放在源代码树根\的com\lighting\之下才行。

很多浮躁的初学者被default打包方式宠坏了。自我为中心,以为java就是一套库,自己写
的时候最多import进来就行了,代码从不打包,直接javac,直接java,多么方便。
孰不知自己写的这个.java也不过是java大平台的其中一个小单元而已。如果不打包,
我写一个Point,你写一个Point,甚至更有甚者敢于给自己的类起名叫String等等。
全部都在平板式的目录中,那jre该选哪一个?

一旦要使用package语句,就要使用代码树结构,当然,你要直接javac,也行。
不过javac出来的这个class要放在符合package结构的目录中才能发挥正常作用,否则就是
废物一坨。
而且,如果你这个.java还用到其它自己写的有package语句的.java,那这个方法就回天乏
术了。

按照sun的想象,应该是写好的.java放在符合package结构的目录中,package语句保证了
正确放置,如果目录位置和package语句中指示的不同,则会出错。

所以按照刚才我们的那种package写法,我们必然要将那几个.java文件放入相应的目录中
才能让javac顺利找到他们来make。

有人说javac可不可以像java那样 java aaa.bbb.c...java?
不可以
javac中的那个.java文件参数必须是一个文件系统的路径文件名形式。
然后如果用到其它的.java,javac会根据目前的sourcepath出发寻找目录结构中的那些
java文件。

当然了,既然打了包,在使用的时候。
要么写全名——包名.类名
或者使用import
不得不提的是,import就好比c++的using,它不负责做文件操作,它只是方便你写代码。

另外import语句中的*代表的是类名,不代表包名片断。
你import com.*;
编译器仍然找不到com.lightning中的任何类。
反之亦然。
就好象你告诉编译器,我这里面要用到姓诸葛的人。
那么姓诸的人当然编译器不会认为也包含在内。


所以,如果程序一旦写到一定规模。
就不得不使用ant来管理这些。
或者使用IDE,否则jdk就真的变成了java developer killer。

但是对于初学者,在了解为什么会有ant之类的之前,还是要体会一下使用
jdk的艰辛。

这个和以前在unix上开发的人用gcc命令行到后来使用make之后使用ide
之类的时候的体会是类似的。

最后,javac的-d参数是指示编译出来的class文件放在哪里的,如果你不指定的话,它们
和.java混在一起。当然也符合目录结构。

文章引用自:白云黄鹤java版

HTML入门(详细教程),前端入门从这里开始 HTML基础教程,网页框架搭建,表单制作,了解HTML标签的基本用法,每个标签具备哪些属性。 阅读详情

相关推荐

Keil MDK编译错误#541解决方案与ARM_Compiler包解析

在嵌入式开发中,编译器工具链的依赖管理是确保项目顺利构建的关键环节。以Keil MDK为例,其软件包依赖机制通过组件化设计实现功能解耦,其中ARM_Compiler包专门处理系统IO重定向等编译器扩展功能。这种架构既提升了模块复用性,也带来了版本兼容性挑战。当出现'Error #541: component missing'报错时,通常是由于中间件组件(如文件系统)在新版本中显式依赖了ARM_Compiler包。开发者需要通过Pack Installer安装该包,并在Run-Time Environment

weixin_32129187的博客 363

java package

java应用程序文件 这个说法是我自己抽象出来的,指的是一般的组织在package中的所有文件。 大体分成这三种: 1,java程序源文件,扩展名为.java。 2,编译好的java类文件,扩展名为.class。 3,其他文件,除了以上的,就是资源文件。 例如图片文件,xml文件,mp3文件 等等等等都可以组织在package之中。(你当然也可以把一部电影放在package里面,当然

HuntingGo的专栏 1796

Simulink/Requirements Toolbox 学习(一):概述

编写、导入、导出需求并使需求正式化;两种创建需求的模块:需求编辑器、需求透视;描述需求的方式:文本、图像和关键字;通过导入和导出需求文件,与第三方需求管理工具(例如 Microsoft Word、Microsoft Excel®、IBM DOORS和 IBM DOORS Next)集成。涉及模块:Requirements Eidtor、Requirements Table等;

854

Java包的管理

说明:while与do...while的区别,while先判断后执行,do...while先循环后判断。为了更好的管理项目中的类,可以将不同的类分别规整到不同文件夹中,这些文件夹在gava中称包。在本类中的第一行需要使用package来指定类的当前包,一般IDE会自动添加package。2、continue 只能用于循环语句中,在循环语句中体跳出本次循环,比继续后边循环。在switch中跳出case语句,在循环语句中跳出本轮循环。java.sql.*;

shi199922的博客 606

Webots+UR机械臂仿真全流程:手把手教你用Python实现Pick-and-Place轨迹规划

本文详细介绍了使用Webots和Python实现UR六自由度机械臂的Pick-and-Place轨迹规划全流程。从环境搭建、运动学正逆解计算到轨迹规划实战技巧,涵盖工业场景中的关节补偿、末端校准等实际问题解决方案,帮助开发者快速掌握机械臂精准控制技术。

weixin_29083649的博客 282

python——模拟砍价

类型:随机数。

m0_62488776的博客 1970

java的package怎么用_Java包(Package)的详细用法(转)

Java包(Package)的详细用法当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,那么如果发生了这样的事件我们该怎么办那?,在我们java程序开发中为了避免上述事件,提供了一个包的概念(package),那么既然有了这样一种方法能避免上述事件,那么我们怎样使用package那?,使用方法很简单我们只需要在我们写的程序第一行使用package关键字来声明一个包就行了,例如...

weixin_35545782的博客 1万+

示波器核心参数选型指南:带宽、采样率与嵌入式调试实战

示波器是电子工程师进行信号观测与故障诊断的基础仪器,其性能由带宽、采样率、通道数、存储深度、触发系统和探头特性共同决定。带宽定义高频响应边界,需遵循5倍法则以保障数字信号上升沿测量精度;采样率则依据奈奎斯特定理并结合工程冗余(通常≥2.5×带宽)实现可靠时域重建。二者协同影响信号完整性评估能力,尤其在UART、I²C、SPI等嵌入式总线调试中至关重要。高存储深度支持长时捕获与毛刺定位,智能触发与硬件协议解码进一步将波形分析升维至语义级。本文围绕真实嵌入式场景,解析参数间的耦合关系与典型误用陷阱。

weixin_42588877的博客 91

Java 包(package)

为了更好地组织类,Java 提供了包机制,不同包具有不同的类名空间,在不同包内类名可以相同。 包的作用 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。 Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索

qq_44336097的博客 385

多后端系统统一聚合与智能分流:用 Multi Origin Composition 与 Routing 打造一套可扩展的 SAP Gateway 架构

本文针对企业级SAP集成场景,详细介绍了如何利用SAP Gateway的MOC(多源组合)和Routing功能实现多后端系统的智能路由与数据聚合。通过系统别名配置、用户角色绑定和主机名分流等机制,可实现按用户、按域名的精确路由。文章还提供了配置清单、性能优化建议和常见问题解决方案,帮助工程师落地多后端OData服务的最佳实践。

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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java类管理机制——包的详解

Java包的使用与定义

人生处处是围城,一切都是最好的安排! 3787

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Scala的package用法

学亮编程手记 942

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

CMake find_package用法

find_package用法

qq_38229124的博客 275

java中import,package的用法

java中import,package的用法 2011-12-08 15:45:33 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xgtian.blog.51cto.com/3844449/737269 有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不 太了解很多

liuzuyi200的专栏 1181

【cmake】find_package的简单用法

find_package是一个较为复杂的命令。详情请参考最后的参考资料。我们这里只讲最基本的简明扼要的用法和原理。

beidou111的博客 1632

Java中import及package的用法

有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不太了解很多人以為原始码 .java 档案中的 import 会让编译器把所 import的程式通通写到编译好的 .class 档案中,或是认為 import 跟 C/C++ 的#include 相似,实际上,这是错误的观念。 让我们先了解一下,Java 的 package 到底有何用处。 其实,p...

weixin_30338481的博客 137

Oracle的Package的作用及用法

转载自:http://blog.youkuaiyun.com/seelye/article/details/8509030 Oracle的Package的作用 简化应用设计、提高应用性能、实现信息隐藏、子程序重载。 1.Oracle的Package除 了把存储过程放到一堆儿以外还有没有其他的作用(好处)?  你不觉得把存储过程分门别类是很重要的么,而且不同的package的存储过程可以重

yh_zeng2的博客 1万+

Java进阶之关键字package与import:用法实例(六十九)

本篇目的:Java进阶之关键字package与import:用法实例基本概念package:用于将类组织到不同的命名空间中,避免类名冲突。import:用于导入其他包中的类或接口,使它们可以在当前文件中使用。功能package:定义类的所属包,提供类的组织结构。import:简化类的引用,避免重复书写包名。使用限制每个Java文件只能声明一个package。import语句必须位于文件的顶部,紧跟在package声明之后。性能特性。

Android系统攻城狮 955

MogDB/openGauss数据库package关键字的两种用法

可以看出我们不能使用后加 package 属性的 myproc2(输入参数类型为 varchar)去重载非 package 属性的 myproc2(输入参数类型为 integer)。上面的测试在 MogDB 数据库里也是同样的效果,不能通过输出参数来对存储过程进行重载,上面第一个 myproc 是有输出参数,第二个 myproc 没有输出参数。通过上面示例,我们可以看到第一种用法,创建 package 包接口,里面可以创建不同的程序体,包括变量、函数、存储过程等。下面的截图可以看到符合我们的预期。

2401_83143557的博客 604

java import、package作用与用法

java import、package作用与用法 有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不 太了解很多人以為原始码 .java 档案中的 import 会让编译器把所 import 的程式通通写到编译好的 .class 档案中,或是认為 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。 让我们先了解一下,Ja

千古悠悠何所愁的专栏 8826

java_import、package作用与用法

可是问题来了,因為很多套件的名称非常的长,在写程式时,会多打好多字,花费不少时间,比如说:          java.io.InputStream is = java.lang.System.in;      java.io.InputStreamReader isr= new java.io.InputStreamReader(is);       java.io.BufferedRea

发展是曲折的但也是前进的 972

java import、package作用与用法以及与C include的区别

java import、package作用与用法 有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不 太了解很多人以為原始码 .java 档案中的 import 会让编译器把所 import 的程式通通写到编译好的 .class 档案中,或是认為 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。 让我们先了解一下,Ja

Wait的专栏 2940

oracle的package是什么意思,Oracle的Package的作用及用法

简化应用设计、提高应用性能、实现信息隐藏、子程序重载。1、Oracle的Package除 了把存储过程放到一堆儿以外还有没有其他的作用(好处)?你不觉得把存储过程分门别类是很重要的么,而且不同的package的存储过程可以重 名。用package不仅能把存储过程分门别类,而且在package里可以定义公共的变量/类型,既方便了编程,又减少了服务器的编译开销。2、如何把现有的存储过程加入到Packa...

weixin_29864831的博客 2736

package.json的所有配置项及其用法,你都熟悉么

package.json的所有配置项及其用法,你都熟悉么 写在前面 在前端开发中,npm已经是必不可少的工具了。使用npm,不可避免的就要和package.json打交道。平时package.json用得挺多,但是没有认真看过官方文档。本文结合npm官方文档以及自己平时使用过程中的感悟,谈一谈package.json。官方文档在这里。 初始化 使用npm init命令就可以初始化一个package.json文件。在初始化的过程中,会叫用户输入name, version等等信息,当然,你都可以忽略。一

650
上一篇: Linux下查看文件和文件夹大小
下一篇: WIFI基本知识整理
计算机与认知
博客等级 码龄14年 31粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值