项目打包与发行

BQ76920 BMS芯片数据采集优化:解决电压采样串扰问题 本文针对BQ76920 BMS芯片在数据采集中常见的电压采样串扰问题,提供了从硬件设计、寄存器配置到软件策略的完整优化方案。重点分析了Cell 1和Cell 5电压读数不稳定的成因,并详细介绍了通过调整ADCGAIN1寄存器的DELAY位、优化采样顺序以及加强硬件滤波等方法,有效提升电压测量精度和系统稳定性。 阅读详情

       当项目完成后接下来的就是打包发行了,应用程序(Application)项目和Eclipse插件项目(plugin)的打包是不同的,本章将分别介绍两者的打包方法,并给出实际的打包例子。

一.应用程序项目的打包与发行

1.1  简介

       Java应用程序项目完成后是可以脱离Eclipse运行的,要运行程序先要打它打成一个JAR包,它打包的大部份方法和标准Java的AWT/SWING的打包方法一样,主要有以下几个要点

l           MANIFEST.MF -  打包清单。它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行Java应用程序时是要根据此文件中给出的信息来查找入口类和支持库。

l           支持包 -如果Java应用程序用到了一些Eclipse包,那么就必须将这些包也复制到程序运行目录,否则程序将无法运行。如swt组件支持包swt.jar,jface组件支持包jface.jar。这些包都要在MANIFEST.MF文件中设置好。

l           本地化文件 - 如果用到了SWT组件,则还需要将SWT的本地化文件swt-win32-3063.dll(3063是版本号)复制到程序运行目录,否则程序将无法运行。

1.2  打包的具体操作步骤

本节将用前几章开发的SWT/JFace项目“myswt”的打包为例,来介绍打包应用程序项目的方法。

1、编辑清单MANIFEST.MF

(1)Eclipse提供了用于打包项目的“导出”向导,但本例运行此向导之前先需要创建一个MANIFEST.MF清单文件,其内容如下:

 

Manifest-Version: 1.0

        Main-Class: book.chapter_4.wizard_dialog.WizardDialog1

        Class-Path: ./lib/swt.jar ./lib/jface.jar ./lib/runtime.jar

说明:

Manifest-Version: 1.0

        Main-Class: book.chapter_4.wizard_dialog.WizardDialog1

        Class-Path: ./lib/swt.jar ./lib/jface.jar ./lib/runtime.jar

说明:

l           Manifest-Version - 指定清单文件的版本号

l           Main-Class - 指定程序运行的入口类。本例设为运行4.5.2节开发的向导式对话框。注意:类名后不要加class扩展名

l           Class-Path - 指定支持库的路径。“.”指程序运行目录,即导出的JAR包所在目录。程序运行时依据Class-Path项的设置路径来查找支持库。每一个支持库之间用空格隔开。在这里jface.jar需要用到runtime.jar包,所以runtime.jar包也要加入到Class-Path中。

l           除了入口类的包名和类名之外,其他设置项都不分大小写,比如:Class-Path写成class-path或CLASS-PATH也可以,swt.jar写成SWT.JAR也行。

(2)将清单文件保存下来,建议放在myswt项目的根目录下。它的文件名可以任意取,本例取名为manifes.txt,Eclipse向导在打包时会自动的将manifes.txt的内容复制到JAR包的META-INF目录下的MANIFEST.MF文件中。

2、使用Eclipse“导出”向导来打包项目

(1)右键单击myswt项目的项目名,在弹出菜单中选择“导出”。在弹出的如下图7.1所示的对话框中,选择“JAR文件”,单击“下一步”。

                                  图1  导出对话框

(2)如下图2所示,将右边不需要的文件都取消勾选。在“选择导出目标”项文本框中设置JAR包的输出路径和包名(可以任意取名)为“D:/myswt_application/myswt.jar”。接受其他的默认设置不变,单击“下一步”。

附注:左边虽然选择了src目录,但源文件并不会导出到包中,除非勾选了“导出Java源代码文件和资源”项。

                      

                    图2  选择导入文件

(3)如下图3所示,接受默认设置不变,单击“下一步”。

                   

                      图3  导出类的选项

(4)这一步较关键。如下图7.4所示,选择“从工作空间中使用现有清单”项,将创建的清单文件输入,也可以通过旁边的“浏览”按钮来选择清单文件。输入清单文件后,单击“完成”,Eclipse开始将项目打包。

图7.4  清单文件设置

       经过以上四步后,在“D:/myswt_application”路径下生成了一个名为“myswt.jar”的文件。myswt.jar是一个ZIP格式的压缩文件,可以用WinRAR或WinZip软件打开,也就是说用这两个软件也可以替代Eclipse向导来打包文件。如果用WinRAR来打包文件,则压缩格式要选择ZIP格式而非RAR格式,压缩率倒可以任意选。

用WinRAR打开myswt.jar文件后其内部的目录结构如下图7.5所示:

图7.5  myswt.jar文件的内部目录结构

       在myswt.jar文件的内部目录META-INF中仅一个文件:MANIFEST.MF,它和以前创建的清单文件manifest.txt的内容是一样的,如下:

Manifest-Version: 1.0

Class-Path: ./lib/swt.jar ./lib/jface.jar ./lib/runtime.jar

Main-Class: book.chapter_4.wizard_dialog.WizardDialog1

3、复制Java应用程序的支持包及本地化文件

在MANIFEST.MF文件中的Class-Path项设置了三个包,从Eclipse的plugins目录中将此三个支持包复制到D:/myswt_application/lib目录,本地化文件swt-win32-3063.dll复制到D:/myswt_application目录中。此三个文件在Eclipse中的路径为:

plugins/org.eclipse.swt.win32_3.0.1/ws/win32/swt.jar

plugins/org.eclipse.jface_3.0.0/jface.jar

plugins/org.eclipse.core.runtime_3.0.1/runtime.jar

plugins/org.eclipse.swt.win32_3.0.1/os/win32/x86/swt-win32-3063.dll

       复制完成后的目录结构如下图7.6所示:

图7.6  目录结构图

4、编写运行myswt.jar包的批处理程序“run.bat”

在myswt_application目录下创建一个批处理程序run.bat(名字任取,扩展名必须是bat),其内容仅一句语句,如下:

javaw -jar myswt.jar

       说明:

l           javaw对应c:/jdk/jre/bin/javaw.exe文件,如果windows提示命令未发现,则需要将c:/jdk/jre/bin路径加入到windows环境变量path中。

l           在运行程序的时候有一个讨厌的黑色命令行窗口,要去掉它,可以将run.bat内容更改如下:“start javaw -jar myswt.jar”,start是指调用了windows的“运行”命令。

l           如果想将swt-win32-3063.dll也放在单独的目录中,如“D:/myswt_application/native”目录,则需将run.bat内容更改为:

start javaw -Djava.library.path=./native/ -jar myswt.jar

5、运行程序

双击run.bat文件,得到如下图7.7所示的程序界面。

图7.7  程序运行效果图

6、注意事项

本例只需要三个支持包,但你的程序也许会需要更多的支持包才能运行。如果你想一次到位,则可以将“Java构建路径”的“库”选项卡中所有引用的包都复制到lib目录中。如果你喜欢用到什么包才加入什么包,希望维持打包文件的简洁,则需要自己一步步的去试:如果缺少某支持包,运行程序时会输出的未找到类的错误信息,从信息中的包名可得知程序缺少哪一个支持包。比如“Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jface/wizard/IWizard”,从错误信息中很明显的就能知道程序缺少jface包

7.1.3  其他得到JAR包的方式

       要得到JAR包除了以上所说的用Eclipse“导出”向导、用WinZip和WinRAR,另外还能用Java自带的命令行式打包软件jar.exe(位于c:/jdk/bin目录),其打包命令为:

c:/jdk/bin/jar cvfm myswt.jar C:/eclipse3.0.1/eclipse/workspace/myswt/manifest.txt -C C:/eclipse3.0.1/eclipse/workspace/myswt/bin .

       说明:

l           c:/jdk/bin/jar - 由于本书没有把c:/jdk/bin加入到windows环境变量path中,所以手工指定jar.exe的路径

l           cvfm - jar.exe的参数,“c”创建新的jar包;“v”将调试信息打印在屏幕上;“f”指定生成的jar文件名;“m”使用清单文件。注意它们都是小写

l           myswt.jar - 打包后的JAR包名

l           在前面是把清单文件manifest.txt放在C:/eclipse3.0.1/eclipse/workspace/myswt/目录下。如果将它和批处理文件放在一个目录就不必指定长长的路径了。

l           “-C 路径 . ”指将路径下(包括子目录)的所有文件打包,由于class文件是输出在项目的bin目录下,所以路径指定到项目的bin目录,注意三者之间是用空格隔开,并且最后一个字符是小数点。

这种方式的优点是没有Eclipse导出向导的操作那么麻烦,适合经常需要导出JAR包的情况。

7.1.4  使用第三方插件对项目打包

开源组织(http://sourceforge.net/)中有一款可将Eclipse支持包和项目编译文件一起打到一个包中的插件,叫“Fat Jar”,它的下载地址是“http://fjep.sourceforge.net/”,具体下载不再说明,安装步骤参阅第1章SWT Designer的安装。

Fat Jar的使用步骤如下:

(1)右键单击myswt项目的项目名,可见菜单中多了一项“Build Fat Jar”,如下图7.8所示,选择“Build Fat Jar”项。

图7.8  右键菜单

(2)在下图7.9所示的对话框中,“Jar-Name”项填入JAR包的输出路径。文件清单“Manifest”项不用填,默认会自动创建一个。“Main-Class”项填入程序的入口类。其他都接受默认值,单击“下一步”。

图7.9  输出配置

       (3)如下图7.10所示,窗口中将myswt项目所用到的支持包都列了出来。我们仅勾选图中runtime.jar、swt.jar、jface.jar这三项即可,当然全选也并尝不可,只是最后得到的JAR包会更大一些,因为Fat Jar会将所有支持包合并在一个JAR包中。

图7.10  选择要打包的文件

单击图7.10的“完成”按钮后, JAR包myswt.jar将输出到D:/myswt_applicationh目录中。和以前一样,要运行此JAR包需要一个批处理文件以及本地化文件swt-win32-3063.dll,唯一不同的是不再需要Eclipse支持包,其目录结构如下图7.11所示:

图7.11  目录结构

       为什么不需要Eclipse支持包了呢?那是因为支持包已经在myswt.jar文件中了,从下图7.12可以看到swt.jar等都被拆散成目录,并包含在myswt.jar包中。

图7.12  myswt.jar的内部目录结构

       其中META-INF目录的MANIFEST.MF文件内容如下,可以发现和以前不同的地方是:Class-Path项没有了。

Manifest-Version: 1.0

Created-By: Fat Jar Eclipse Plug-In

Main-Class: book.chapter_4.wizard_dialog.WizardDialog1

7.1.4  让用户电脑不必安装JRE环境

       通常运行Java程序有个前提条件:用户电脑必须先安装JRE环境。虽然安装JRE环境非常简单,但毕竟多了一步,算是有一点点的瑕疵。这里给出一个不必让用户安装JRE环境的方法,其实现步骤如下:

       (1)将原JDK中的“jre”目录复制到“D:/myswt_application/java1.4.2”目录下(java1.4.2也可换成其他名称)。

(2)将JDK和JRE从本机卸载掉,这样表示本机没有安装JAVA运行环境。

(3)修改批处理文件run.bat中的命令为“start java1.4.2/jre/bin/javaw -jar myswt.jar”,仅仅是在javaw前加上了一个相对应路径。

双击run.bat即可在不安装JRE环境的电脑运行此Java应用程序。

7.1.5  更进一步的完善

1、抛弃批处理文件(*.bat)

用批处理文件运行程序似乎不够专业,虽然它足以完成运行任务。但习惯就象一种毒药一旦染上就很难摆脱它的影响,Windows统治下的人们早已经习惯运行扩展名是EXE的程序,用*.bat他们就会感觉别扭。

我们可以用一个叫JavaLauncher的免费小程序来代替批处理文件去运行Java程序。JavaLauncher的下载网址是:

http://www.rolemaker.dk/nonRoleMaker/javalauncher/marner_java_launcher.htm

下载下来的文件是一个名JavaLauncher.zip的压缩包,解压后的目录结构如下图7.13所示:

图7.13  JavaLauncher.zip目录结构

在上图的目录中

l           source目录包含了JavaLauncher的源程序,是用C语言写的

l           changes.txt是新版的修改说明

l           launch.exe是主程序

l           launcher.cfg是配置文件

l           readme.txt是一些说明和示例

我们只需要launch.exe、launcher.cfg两个文件,将这两个文件复制到打包文件所在的目录。launcher.cfg是一个仅三行内容的文本文件,将它修改如下:

.

./java1.4.2/jre/bin/javaw.exe

-jar myswt.jar

l           第一行设置指向JAR包myswt.jar的目录,由于launch.exe和myswt.jar同在一个目录,所以用“.”即当前目录。

l           第二行设置指向jre/bin/javaw.exe的路径。在上一小节(7.1.4节)已将jre目录复制到了java1.4.2子目录中

配置好launcher.cfg后,双击launch.exe即可运行java应用程序。

如果仔佃研究eclipse的启动方式,发现eclipse和JavaLauncher的原理一样:eclipse.exe相当于launch.exe,startup.jar相当于myswt.jar。只不过eclipse.exe不象launch.exe要具有通用性,所以它没有*.cfg这样的配置文件,而是将启动信息固化在eclipse.exe中。

2、美化图标

launch.exe文件的图标太单调了,让我们给它换个好看点的。换程序的图标需要用到一个免费的软件:Resource Hacker,它有中文版,下载网址是:

http://www.users.on.net/johnson/resourcehacker/

用Resource Hacker来替换launch.exe的图标的步骤如下:

(1)运行Resource Hacker,得到如下图7.14所示的窗口。

图7.14  Resource Hacker的主界面

(2)单击主菜单“文件→打开”,将launch.exe载入到程序中,结果如下图7.15所示。

图7.15  载入Lanunch.exe之后的界面

(3)如上图,选择左边的“图标→1→1030”,然后右键单击“1030”项,选择“替换资源…”。如下图7.16所示,在弹出窗口中单击“打开新图标文件”,选择一个满意的图标,然后单击“替换”按钮。

附注:图标文件可以是exe、dll、res、ico,该软件可以从exe、dll、res抽取出图标,本例选择的是java的一个图标文件JavaCup.ico。

图7.16  选择图标文件

(4)如下图7.17所示,选择“文件→另存为”,取名myswt.exe。

附注:按理说选择“保存”也是可以的,这时Resource Hacker会将老的launch.exe备份成launch_original.exe。但也许是刷新上有问题,用“保存”方式有时launch.exe无法显示出新图标,但有时又可以。

图7.17  保存修改

(5)最后的目录如下图7.18所示,可见myswt.exe(也就是launch.exe改了个名称)的图标换成了Java的图标。双击myswt.exe即可运行Java应用程序。

图7.18  最后的效果

3、最后的打包

发送给用户之前,通常要用WinZip或WinRAR将所有的文件全部打成一个压缩包,然后用户得到这个压缩包后,将其解压缩后即可运行程序,Eclipse软件就是这种方式。

另一种方式是用InstallShield、InstallAnyWhere这样的安装程序制作软件来创建一个单一的setup.exe文件,它具有向导式的安装界面,而且还可以往windows的程序栏插入菜单项,关于这些安装程序制作软件的具体使用请参阅相关书籍。


Windows系统Apache服务器从零安装配置与PHP集成指南 Web服务器是网站和网络应用的基础设施,负责处理客户端请求并返回响应。Apache HTTP Server作为一款开源、稳定且高度可扩展的网页服务器软件,其核心原理是通过监听网络端口(如80端口),接收HTTP请求,并基于模块化架构处理静态文件或调用外部处理器执行动态脚本。其技术价值在于提供了可靠、灵活的服务托管能力,支持通过加载模块(如PHP模块)扩展功能,并可通过虚拟主机配置在一台服务器上运行多个网站。在应用场景上,Apache广泛用于搭建本地开发测试环境、部署中小型生产网站以及作为学习Web服务器管理 阅读详情

相关推荐

SpringBoot项目在Eclipse中实现打包发布

场景 项目搭建专栏: https://blog.youkuaiyun.com/BADAO_LIUMANG_QIZHI/column/info/35688 实现 首先设置打包的方式,这里设置为war包。 找到pom.xml 修改打包时的项目依赖的tomcat,使其在编译运行时使用tomcat,打包时不需要将tomcat打进包中 <!-- 打包时依赖 provided:表示编译运行时使用...

BADAO_LIUMANG_QIZHI的博客 3401

Eclipse如何将自己写的项目打成jar包供其他人使用

Eclipse如何将自己写的项目打成jar包供其他人使用 我们在工作中经常会负责一个小的项目模块,而其他项目模块的人需要用到我们的方法时,最简单的就是将自己写的代码封装成jar包给其他人使用,那么在eclipse中如何打jar包呢 1、右击项目(自己负责的是模块xx的编写) 2、选中java目录下的jar file功能,点击next 3、勾选你负责的代码模块的src目录,然后和所需要的文件 一般自己的模块是没有主函数main的,所以到这一步就可以Finnish,如何是自己的项目需要导出为jarbao,详

天选打工人,一只丧丧的程序猿 4371

借助OSS搭建在线教育视频课程分享网站-阿里云的课程体验和记录

阿里云的《搭建在线教育网站》免费课程里面讲的啥,我点进去看了看

LegendNoTitle的博客 3023

eclipse如何打包?

eclipse如何打包? 想要打包一个eclipse程序,怎么打包? 咋打包呢?不知道,上网搜呗~~ 1.首先你需要导入项目,并且项目是可以运行的。 这里是在B站找的一个项目,学习猿地的一个学生管理系统(Java+swing+mysql这个项目比较老了些,适用于初学JDBC的进行练手),就以这个为例进行打包。 2.按下图操作 首先先在桌面上建一个文件夹,名字随意,里面需要放一些东西 把你的jar包都复制粘贴到该文件夹。然后找到你下载的JDK 然后把这个也放入到刚才建的文件夹中,我新建文件名为

qq_44978378的博客 1万+

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2535

7系列ZYNQ硬件调试:Vitis无法识别ARM DAP的排查与解决

本文详细分析了Xilinx 7系列ZYNQ芯片在Vitis开发环境中无法识别ARM DAP的常见问题及解决方案。从硬件设计检查(电源系统、时钟电路)、JTAG连接诊断到软件环境排查,提供了全面的调试指南。特别针对ARM DAP初始化失败的情况,给出了实用的排查步骤和预防措施,帮助开发者快速定位和解决类似问题。

weixin_33737134的博客 513

Eclipse应用程序项目的打包与发行

当项目完成后接下来的就是打包发行了,应用程序(Application)项目和Eclipse插件项目(plugin)的打包是不同的,本章将分别介绍两者的打包方法,并给出实际的打包例子。7.1  应用程序项目的打包与发行7.1.1  简介       Java应用程序项目完成后是可以脱离Eclipse运行的,要运行程序先要打它打成一个JAR包,它打包的大部份方法和标准Java的AWT/SW

qiqijava的专栏 2985

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 286

eclipse中写的源代码怎么保存成文件然后发给别人

如果您需要将整个项目打包并发送给别人,可以选择 "Export" -> "General" -> "Archive File"(存档文件)选项,将整个项目导出为一个压缩文件(如 ZIP 文件),然后发送给别人。3. 在弹出的对话框中,选择 "General"(一般)下的 "File System"(文件系统),然后点击 "Next"(下一步)。4. 在接下来的页面中,选择要保存文件的位置和文件名,然后点击 "Finish"(完成)。2. 右键单击该文件,在弹出的菜单中选择 "Export"(导出)选项。

uoik4的博客 8132

ADC学习(3)——采样电路

第三章 采样电路

夏风喃喃的博客 3万+

【AI Agent】Harness Engineering实践

Harness(运行宿主)是围绕 LLM构建的一套确定性工程系统,其核心职责是:承认模型的固有局限,用可控的工程手段逐一弥补,使"强大但不可靠的推理引擎"变成"可信赖的生产级Agent"模型 是发动机——提供原始动力Agent 是驾驶员——做出决策Harness 是道路、地图、护栏、仪表盘、维修站和质检线——确保行驶安全有序没有Harness,模型越强,可能只是更快地制造混乱。

sysu_lluozh 190

JAVA项目打包部署方式

第一步:打开eclipse进入菜单栏。第一步:打开eclipse进入菜单栏。第三步:选择export选项。第五步:WAR file选项。第三步:选择export选项。第五步:JAR file选项。第二步:点击file文件。第六步:生成.WAR文件。第二步:点击file文件。第四步:进入java目录。第六步:生成.JAR文件。第四步:进入web目录。1:以WAR文件方式打包。2:以JAR文件方式打包。

weixin_53044798的博客 1995

SAP特殊库存全解析:供应商寄售、客户寄售、分包与项目库存说明

客户寄售库存(Customer Consignment)是企业将物料存放于客户处,客户实际领用后才确认销售收入。这种模式能缩短交货周期、提高客户满意度,但需严格跟踪寄售库存的数量与状态。

我小时候很黑的博客 817

eclipse中SWT程序的打包发布

eclipse中SWT程序的打包发布前言一、导出jar包方法一:直接导出Runnable JAR file方法二:导出JAR file二、运行jar包问题一 错误: 找不到或无法加载主类 book.ch2.HelloSWT 原因: java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Shell问题二:修改MANIFEST.MF文件时用压缩工具解压之后再压回去,运行报错总结 前言 创建的程序可以打包发布,使其能够脱离Eclipse单独运行。对于SW

weixin_42597917的博客 1164

SAP-RPT-1 深度解读:面向企业表格数据的 rapid one

摘要: SAP在TechEd 2025大会上推出面向企业结构化数据的SAP-RPT-1(Relational Pretrained Transformer),旨在通过in-context learning直接预测表格数据中的缺失值,无需传统机器学习流程。与LLM不同,RPT专为业务表格设计,支持实时预测(如交货延迟、回款风险等)。提供Small(高吞吐)、Large(高精度)和开源版本,用户可通过无代码Playground(上传CSV并用[PREDICT]标记目标列)或Python API快速验证。典型场景

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Eclipse新建Spring-boot项目,打包部署并输出HelloWord

Spring-boot因为其对jar包的高度集成以及简化服务配置,快速部署等的优点,逐渐成为Java开发人员的热衷的框架。

不羁鱼|Karle 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Eclipse 下Java工程的打包与发布

一、创建清单文件 MANIFEST.MF在需要打包的工程中创建MANIFEST.MF文件内容如下: Manifest-Version: 1.0 Main-Class: com.lijia.test.Main Class-Path: ./lib/org.eclipse.swt.win32.win32.x86_3.3.3.v3349.jar ./lib/org.eclipse.swt_3.3.2.v33

心中的执念的博客 1万+

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

超详细,手把手教你如何用eclipse为一个含有图片及第三方jar包的java工程项目打包

为纯小白准备,手把手教你如何用eclipse为一个含有图片及第三方jar包的java工程项目打包 前引:网上关于这样的打包教程有很多,我也是查阅了很多大神的教程才学会了如何打包,但这些教程中都有一个共同的问题,都是老手写的,都是以一个老手的角度为一个新手才会遇到的问题写教程,这导致他们的教程都是大致的流程框架(以新手的角度去看的话),而缺少了很多细枝末节上的介绍,而恰恰是这些没介绍的细节是掐死一个新手的关键,我也是刚刚才成功地为我的项目打包,情绪非常亢奋,临时起兴决定写一片文章,并以一个新手的角度尽可能的将

clnzbqll的博客 3070

Eclipse中对maven项目进行打包

在Eclipse中对maven项目进行打包

qq_16549251的博客 1万+

使用eclipse 将程序导出成 jar文件

使用eclipse软件开发,对于成品经常需要将代码打成jar包,然后将jar包拷贝到服务器进行运行。使用eclipse打包的过程也比较简单,但是也有很多坑,一不小心就会入坑。这篇经验介绍如何在eclipse中将工程java代码(单独的java代码也可)打成jar包。工具电脑(已经配置好java安装环境)eclipse工具方法/步骤在编写好的java包(单独的)上右键--export。下面是简单的一...

lxw19890418的博客 1426

java打包 eclipse_详解eclipse将项目打包成jar文件的两种方法及问题解决方法

第一种:利用eclipse中自带的export功能第一种方法分两种情况先来看第一种情况:没有引用外部jar的项目打包步骤一:右键点击项目选择导出(export),选择java>jar文件(不是选择可运行jar文件)步骤二:选择你要导出的项目以及文件,指定文件导出路径。连续点击两个下一步后到第四步。步骤三:选择主类。按照以上步骤即可完成对一个不引用外部jar项目的打包。第二种情况:没有引用外部...

weixin_35680955的博客 1741

Eclipse打war包方法(转载)

Eclipse打war包方法 收藏 在网上找Eclipse打包的方法,搜了许久,也没找到比较好的办法,之前知道可以通过用命令来打包外,一直想找像Jbuilder开发工具中的可以在编译的同时一起打war包的方法,可以没找到。于是自己模索了一下,终于知道怎么做了,现在把经验写下来,跟大家分享一下,希望能帮忙有需要的朋友。 如果有什么不对的,也请指正。 首先打开要打包的工程项目,选择“Deploy ...

微尘的世界 464

工作总结之常见操作(项目打包)

如何在Eclipse中将项目打包为jar文件 开发中经常遇到将项目打包成jar包放到别的项目中使用,此时按照如下步骤将项目打包为jar文件: 1. 2. 3. 点击“Finish”按钮后,在对应的存储位置发现多了一个后缀为*.jar的文件,用压缩工具打开文件,根据需要删除不需要的配置文件。 4. 5. 至此,在Eclipse中打包jar文件就完成了。 ...

weixin_40056279的博客 1259

WEB项目利用Eclipse打包成war包并部署在CentOS8

2、Xftp上传war包到Linux中安装Tomcat的。1、Eclipse把WEB项目打包成。3、利用IP地址访问部署的项目。

梦凝哲雪 1184

如何将在Eclipse中编写的java程序发布成.exe的可执行文件

1.看看你的Eclipse中是否有fat jar插件。 有,请看2.;没有,去网上下一个(或者找我要),net.sf.fjep.fatjar_0.0.25这个文件夹放到eclipse的plugins目录下。 2.导出jar包; 在Eclipse中的包资源管理器中,右击->导出->选择其他下边的Fat Jar Explorter,下一步:选择要导出的包,下一步:在Main - Class

龙之刃_2013 1272

利用Eclipse发布Java程序

Eclipse作为重要的Java编译器,利用其发布程序是其中必要的一环。 在Eclipse中新建Java project,然后增加类,并含有main函数,作为启动类。在main函数中简单增加如下代码 利用Eclipse调试程序,在Console window中输出 my third test!,则程序编译通过. 右键 project,选中menu - export,会弹出如下窗口

SpringDou的博客 4442
上一篇: XManager 系统配置简介
下一篇: Mysql数据库的用户帐号管理
ybugchen
博客等级 码龄22年 1粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值