代码要写成别人看不懂的样子(十二)

飞桨day-02 卷积神经网络十二生肖识别实战 Day02-十二生肖实践作业 项目地址:十二生肖实战 paddle深度学习万能公式 一、问题定义 十二生肖分类的本质是图像分类任务,我们采用CNN网络结构进行相关实践。 二、数据准备 1、解压数据集 我们将网上获取的数据集以压缩包的方式上传到aistudio数据集中,并加载到我们的项目内。 在使用之前我们进行数据集压缩包的一个解压。 !unzip -q -o data/data68755/signs.zip 2、标注数据集 首先我们来看一下解压后的数据集张什么样子。 . ├── test │ ├ 阅读详情

本篇文章参考书籍《JavaScript设计模式》–张容铭

前言

  大家接触到 web 之后,一定会遇到一个硬骨头— IE 浏览器。当年我的一位学长告诉过我, IE 不死,社会将无法进步,那时年少无知,不理解其中的含义,现在时过境迁,回头想想,路人心在看,却是局中人~。
在这里插入图片描述
  跑题了跑题了,聊回我们今天的主题,大家肯定都会遇到过,当写好一部分功能之后,调试好了,有时可能已经部署到服务器上了,这时候项目经理拍了拍你的肩膀,和蔼可亲的对你说,来了个小需求,改动不大,你给加一下。

  这个时候,你要仔细斟酌一下这个“ 改动不大 ”的意思,一般来说,是指的结果改动不大,那具体实现过程改动大不大,就内部消化一下吧。

  为了减少上面那种情况,我们今天一起研究个新设计模式,访问者模式。

访问者模式

   针对对象结构中的元素,定义在不改变对象的前提下访问结构中元素的新方法 。

  举个例子,在 IE 中,用 attachEvent 绑定事件的时候, this 指向的是 window 而不是当前这个元素,那我们在使用 this 的时候,就会报错:

var bindEvent = function(dom, type, fn) {
	if(dom.addEventListener) {
		dom.addEventListener(type, fn, false);
	} else if(dom.attachEvent) {
		dom.attachEvent('on' + type, fn);
	} else{
		dom['on' + type] = fn;
	}
}
var demo = document.getElementById('demo');
bindEvent(demo. 'click', function() {
	this.style.background = 'red'; //IE中会报this.style为空或不为对象
});

  现在修改方法有两种,一种是把所有的 this 替换成 demo ,这种方法显然会修改方法内部参数,后续修改维护可能成本更大,那还有一种方法就是,给操作元素增加新的操作方法,如下:

function bindIEEvent(dom, type, fn, data) {
	var data = data || {};
	dom.attachEvent('on' + type, function(e) {
		fn.call(dom, e, data);
	});
};

  核心方法是调用了一次 call 方法,我们知道 call 和 apply 是更改函数执行时的作用域,这正是访问者模式的精髓,通过这个方法,我们就可以让某个对象在其他作用域中运行。

  还有一个有点是, call 和 apply 允许我们添加额外的参数,这一点很重要,因为有时候只通过事件参数 e 获取到的数据不够。

function $(id) {return document.getElementById(id)};
bindIEEvent($('btn'), 'click', function(e, d) {
	$('test').innerHTML = e.type + d.text + this.tagName;
}, {text: 'test demo'});

  上面代码,点击一下 id 为 btn 的按钮, id 为 test 的段落内容会变为 click test demo BUTTON 。

  访问者模式的应用不仅如此, JS 原生对象构造器就设计成一个访问者,比如在判断数据类型的时候,我们通过 Object.prototype.toString.call 的方式。这里我们可以扩展一下,在我们为对象添加属性的时候通常都是没有顺序的,这样就很难找到最后一次添加的属性,如果能像处理数组一样处理对象,就好了,我们通过 push 添加数据,通过 pop 删除最后一个成员。

  这里我们需要创建一个访问器,将必要的方法封装在里面,方便使用。

//访问器
var Vistor = (function() {
	return {
		//截取方法
		splice: function() {
			//splice 方法参数,从原参数的第二个参数开始算起
			var args = Array.prototype.splice.call(arguments, 1);
			//对第一个参数对象执行 splice 方法
			return Array.prototype.splice.apply(arguments[0], args);
		},
		//追加数据方法
		push: function() {
			//强化数组对象,使它拥有 length 属性
			var len = arguments[0].length || 0;
			//添加的数据从原参数的第二个参数算起
			var args = this.splice(arguments, 1);
			//校正 length 属性
			arguments[0].length = len + arguments.length - 1;
			//对第一个参数对象执行 push 方法
			return Array.prototype.push.apply(arguments[0], args);
		},
		//弹出最后一次添加的元素
		pop: function() {
			//对第一个参数对象执行 pop 方法
			return Array.prototype.pop.apply(arguments[0]);
		}
	}
})();

  有了这个访问器,我们就可以操作数组对象了。

var a = new Object();
console.log(a.length);   //undefined
Visitor.push(a, 1,2,3,4);
console.log(a.length);  //4
Visitor.push(a, 4,5,6);
console.log(a);         //Object {0: 1, 1: 2, 2: 3, 3: 4, 4: 4, 5: 5, 6: 6, lenght: 7}
Visitor.splice(a, 2);
console.log(a);         //Obkect {0: 1, 1: 2, length: 2}

  访问者模式可以解决数据与数据操作方法之间的耦合,将数据的操作方法独立于数据,使其可以自由演变,因此访问者模式适用于那些数据稳定,但是操作方法易变的化境。

中介者模式

   通过中介对象封装一些列对象之间的交互,使对象之间不再相互引用,降低他们之间的耦合 。

  中介模式与我们之前提到的观察者模式有点类似,它们都是通过消息的收发机制实现的,有点不同的是,观察者模式中,一个对象既可以是消息的发送者,也可以是接收者,他们之间交流信息依托于消息系统实现的解耦。

  而中介者模式中,消息发送只能通过中介对象来完成,对象不能订阅消息,只有那些活跃对象(订阅者),才可订阅中介者的消息,而且观察者模式还需要写一个消息系统,那样会增加开发成本。下面我们写一个中介者对象:

//中介者对象
var Mediator = function() {
	//消息对象
	var _msg = {};
	return {
		/**
		* 订阅消息方法
		* 参数 type    消息名称
		* 参数 action  消息回调函数
		*/
		register: function(type, action) {
			//如果该消息存在
			if(_msg[type]) {
				//存入回调函数
				msg[type].push(action);
			} else {
				//不存在则建立消息容器
				_msg[type] = [];
				//存入新消息回调函数
				_msg[type].push(action);
			}
		},
		/**
		* 发布消息方法
		* 参数 type    消息名称
		*/
		send: function(type) {
			//如果该消息已经被订阅
			if(_msg[type]) {
				//遍历已经存储的消息回调函数
				for(var i = 0, len = _msg[type].length; i < len; i++) {
					//执行该回调函数
					_msg[type][i] && _msg[type][i]();
				}
			}
		}
	}
} ();

  中介者创建出来了,为了保险起见,先用测试用例试验一下。

//单元测试
//订阅demo消息,执行回调函数--输出 first
Mediator.register('demo', function() {
	console.log('first');
})
//订阅demo消息,执行回调函数--输出 second
Mediator.register('demo', function() {
	console.log('second');
})
//发布 demo 消息
Mediator.send('demo');
//输出结果以此为
//first
//second

  熟悉外观模式的同学可能觉得这个和外观模式也有点像,中介者模式会对多个对象交互的封装,且这些对象一般处于同一层面上,并且封装的交互在中介者内部,而外观模式的目的是为了提供更简单易用的接口。

  本节的两个设计模式还是比较易懂的,大家使用设计模式的时候,可能会越用越乱,感觉这个和之前接触的别的设计模式有点像,但是又忘记具体是哪一个,总是有种狗熊掰棒子的感觉,就会现在这一个。

  其实这种感觉和正常,知识本来就有相似性,感觉乱说明你懂得多,这个时候就是一个量变转化质变的过程,各位同学坚持住,多看几遍,多用几遍,下一遍就能醍醐灌顶。



Wireshark实战解析IEC 61850 GOOSE报文:智能变电站通信调试指南 网络协议分析是理解现代工业通信系统的基础,其核心原理在于对数据包的捕获、解码与解析。在电力自动化领域,IEC 61850标准定义了智能变电站内设备间高效、可靠的通信框架,其中GOOSE(通用面向对象变电站事件)协议因其基于以太网多播和快速重传机制,成为保护跳闸、联锁等关键信号传输的基石,其技术价值在于实现了微秒级延迟的高可靠性通信。掌握GOOSE报文的分析能力,对于现场调试、故障定位及系统验证至关重要。本文聚焦于使用Wireshark这一网络分析工具,深入解析GOOSE报文结构,涵盖从以太网帧头、协议标识到 阅读详情

相关推荐

STM32G0实战:手把手教你用国产GD25Q16 Flash存储传感器数据(附完整驱动)

本文详细介绍了如何使用国产GD25Q16 Flash芯片与STM32G0系列MCU实现传感器数据存储的完整方案。从SPI接口配置、驱动层实现到存储系统架构设计,提供了实战代码和优化策略,帮助开发者快速构建高性价比的物联网数据存储系统。

weixin_30733003的博客 106

学会正确地二次封装组件,让同事抱着你的大腿喊大神!

二次封装,是指因为业务上的需要,对element-ui、antd、e-chart等其他组件库,做二次封装。以下是常见的二次封装场景......

qq_42365082的博客 8310

避坑指南:HslCommunication连接西门子PLC时常见的5个错误及解决方法(S7-1200/S1500适用)

本文详细解析了使用HslCommunication连接西门子S7-1200/S1500 PLC时常见的5个错误及解决方法,包括基础连接配置、数据块读写异常、连接闪断、防火墙与权限问题以及高级调试技巧。通过实战案例和代码示例,帮助开发者快速定位和解决连接问题,提升工业自动化项目的开发效率。

weixin_30752699的博客 395

记录 |探究一次嗅到坏代码后封装再封装

文章目录前言开搞 农药之坑,唯有陷入才知晓。每逢晋级赛,总要被打回原形。 前言 项目经历了一个又一个,代码撸了一遍又一遍,来来回回拷贝旧东西,似乎丝毫提不起兴趣。 想要手持大刀随意砍杀,却发现根基便有问题,扎心不扎心。 与其盲目调整根基,不如从点击积累,江河入海流,终将汇成汪洋大海! 首先简单说明下目前项目中遇到的问题吧: 重复性功能较多; 需求不明确造成多次返工,大量时间消耗无脑撸码微调...

静心 Study 602

AI工程实战:如何在实际工程中运用Claude Code

本文探讨了利用大型语言模型(LLM)进行复杂工程项目的结构化工作流。核心策略包括:1)规划先行,通过"探索子代理任务"主动分析代码库并澄清需求;2)定制AI行为,要求简洁输出和列出未解决问题;3)将大型任务分解为多阶段计划以管理上下文窗口限制;4)利用GitHub Issues作为外部存储实现跨会话状态持久化。这种"规划-执行"模式将AI从代码生成器升级为项目管理代理,通过与GitHub CLI等工具深度集成,实现了高效的多阶段工程协作。该方法展示了AI辅助编程向流程

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1089

闲人闲谈PS之十二——WBS-BOM在装备制造项目中的实战解析

本文深入解析了WBS-BOM在装备制造项目中的核心应用。针对按订单设计/生产的行业痛点,WBS-BOM作为项目专属物料清单,完美连接SAP PS与PP模块,确保MRP能基于项目进行精准物料需求计算,实现从设计到生产的全链路项目化跟踪与管理。

weixin_29284885的博客 399

封装的概念与使用

一、理解封装的作用 二、使用封装 java是面向对象的一门语言,而面向对象有三个特征:封装、继承、多态 一、封装的作用 在类的定义和对象的使用中,成员变量因为是公共的,所以可以随意的使用,类的属性,也没有规定,所以在对象中可以任意改变其值,甚至出现一些不合理的值,所以,就需要封装的作用, 封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 通俗的讲,就是以前需要访问类的静态属性,只需要对象名点属性就行,...

maduan12的博客 1万+

Redhawk解析PAD / IOPAD的实现方法

Redhawk解析IOPAD的实现方法1. IOPAD DEF的概念说明2. 生成 IOPAD GDS文件3. 生成 IOPAD DEF文件4. Redhawk解析过程中读取IOPAD DEF 本文主要简述【Redhawk解析IOPAD】的实现原理方法,具体脚本没有放在这里。 1. IOPAD DEF的概念说明 2. 生成 IOPAD GDS文件 注: getinfo2IODEF.tcl 是基于innovus获取IOPAD的摆放信息以及库信息。 run_cerate_iopadgds.csh 是基于c

kobayashiyou的博客 3154

代码要写成别人看不懂的样子(一)

本篇文章参考以下博文 文章目录前言 前言   最近读了一本书,张容铭老师的 《JavaScript设计模式》 ,书中提到的编码模式,编码风格,让我想起了我刚学 JS 的时候,特别向往像大神一样,全篇没什么 div 罗列,都是方法或者构造函数之类的东西,一顿操作后, body 里面只要添加一个 <div id=“demo”> ,大功告成。   逼格满满有没有,当时就想,什么时候我也能这样,别人看不懂我的代码,所有的事情不用自己手写,只要给一个容器,然后执行函数就

不见浅诗的博客 1713

Gerrit 使用操作手册

Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。...

九离的博客 1万+

基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析

第二步,对于每一个街道i,给定空间距离阈值d0,便形成另一个空间作用域,同样对于落在空间作用域内的每块绿地l的供给比率(Rl)利用高斯方程赋以权重,然后对这些加权后的供给比率(Rl)进行加和,便得到每个街道i的绿地可达性Ai。图3与图4是高斯两步移动搜索法的示例。在图3中,以d0为阈值,有1、2、3 三个街道中心点落在了绿地a的空间作用域内。同样在图4中,以d0为阈值,有a、c两个绿地中心点落在了街道2的空间作用域内,根据公式(3),对a、c高斯方程加权后的供需比率进行累加,便得到了街道2 的绿地可达性。

2301_77310370的博客 2404

代码要写成别人看不懂的样子(二十二)

本篇文章参考书籍《JavaScript设计模式》–张容铭 文章目录前言等待者模式 前言   本节我们处理一个老生常谈的问题,异步。为什么会出现异步这个问题呢?这要从 JS 出生之前说起。   很久很久以前,天和地还没有分开,宇宙混沌一片。有个叫盘古的巨人,在这混沌之中,一直睡了一万八千年。   有一天,盘古突然醒了。他见周围一片漆黑,就抡起大斧头,朝眼前的黑暗猛劈过去。只听一声巨响,混沌一片的东西渐渐分开了。轻而清的东西,缓缓上升,变成了天;重而浊的东西,慢慢下降,变成了地…   扯远了哈,异步问题是因为

不见浅诗的博客 291

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

惊!十二星座程序猿竟然这样写代码

原文链接 水瓶座 大概只有水瓶座的程序猿可以做到代码神秘到无人能解。 水瓶座,属于风系星座。常被称为“天才星座”或“未来星座”。他们较着重于精神层次的提升,是很好的启发对象。对于编程,也是如此。水瓶座程序猿的代码中充满了各种天马行空的奇思妙想,同样也含纳着一般人没法理解的抽象。 双鱼座 如果说水瓶座程序猿写的代码是来自外太空的探险童话,那双...

231

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

新手友好:借助快马AI零代码基础构建你的第一个十二生肖网页

最让我惊喜的是,代码里充满了中文注释,比如在HTML文件开头,注释会写着“定义文档类型和语言”,在导航栏部分会注明“这是导航栏容器,包含两个链接”。如果你也对制作小网页感兴趣,但又卡在第一步不知如何下手,不妨试试用自然语言描述你的想法,让工具帮你搭出框架,你再慢慢填充和修改,相信你也能快速收获自己的第一个作品。对于像我做的这种有页面、可以持续访问展示的网站项目,它还有一个“一键部署”功能,点一下就能生成一个公开的网址,可以直接分享给朋友看,特别方便。的背景色改成了一个非常浅的米黄色,看起来更柔和。

ThunderstormLynx23的博客 61

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

十二个相同样子球,有一个球重量不同,称三次确定球和轻重

原题:有十二个乒乓球形状、大小相同,其中只有一个重量与其它十一个不同,现在要求用一部没有砝码的天秤称三次,将那个重量异常的球找出来,并且知道它比其它十一个球较重还是较轻。   下面是程序的实现,,main里面有一段是读取文件的,不想每次测试数据都编译   import java.io.File; import java.io.BufferedReader; import java.io...

技术年代 959

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

用c#十二星座速配_用一句诗来形容十二星座性格,不准的话你咬我!

▼在你眼中,十二星座的性格都是什么样子的呢?——别说,先让文字君来一段Freestyle:白羊冲动金牛抠门双子神经质!巨蟹多疑狮子自恋处女爱挑剔!天秤纠结天蝎腹黑射手太花心!摩羯闷骚水瓶另类双鱼脑洞大!好吧,这些都是针对星座性格的大众认知。如果我们打开脑洞,用古典诗词来形容十二星座的性格,会是什么样的场景呢?▼ 白羊座孩子气爱冲动,热血起来绝对是《感动中国》的实力选手!李白大大这两句诗简直就是为白...

weixin_34632251的博客 163

看我七十二变

有近2星期没有写文章了,各种原因吧,主要是懒。 今天接着写吧,今天写一个孙悟空的七十二变。 变树、变房、变小女孩 我们会用到装饰模式,装饰模式是结构型设计模式的一种。 装饰模式也可以叫包装(Wrapper)模式,我对他的理解就是他替代了继承操作。 比如我们写一个孙悟空七十二变的例子,用继承是这么做的: 代码很简单就不写了,类图是这样子的 一、装饰模式类图 抽象构件(Component)角色:这是一个抽象接口,用以规范准备附加责任的对象 具体构件(ConcreteComponent)角色:这是一个具体的

qq_36291682的博客 734

十二生肖分类

基础知识 1.神经元 2. 神经网络 3. 卷积操作 3.1 单通道卷积 3.2 多通道卷积 3.3 多通道输出 3.4 Batch [N, C, H, W] 卷积核信息不变,卷积操作会多一定的倍数(和样本数有关)。 4. 池化层 池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知

qqGHJ的博客 1942

你看不懂的spring原理是因为不知道这几个概念

背景 问题从一杯咖啡开始。 今天我去楼下咖啡机买了一杯「粉黛拿铁」。制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力。咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉得味道不亚于星爸爸。但是不可否认它确实给了我一杯假的拿铁。 现在很多技术专家好比品鉴咖啡的专家。他们并不需要知道咖啡豆和可可豆的区别,更不知道这两种植物长在树上是什么样子。没关系,这并不影响...

xiexiaojing的博客 4813

c#设计12星座速配软件_星座代码:用vb编一个星座配对的程序代码

星座代码:用vb编一个星座配对的程序代码admin来源:2020-04-30 10:04:55阅读()评论(0)关于十二星座C#代码不同星座的程序员写起代码来分别是什么样子的?求你的计算生肖和星座的代码啊..谢谢!求,十二星座气泡代码,VB 星座查询代码…用vb编一个星座配对的程序代码简单是相对的,如果要求代码少而精,可能可读性与结构性就差,要求可读性与结构性比较好,可能代码会增多。就目前发展来说...

weixin_39719018的博客 1186

蓝桥杯十二到十五届B,C++组签到题

本人是双非科班大一,马上第一次参加蓝桥杯,在参加之前只接触了三个月左右的算法,还是个蒟蒻,斗胆写下一些自己写真题的感受与方法,如有不对请指正。

prime6899的博客 1433

hdu(2181):哈密顿绕行世界问题,dfs遍历

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181 此题真的是一个水题,当然也只有这种题目才给了我前进的动力,要是一直被各种打压,岂不得累死! 这个题只是求路径存在问题,所以正十二面体长啥样样我们并不关心,只要打印对于解就可以了。 下面是一些关于正十二面体的一些知识点:   这是正十二面体的样子: , 展开图:   一些常用数

catch_catch的专栏 1358

CQOI2019(十二省联考)游记

CQOI2019(十二省联考)游记 Day -? 自从联赛爆炸,\(THUWC\)爆炸,\(WC\)爆炸(就没有不爆炸的)之后我已经无所畏惧... 听说是考\(4.5 h\)吗? Day -1 \(ZKX\)学长来机房表演\(5\)分钟\(LCT\),他学了这么久的文化课还是这么强啊!然后他又请我们吃火锅,鼓励大家,超好评。 还提前收到了生日礼物!总之今天比较开心吧。 Day0 跑到南开试机。南开...

weixin_34121304的博客 130

Android9编程十二:代码操作控件

上一篇:Android9编程十一:各种Layout控件 所有的控件都是从类View派生,所以控件也被叫做View。各种Layout控件当然也是View了,但由于其作用特殊,所以我们单独称它们为Layout(同时我们把一个UI资源文件件有时也称做layout资源,因为它在res/layout组下)。 Activity中创建界面 Activity虽然代表一个页面,但是它却不是View,然而它却能管理V...

nkmnkm的专栏 1107
上一篇: 地表最强Grid布局
下一篇: 代码要写成别人看不懂的样子(十三)
不见浅诗~
博客等级 码龄7年 506粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值