poi 简易根据word模板导出工具

poi根据模板导出word 客户提供一个word模板,根据模板加载数据生成word附件,很正常的一个需求,但就是有个难点,需要换行,详情往下看。 1、模板示例 2、难点 这个需求的难点是议题。议题分为首席和列席还有请假。具体多少个议题也是不确定的,动态加载,每一个议题,议题下面的首席列席都得换行。如下: 首先,不能使用表格来做,其次如果使用一个标识符号进行替换填充,需要判断在每一个议题,首席,列席完毕都得需要换行。查了很多资料都是根据表格进行换行的,都不能解决这个问题, 阅读详情

1.pom

<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.12</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>3.12</version>
		</dependency>

2.代码

package com.knife.tjava;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder;


/**
 * Hello world!
 *
 */
public class App 
{
	public static void addBorders(XWPFTable table) {

		CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders();
		CTBorder hBorder = borders.addNewInsideH();
		hBorder.setVal(STBorder.Enum.forString("single"));
		hBorder.setSz(new BigInteger("1"));
		hBorder.setColor("000000");

		CTBorder vBorder = borders.addNewInsideV();
		vBorder.setVal(STBorder.Enum.forString("single"));
		vBorder.setSz(new BigInteger("1"));
		vBorder.setColor("000000");

		CTBorder lBorder = borders.addNewLeft();
		lBorder.setVal(STBorder.Enum.forString("single"));
		lBorder.setSz(new BigInteger("1"));
		lBorder.setColor("000000");

		CTBorder rBorder = borders.addNewRight();
		rBorder.setVal(STBorder.Enum.forString("single"));
		rBorder.setSz(new BigInteger("1"));
		rBorder.setColor("000000");

		CTBorder tBorder = borders.addNewTop();
		tBorder.setVal(STBorder.Enum.forString("single"));
		tBorder.setSz(new BigInteger("1"));
		tBorder.setColor("000000");

		CTBorder bBorder = borders.addNewBottom();
		bBorder.setVal(STBorder.Enum.forString("single"));
		bBorder.setSz(new BigInteger("1"));
		bBorder.setColor("000000");

	}

	/**
	 * 插入图片
	 * 
	 * @param paragraph
	 * @param is
	 * @throws IOException
	 * @throws InvalidFormatException
	 */
	public static void addPic(XWPFParagraph paragraph, InputStream is) throws IOException, InvalidFormatException {

		XWPFRun run = paragraph.createRun();
		run.setBold(true);
		paragraph.setAlignment(ParagraphAlignment.CENTER);
		run.addBreak();
		run.addPicture(is, XWPFDocument.PICTURE_TYPE_PNG, "", Units.toEMU(200), Units.toEMU(200)); // 200x200 pixels
		is.close();

	}

	public static XWPFDocument openDocument(String saveFile) {
		XWPFDocument xdoc = null;
		InputStream is = null;
		try {
			is = new FileInputStream(saveFile);
			xdoc = new XWPFDocument(is);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return xdoc;
	}

	public static void initTables(Map<String, Object> map, List<XWPFTable> tables) {

		System.out.println("########### tables:");

		for (XWPFTable table : tables) {

			String sign = "";

			if (table.getRows().size() == 1) {

				sign = table.getRow(0).getCell(0).getText();

				sign = sign.replace("${@", "").replace("}", "");
				
				System.out.println(sign);

				if (map.get(sign) != null) {

					table.getRow(0).getCell(0).removeParagraph(0);

					String[][] arr = (String[][]) map.get(sign);

					for (int i = 0; i < arr.length; i++) {

						XWPFTableRow row = table.getRow(i);

						if (row == null) {

							row = table.createRow();

						}

						for (int j = 0; j < arr[i].length; j++) {

							XWPFTableCell cell = row.getCell(j);

							if (cell == null) {
								cell = row.createCell();
							}

							cell.setText(arr[i][j]);
						}

					}
				} else {
					table.removeRow(0);
				}

			} else if (table.getRows().size() == 2) {

				sign = table.getRow(1).getCell(0).getText();

				sign = sign.replace("${@", "").replace("}", "");
				
				System.out.println(sign);

				if (map.get(sign) != null) {

					table.getRow(1).getCell(0).removeParagraph(0);
					
					addBorders(table);

					String[][] arr = (String[][]) map.get(sign);

					for (int i = 0; i < arr.length; i++) {

						XWPFTableRow row = table.getRow(i + 2);

						if (row == null) {

							row = table.insertNewTableRow(i + 2);

							// row.getCtRow().setTrPr(table.getRow(1).getCtRow().getTrPr());

							row.getCtRow().addNewTrPr();

						}

						for (int j = 0; j < arr[i].length; j++) {

							XWPFTableCell cell = row.getCell(j);

							if (cell == null) {

								//System.out.println("###############create new cell");

								cell = row.createCell();

								// cell.getCTTc().setTcPr(table.getRow(1).getCell(j).getCTTc().getTcPr());

								cell.getCTTc().addNewTcPr();
							}

							cell.setText(arr[i][j]);

						}

					}
				}

				table.removeRow(1);

			}

		}

	}

	public static void initImage(Map<String, Object> map, List<XWPFParagraph> paragraphs) {
		System.out.println("#########image:");

		for (XWPFParagraph paragraph : paragraphs) {

			String text = paragraph.getText();

			if (text.startsWith("#{")) {
				
				String sign = text.replace("#{", "").replace("}", "");
				
				System.out.println(sign);

				paragraph.removeRun(0);

				if (map.containsKey(sign) && map.get(sign) != null) {
					try {

						//addPic(paragraph, encryptToInputStreamFromSvg(map.get("svgcode").toString()));
						addPic(paragraph, (InputStream) map.get(sign));

					} catch (InvalidFormatException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}  catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
	}

	public static void initParagraphs(Map<String, Object> map, List<XWPFParagraph> paragraphs) {

		System.out.println("#########paragraphs:");

		for (XWPFParagraph paragraph : paragraphs) {

			String text = paragraph.getText();

			if (text.startsWith("${")) {

				if (!text.startsWith("${@")) {
					
					String sign = text.replace("${", "").replace("}", "");

					System.out.println(sign);
					
					if (map.get(sign) != null) {

						CTRPr pr = paragraph.getRuns().get(0).getCTR().getRPr();

						XWPFRun run = paragraph.createRun();

						run.setText(map.get(text.replace("${", "").replace("}", "")).toString());

						run.getCTR().setRPr(pr);
					}

				} else {

					String sign = text.replace("${@", "").replace("}", "");
					
					System.out.println(sign);

					if (map.containsKey(sign)) {

						String[] arr = (String[]) map.get(sign);

						CTRPr pr = paragraph.getRuns().get(0).getCTR().getRPr();

						for (String str : arr) {

							XWPFRun run = paragraph.createRun();

							run.setText(str + "\r\n");

							run.getCTR().setRPr(pr);

						}

					}

				}

				paragraph.removeRun(0);

			}

		}

	}

	public static XWPFDocument export(Map<String, Object> map, String modelpath) {

		XWPFDocument doc = openDocument(modelpath);

		List<XWPFParagraph> paragraphs = doc.getParagraphs();

		List<XWPFTable> tables = doc.getTables();

		initParagraphs(map, paragraphs);

		initImage(map, paragraphs);

		initTables(map, tables);

		return doc;

	}

	public static void export(File file, Map<String, Object> map, String modelpath) {

		XWPFDocument doc = export(map, modelpath);

		FileOutputStream fos = null;
		try {
			// File file = new File("D://testdoc.docx");
			fos = new FileOutputStream(file);
			doc.write(fos);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}


	public static void main(String args[]) throws FileNotFoundException {

		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("string1", "这是第一个段落");
		
		map.put("string2", new String[] { "循环1", "循环2", "循环3" });

		map.put("table1", new String[][] { { "1", "加藤一刀斋", "15", "廊桥之町" } });

		map.put("table2", new String[][] { { "输入", "角色", "kpi", "输出" }, { "输入1", "角色", "kpi", "输出" },
				{ "输入2", "角色", "kpi", "输出" } });

		map.put("image1", new FileInputStream(new File("D://1.png")));

		export(new File("D://testExport.docx"), map, "D://testModel.docx");

	}
}

3.模板

4.导出结果

 

poi根据word/excel模板(书签)创建导出word/excel文档 首先poi需要的jar包全部导入工程温馨提示:千万要注意xmlbeans的版本号,最好使用2.6.0以上的版本,否则poi会报错的噢! 阅读详情

相关推荐

使用原生POI和EasyPoi根据word模板导出word工具类

根据word模板,使用原生poi和easyPoi导出word数据,实现模板替换,表格内容填充,分析其优缺点

qq_42059717的博客 3848

poi根据模版生成word(包括导出)

根据模版word生成新的word

weixin_45818332的博客 2361

SpringBoot整合poi导出word文本及表格

SpringBoot整合poi导出word文本及表格 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你...

weixin_44553004的博客 8980

Poi实现根据word模板导出-文本段落篇

之前说过poi本质就是把word解析成xml,那我们直接把word导出为xml看一下,用office可以快速把word导出为xml格式,这里我们把我们的模板导出为xml看下同样的占位符有啥不同?就是占位符,我们通过代码可以将这部分替换成我们需要的内容。4、操作document文件对象,先获取段落,在获取段落中每段内容,根据我们的占位符格式判断是否存在,存在则更新我们占位符位置的内容。3、封装我们的业务数据,根据你的具体业务填充数据,Map中的key是我们占位符中的值,value就是要展示在页面的值。

迷途小书童的博客 2533

SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格)

SpringBoot+Poi-tl根据Word模板动态生成含动态表格的word文档。 Poi-tl官方文档:http://deepoove.com/poi-tl/ 实现过程 1.添加必要依赖 <!-- word导出 --> <!-- poi-tl是基于Apache POI的Word模板引擎。poi-tl依赖的是poi3.16版本 --> <dependency> <groupId>com.deepoove</groupId> <ar

12程序猿的博客 1万+

【Apache POI】Java Web根据模板导出word文件

最近工作中遇到一个需求:根据word模板文档导出word文件。 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下:   Apache-POI在线Javadoc:http://tool.oschina.net/apidocs/apidoc?api=apache-POI 官方网站:http://poi.apache.org/ POI详细介绍: Ap...

lmb55的专栏 9483

根据模板动态生成word(二)使用poi生成word

super(in);super();super(pkg);} /*** @param width 宽* @param height 高* @param paragraph 段落try {docPr . setName("图片名称");docPr . setDescr("描述信息");super();super(pkg);} /*** @param width 宽。

fhey的博客 3885

poi-tl根据word模板导出word、使用spring-thymeleaf模板生成html并通过docx4j把html转word,使用jxls根据excel模板导出excel(1)

使用poi-tl 根据word模板生成word 官网 http://deepoove.com/poi-tl https://zhengkai.blog.youkuaiyun.com/article/details/81702029?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.baidujs&dist_request_id=1331302.8264.16182.

weixin_35815479的博客 6万+

JAVA根据模板生成WORD文件并导出

JAVA根据模板生成WORD并导出 实现功能 根据模板生成WORD文件,模板文件参数可配. 一 : WORD导出效果 先看一下导出的demo文件,具体参数可手动修改 下图为word_demo.docx导出的WORD文件 下图为word_list.docx导出的WORD文件 二 : 编写WORD模板 WORD文件模板,新建WORD文件,将所需参数用特殊符号 ${} 配置,如下图. demo模...

qq_38254635的博客 3万+

SpringBoot Poi导出word,浏览器下载

文章目录SpringBoot Poi导出word,浏览器下载1.引依赖:2.写代码(生成本地word):3.返回给浏览器下载1.如何返回给浏览器让它下载4.解决方案5.为什么没使用easypoi 模板导出word SpringBoot Poi导出word,浏览器下载 核心问题: 问题就是axios发的请求,浏览器不能直接下载文件 关键点以标红 先看下导出的结果: 非常简单的样式,下面开始介绍如何使用: 我这个例子是,问题+答案的word 1.引依赖: <!--导出word--> <dep

qq_42682745的博客 6893

Java中使用poi+poi-tl实现根据模板导出word文档

上面讲的是Excel的导出,如果是需要根据word文档的模板,比如根据数据库中数据或者其它数据源循环根据模板填充数据,可填充文字、图片、表格、图表等数据。

BADAO_LIUMANG_QIZHI的博客 5767

SpringBoot导出Word方式一:根据Word模板动态生成word(Poi-tl)

SpringBoot 项目使用poi-tl实现导出word功能: 获取数据录入到固定的word模板,最后生成新的word文档。 Poi-tl官方文档:http://deepoove.com/poi-tl/ 一、需求 根据word模板,动态填充模板内容,生成新的word。 二、poi-tl介绍 poi-tl(poi template language)是Word模板引擎,基于Microsoft Word模板和数据生成新的文档。 Apache POI不仅在上层封装了易用的文档API(文本、图片、表格、页眉、页脚

12程序猿的博客 9450

半桥LLC谐振变换器及同步整流MATLAB仿真(一)

LLC工作原理详细解析,工作过程详细拆解

qq_55203246的博客 3万+

java 导出word,java根据提供word模板导出word文档

java 导出word,java根据提供word模板导出word文档。本文主要讲解,利用poi-tl在word中动态生成表格行,进行文字、图片填充。一共提供了两种方式,1.基于本地文件 2.基于网络文件

lzq2357639195的博客 1万+

手把手教你用CsvView分析大疆无人机飞行日志(附实战CTF题解)

本文详细介绍了如何使用CsvView工具分析大疆无人机飞行日志,包括环境搭建、日志提取、核心功能解析及CTF实战技巧。通过实战案例,帮助读者掌握无人机取证的关键技术,提升日志分析能力,特别适合网络安全竞赛和实际取证场景。

weixin_42652674的博客 456

MATLAB新手也能懂:用MATPOWER 8.0b搞定电力系统潮流计算(附case9实战代码)

本文详细介绍了如何使用MATPOWER 8.0b在MATLAB中进行电力系统潮流计算,特别适合新手入门。通过case9实战案例,讲解了从安装配置到运行牛顿-拉夫逊法潮流计算的全过程,包括结果分析和常见问题处理,帮助读者快速掌握这一电力系统分析的核心技能。

weixin_26757925的博客 380

springboot+poi-tl根据模板导出word(含动态表格和图片),并将导出的文档压缩zip导出

springboot+poi-tl根据模板导出word(含动态表格和图片),并将导出的文档压缩zip导出

weixin_44021888的博客 3400

FPGA人脸识别检测(先获取人脸图像以及灰度二值化)

由于图片有空洞等缺陷,所以后面要进行中值滤波、腐蚀、膨胀等算法处理,然后再对人脸进行框选,最后显示出来。最终的成像应该是下面这样的。(后面有时间再接着做哈哈哈)5、通过modelsim将操作后的图片数据写入gray_img.txt里面后,用matlab将txt转成图片。1、先用matlab将图片转换成txt数据,代码如下。读取图片的方式按照博客咸鱼里的方式来做,如下。2、FPGA读取txt数据。4、FPGA顶层模块及仿真。3、FPGA灰度二值化。

weixin_46312715的博客 2531

Springboot--使用POI,根据word模板导出word文件

需求:根据一个word模板,在程序中替换模板中的参数,然后根据这个模板导出word文件。 引入POI对word操作的依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version>

weixin_43606226的博客 3755

微调BERT进行中文文本分类任务(Pytorch代码实现)

BERT(Bidirectional Encoder Representation from Transformers)是2018年10月由Google AI研究院提出的一种预训练模型。其模型结构由多层Transformer的Encoder堆叠而成,在大规模语料中进行预训练后,迁移到下游任务,仅进行参数微调训练,就能显著提升性能。本文聚焦于微调中文BERT进行新闻标题分类任务的代码实现。

Iswayzw的博客 1万+

Python爬虫实战:实时爬取东方财富网股票行情

东方财富网实时行情(价格、涨跌幅、成交量等)K线图、分时图、技术指标市盈率、换手率、总市值等指标相比某些收费API,东方财富网页端接口不需要登录、免费、响应快、封装清晰,适合爬虫实践。东方财富网股票数据接口分析实时数据抓取与字段提取数据结构化处理自动化批量抓取多线程加速采集数据可视化展示支持存储为CSV/Excel/数据库。

2201_76125261的博客 1万+

Android 基于POI库,根据模板导出word文档

记录下来,也是为了记录自己的踩坑日记。

春风十里不如我的博客 4253

【25届数字IC秋招总结】面试经验6——经纬恒润

25届数字ic面试记录——经纬恒润

lalala0635的博客 991

springboot根据模板导出word【可进行拓展】

转自:https://www.jianshu.com/p/0a40b90cc72c 转这篇文章,一来是给自己做个笔记。二来是进行补充,让更多人更好的受益。 1、导入maven <dependency> <groupId>cn.afterturn</groupId> <artifactId&g...

小道仙的后宫 1万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java POI根据模板导出word,POI转化word为html代码

POI导出word文档模版直接用于下载和html页面展示

ldu_liuyang的博客 4762

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

上一篇: 纯js 数独游戏
下一篇: jekins 自动化打包部署相关配置
knife1220
博客等级 码龄15年 33粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值