6、设计模式应用举例:装饰模式:读取单词表

zed(Rust)开源项目完整源码 「zed(Rust)开源项目完整源码」是开源项目(Rust)。项目简介:Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.源码完整,下载解压即可查看使用,适合学习参考、课程设计与二次开发。 立即下载

目录

一、关于装饰模式

二、设计要求

三、设计实现

1.抽象组件

2.具体组件

3.装饰

4.具体装饰

5.相关文件

四、应用程序

五、执行结果


一、关于装饰模式

设计模式:6、装饰模式(包装器)_装饰者模式uml描述-优快云博客

二、设计要求

        本设计要求的核心是扩展已有的一个系统以满足用户需求。

        当前系统已有一个抽象类ReadWord,该类有一个抽象方法readWord(),另外,系统还有一个ReadWord类的子类ReadEnglishWord,该类的readWord()方法可以读取一个由英文单词构成的文本文件word.txt。

        目前已有一些客户在使用该系统,并使用ReadWord类的对象调用readWord()方法读取文件中的单词。

        英文单词构成的文件word.txt的格式是每行只有一给单词,内容如下(文件建在包所在目录下):

arrange
example
intellgence

        ReadWord和ReadEnglishWord类代码如下:

package xyz.jangle.design.app.decorator;

import java.io.File;
import java.util.ArrayList;

/**
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2026年10月11日 下午2:26:28
 * 
 */
public abstract class ReadWord {
	
	public abstract ArrayList<String> readWord(File file);

}
package xyz.jangle.design.app.decorator;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2026年10月11日 下午2:28:06
 * 
 */
public class ReadEnglishWord extends ReadWord {

	@Override
	public ArrayList<String> readWord(File file) {
		ArrayList<String> arrayList = new ArrayList<String>();
		try(FileReader inOne = new FileReader(file);
				BufferedReader inTwo = new BufferedReader(inOne)){
			String s = null;
			while((s = inTwo.readLine()) != null) {
				arrayList.add(s);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return arrayList;
	}

}

        现在有部分用户希望使用ReadWord类的对象调用readWord()方法读取文件word.txt中的单词,并希望同时也能得到该单词的汉语解释,也有一些用户希望不仅能得到该单词的汉语解释也能得到该单词的英文例句,而其他用户没有提出任何要求。要求不允许修改现有系统的代码以及word.txt文件,对系统进行拓展以满足用户需求。

三、设计实现

        由于不允许修改原有系统中的代码和文件,因此决定使用装饰模式来拓展原系统,设计的类图如下所示:

1.抽象组件

        ReadWord类

2.具体组件

        ReadEnglishWord类

3.装饰

        在原系统中添加一个装饰,该装饰是Decorator类,代码如下:

package xyz.jangle.design.app.decorator;

/**
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2026年10月11日 下午2:34:15
 * 
 */
public abstract class Decorator extends ReadWord {
	
	protected ReadWord reader;

	public Decorator(ReadWord reader) {
		super();
		this.reader = reader;
	}

}
4.具体装饰

        具体装饰是WordDecorator类,该类使用另外一个文件来装饰“被装饰者”读取的word.txt文件

        WordDecorator类代码如下:

package xyz.jangle.design.app.decorator;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

/**
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2026年10月11日 下午2:36:01
 * 
 */
public class WordDecorator extends Decorator {
	
	File decoratorFile;
	
	public WordDecorator(ReadWord reader, File decoratorFile) {
		super(reader);
		this.decoratorFile = decoratorFile;
	}
	

	@Override
	public ArrayList<String> readWord(File file) {
		ArrayList<String> wordList = reader.readWord(file);
		try(FileReader inOne = new FileReader(decoratorFile);
				BufferedReader inTwo = new BufferedReader(inOne)){
			String s = null;
			int m = 0;
			while((s = inTwo.readLine())!=null) {
				String word = wordList.get(m);
				wordList.set(m, word +"|"+s);
				m++;
				if(m>wordList.size())break;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return wordList;
	}

}
5.相关文件

        另外需要两个用于装饰的文本文件,分别是chiness.txt和englishSentence.txt。他们每行的文本内容分别是原系统word.txt中对应行上单词的汉语解释和英文例句,内容如下(文件建在包所在目录下):

        chinese.txt

整理
例子
智力

        englishSentence.txt

arrange tools in order
cite an example in point
an intelligence test

四、应用程序

package xyz.jangle.design.app.decorator;

import java.io.File;
import java.util.ArrayList;

/**
 * @author jangle
 * @email jangle@jangle.xyz
 * @time 2026年10月11日 下午2:48:41
 * 
 */
public class Application {

	public static void main(String[] args) {
		// 读取英文
		ReadEnglishWord readEnglishWord = new ReadEnglishWord();
		String filePath = "src/xyz/jangle/design/app/decorator";
		ArrayList<String> readWord = readEnglishWord.readWord(new File(filePath+"/word.txt"));
		for(String s:readWord) {
			System.out.println(s);
		}
		// 读取英文和中文
		WordDecorator readChinessWord = new WordDecorator(readEnglishWord,new File(filePath+"/chiness.txt"));
		ArrayList<String> chinessWord = readChinessWord.readWord(new File(filePath+"/word.txt"));
		for(String s:chinessWord) {
			System.out.println(s);
		}
		// 读取英文,中文和例句
		WordDecorator readSentenceWord = new WordDecorator(readChinessWord,new File(filePath+"/englishSentence.txt"));
		ArrayList<String> sentenceWord = readSentenceWord.readWord(new File(filePath+"/word.txt"));
		for(String s:sentenceWord) {
			System.out.println(s);
		}

	}

}

五、执行结果

IEC 63281-3-1:2024 电动运输车 - 第3-1部分:考虑实际使用温度条件的电动滑板车总运行时间性能测试方法 - 完整英文电子版(30页) IEC 63281-3-1:2024规定了电动滑板车单人运输总运行时间的测试方法,考虑了用户在不同温度下驾驶时的实际使用温度条件,用于公路或公共场所。 本文件不涵盖残障人士或老年人的电动滑板车。此外,本文件不包括货运电动滑板车。 立即下载

相关推荐

YOLO26算法表面凹坑与条纹检测+训练好的模型+610张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[未获取()] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.7184** mAP50-95 | 0.4372 Precision | 0.6793 Recall | 0.7024 train/box_loss | 1.1399 train/cls_loss | 0.7578 val/box_loss | 1.3453 val/cls_loss | 1.0488 【训练过程分析】 记得从开始第一轮训练起,那曲线就一直像坐滑梯一样,很快地就下滑到了低谷值。大概到第 10 轮时,模型就开始缓慢而持续地从 0.5 左右的 mAP50 走向平稳上升的通道。整个训练过程,除了初期的那股势如破竹的气势外,中间部分的曲线就变得起伏不定,有时还会在某个阶段停滞不前,似乎在寻找下一个前进的方向。而到了后期,曲线又慢慢开始平稳下来,从第 80 轮开始,mAP50 的提升逐渐减缓,这时候,我不得不面对一个问题:是继续等待模型自行收敛,还是尝试更多的调参策略。在经过一轮轮的观察和思考后,我觉得继续等待已经不太可能有显著的进步,于是决定在第 95 轮时停下了脚步,最终完成了总共 100 轮的训练任务。 在训练过程的后半程,我注意到 loss 曲线虽然总体下降趋势明显,但在某些阶段却出现了停滞,特别是在第 70 轮到... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

怎样设计一个好架构:八个评价维度、四层思考深度,以及 23 种设计模式各自解决什么问题

架构要解决的是变化、理解、故障和协作的成本。本文从耦合、可迁移、可适配、复杂度等八个维度讲怎么评价架构,讲维度之间怎么取舍、架构思考可以分几层,再用可编译的 C 代码过一遍 23 种设计模式。

weixin_52400878的博客 308

编程语言扩展与跨边界架构设计:五种组合方式、统一判定与框架开发(20章)

本资源是一份 20章系统化技术长文,围绕“宿主语言如何借外部力量获得自身不具备的能力”展开,建立 “脚本解释器核心—适配层—被组合组件”三层统一模型,系统拆解 进程级、函数级、协议级、语言级、数据级 五种边界,并给出可复用的 三问拆解法、跨边界四要素、适配层厚薄定律与横向判定规则。内容覆盖 Shell 管道、Python import、requests/psycopg2、setuptools entry_points、Make/CMake、CI/CD、Lua 嵌入式脚本、Airflow DAG 等八个典型实例,深入讲解进程通信、ABI/FFI、动态库加载、import 协议、插件发现与入口点、HTTP 与数据库线协议、序列化与 Schema、构建编排、任务调度与数据管道等机制。文档同时包含混合系统主导/从属方式判定、选型决策树、反模式批判、框架开发清单、插件 SDK 设计、隔离策略、性能预算、可观测治理、综合实例、术语表、原文核心内容收录与交付校验清单。本资源适合 架构师、框架/平台开发者、插件系统设计者、跨语言集成工程师、后端与数据平台工程师、技术负责人 阅读,可作为技术选型、架构评审、插件体系设计、跨边界排障与团队内训的参考手册。关键词: 编程语言扩展、跨边界架构、五种边界、三层模型、进程级组合、函数级组合、协议级组合、语言级组合、数据级组合、插件系统、FFI、ABI、import机制、HTTP、数据库线协议、CI/CD、Lua、Airflow、框架设计、技术选型。

高扩展性AI应用架构指南:融合RAG检索、Agent编排与OpenAPI/RPC工具网关的设计模式

本文提出高扩展性AI应用的三层架构:RAG检索层(知识供给)、Agent编排层(决策推理)、工具网关层(能力执行)。通过检索策略路由实现智能分流,混合检索采用RRF融合算法提升精度;Agent层采用无状态设计与外部状态存储,支持水平扩展;工具网关层通过协议标准化与动态注册解耦系统。核心思想是各层独立演进,不相互牵制,实现从“能跑”到“可扩展”的工程跃迁。

2301_80078096的博客 180

植物大战僵尸神人版-手机版-arm64-2026.10.30-手机版.apk.1

植物大战僵尸神人版-手机版-arm64-2026.10.30-手机版.apk.1

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

设计模式速查

本文梳理12个核心设计模式,涵盖创建型、结构型与行为型,提供简洁Java实现与面试要点。重点解析单例(静态内部类)、工厂(方法/抽象)、建造者(链式构建)等高频模式,强调代码可维护性与扩展性,附速记口诀与对比表格,助力开发与面试双提升。

ttlovet的博客 153

【GAN实战】基于pytorch-CycleGAN与pix2pix的自定义数据集训练全攻略

本文详细解析了基于PyTorch的CycleGAN与pix2pix模型在自定义数据集上的完整训练流程。核心在于根据数据是否成对来正确选择模型:pix2pix适用于严格配对的“孪生”数据,而CycleGAN则擅长处理非配对的“散装”数据集。文章从数据准备、配置训练到测试应用,提供了全链路实战指南与关键参数调优心得,帮助开发者高效实现图像到图像的风格转换。

x2y3z4a5b的博客 704

【第四部分:Agentic 智能体设计模式】17. Agent 路由模式详解:从意图识别到动态模型选择

本文介绍 Agent Routing(路由模式)的基本原理与工程实现,重点分析任务路由、模型路由、工具路由和专业 Agent 路由的区别及适用场景。结合 BaseMetas EKA 企业知识助手,介绍规则与模型混合路由、Java Router 实现、复合任务处理、低置信度兜底和误路由评估,并以 Jev 专用决策模型、动态模型选择及 Tool Search 等近期技术为例,说明如何在保证权限与执行安全的前提下,提高 Agent 任务分发的准确性和效率。

weixin_42258782的博客 620

ENSP:小型企业网络拓扑设计

包含的技术:ospf、dhcp中继、ac+ap、vrrp+mstp、acl、浮动路由、静态路由、vlan划分

weixin_45921302的博客 1万+

【张量分解(二)】CP分解

一、CP分解 1.1 定义 CP分解就是将一个张量分解成多个单秩张量的和。例如,给定一个三阶张量X∈RI×J×K\mathcal{X}\in\mathbb{R}^{I\times J\times K}X∈RI×J×K,则CP分解可以写为 X≈∑r=1Rar∘br∘cr\mathcal{X}\approx\sum_{r=1}^{R}\textbf{a}_r\circ\textbf{b}_r\circ...

bqw的博客 2万+

设计模式与生活⑬:你坐几号线,谁来运营是另一回事

一到周五,小王的心情就会好一点。倒不是工作少了,而是想到这一天忙完,后面接着双休,心里就有盼头。地铁上,他抬头看标识,发现一件平时没留意的事:5 号线、10 号线常见的是“北京地铁”,4 号线却写着“京港地铁”。再想想,北京的机场也各有各的名字:首都机场、大兴机场。可在成都坐地铁,日常看到的统一称谓就是“成都地铁”。都是出行,名称和背后的主体并不完全一样。对乘客来说,常做的事还是那几样:查线路、进站、上车、到站下车。坐几号线是一条信息,谁来运营是另一条信息,不必揉成一团。同样是在北京坐地铁,线路和运营方并不

工一木子 212

头歌 JAVA 桥接模式实验

这样,通过客户端代码配置不同的 FileConvertor 子类和 DataHandler 子类(如 OracleHandler 或 SQLServerHandle),即可实现从不同数据库读取数据并转换成不同格式的功能,而无需修改已有代码。

m0_74091276的博客 3189

设计模式与生活⑭:一栋楼,共用一份热

今天是立冬。天气预报说夜里有暴雪,白天最高也就 4 度。早上起来,屋里比外面强不了多少。窗玻璃上蒙着一层水汽,摸一把暖气片,凉的。物业群里发了通知:今天开始试供暖,暖气片会慢慢热起来,顶层记得排气,边户留意自家热不热。隔了会儿再摸,暖气片上热下凉,温温的,不烫手。再晚一点,整间屋子总算有了点热乎气。一天里最踏实的一件事,是知道这栋楼里不只自己一户在等热。热力站烧的是一锅水,顺着管网送到每家,各家只管拧自己那个阀门。试供暖第一天,暖气片温而不烫今天聊的。

工一木子 310

论文笔记--Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting

Summary 在交通预测问题上,现有的框架通常利用给定的空间邻接图和复杂的机制来建模空间和时间关联。作者认为使用给定的空间邻接图会限制模型的有效时空相关性学习,并且它们通常使用单独的模块来实现空间和时间相关性,或者只使用独立的组件来捕获局部或全局的异质依赖关系,割裂了时空依赖关系。为此作者提出一种时空融合图神经网络用于交通预测。提出一种数据驱动的“时间图”生成方法,以此来补偿空间图可能没有反映的相关性。提出一种新的交通预测方法。 Problem Definition 交通预测中的挑战 以上图为

chenxino的博客 1755

用大白话讲解Carplay(原创)

用大白话讲解Carplay: Carplay是美国苹果公司开发的一套服务,用户通过这套服务可以将iPhone与车载系统连接,然后在车载大屏上操作使用iPhone手机。个人理解,Carplay不能叫车载系统,不是操作系统,只能算一种服务。让你在车上的大屏上使用iPhone,这样用起来更方便,不需要在手机小屏幕上操作。基于这一点,有些人也说Carplay就是个投屏的功能,将手机屏幕投屏到了车机大屏上。可以简单这么理解,但是并不只是投屏这么简单,如果只是投屏的话,车子只是起到了一个显示器的功能,其实不止,手机和

cici2013的专栏 2万+

设计模式与生活⑪:地铁里被打扰,别总靠自己硬扛

周三的地铁上,小王本来想在脑子里过一遍今天要做的事。旁边一位大哥戴着耳机打电话。耳机里对方说什么,别人听不见;大哥自己的声音,却一句一句落在外面。声音不算大,也没有嚷,可就是不停。你刚把那件事想到一半,旁边又接上一句;刚想不去留意,下一句又钻进来了。最磨人的不是哪一句特别响,而是你拿不准这通电话还要多久。小王没说什么,站起来,往车厢另一头挪了挪。距离拉开,思绪才慢慢接了回去。耳机收住了电话另一端的声音,收不住说话人的声音这让他想起之前的另一次经历。

工一木子 152

隧道裂缝检测【C++PCL】

我们团队注重每一个细节,确保代码的可读性、可维护性和可扩展性达到最高标准。我们严格遵循行业最佳实践,采用模块化和面向对象的设计原则,使得我们的代码结构清晰且易于理解。我们的点云服务更是引以为傲。我们的技术团队拥有深厚的专业知识和丰富的经验,能够提供高度准确和高效的点云处理服务。无论是点云的获取、存储还是分析,我们都能够满足客户的需求,并提供出色的解决方案。我们的技术实力也是无与伦比的,拥有广泛的技术背景和深入的专业知识。

weixin_45196569的博客 848

工作流 vs 自主 Agent:5 种设计模式与 3 种建模方式详解

本文基于 Anthropic《Building Effective Agents》指南,系统梳理了AI应用中的两类核心架构:Workflow(编排式)与Agent(自主智能体)。强调“能画流程图就不上Agent”,提出从简单提示链到复杂自主决策的5种可组合工作流模式,并给出选型口诀与工程实践建议。核心观点:优先用确定性、可审计的Workflow,仅在任务路径未知时启用Agent,避免盲目复杂化。

分享大数据、java相关的技术 146

2025.06.16【转录组】|Ribo-seq数据流程详解(二 基因组比对)

本文详细介绍了Ribo-seq数据分析中的比对流程,包括环境准备、STAR索引构建、比对参数设置及结果统计可视化。通过samtools和R脚本实现比对质量评估,提供常见问题解决方案和关键指标解读。该流程强调比对参数优化和质量控制,为后续翻译组学分析奠定基础。

1975

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

设计模式 - 访问者模式

概述 访问者模式(Visitor Pattern)是一种行为型设计模式,它通过为对象结构中的每个元素添加一个访问操作,使得可以在不改变元素类的前提下定义作用于这些元素的新操作。

2601_96797912的博客 156

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

【QT C++】常用设计模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

ocy的博客 229

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

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

设计模式概述

设计模式的意义、作用、分类等

lzy15192536135的博客 390

设计模式与生活⑩:地铁没变,你换了个状态

周二,没什么特别。小王照旧早起、吃早餐、坐地铁,到公司做日常开发。中午吃完饭,再去公司旁边遛一圈。普通的牛马的一天。地铁上倒有两个小片段。刚上去没座,他一只手扶杆,一只手刷手机。等他反应过来,已经坐过了一站。后来有了座,他靠着窗户,没一会儿睡着了。还是那班地铁,人已经从刷手机切到了睡觉还是小王,还是“列车到站”这件事,可他的反应已经不一样:刷手机时没留意,坐着清醒时会看站名,睡着后又听不见报站。今天聊的就是这个思路:**状态模式(State)——对象的内部状态变了,处理同一件事的方式也跟着变。

工一木子 169

常见设计模式-观察者模式

常见设计模式-观察者模式

qq_59093178的博客 381

适配器设计模式:一个“翻译官”的故事

适配器模式如“翻译官”,解决接口不兼容问题:客户端只认目标接口(Target),通过适配器(Adapter)将旧接口(Adaptee)转换为可识别形式。核心是组合持有被适配者,在目标方法中转发调用。典型应用如SpringMVC的HandlerAdapter,使DispatcherServlet能统一调用多种Controller写法,实现开闭原则与解耦。口诀:不匹配,加一层;认目标,做翻译。

weixin_51288065的博客 459
上一篇: 5、设计模式应用举例:观察者模式:统计文本中的单词和数字
下一篇: 7、设计模式应用举例:策略模式:加密、解密文件
博风
博客等级 码龄16年 442粉丝 357原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值