【转载】通过DOM操作数据(上)(下)

从M.2到E1.S,从U.2到E3.S:数据中心SSD接口的世代更迭与选择逻辑 本文深入探讨了数据中心SSD接口从M.2、U.2到E1.S、E3.S的演进历程与选型逻辑。通过对比分析不同接口的物理规格、性能表现和散热设计,揭示了EDSFF接口在数据中心环境中的优势,包括更高的部署密度、更好的散热效能和更强的扩展能力。文章还提供了针对不同应用场景的SSD选型建议,帮助IT决策者优化存储架构。 阅读详情
1、DOM树
所有类型的XML解析器都要求处理对象是“格式良好”的XML文档,有些还能根据DTD或XML Schema进行有效性验证,DOM(Document Object Model)解析器将XML文档一次性解析,生成一个位于内存中的对象树用以描述该文档。
DOM是一种与平台和语言无关的接口,它允许程序和脚本动态访问和修改文档的内容、结构和类型。它定义了一系列的对象和方法对DOM树的节点进行各种随机操作:
● Document对象:作为树的最高节点,Document对象是对整个文档进行操作的入口。
● Element和Attr对象:这些节点对象都是文档某一部分的映射,节点的定级层次恰好反映了文档的结构。
● Text对象:作为Element和Attr对象的子节点,Text对象表达了元素或属性的文本内容。Text节点不再包含任何子节点。
● 集合索引:DOM提供了几种集合索引方式,可以对节点按指定方式进行遍历。索引参数都是从0开始记数的。
DOM树中的所有节点都是从Node对象继承而来的。Node对象定义了一些最基本的属性和方法,利用这些方法可以实现对树的遍历,同时,根据属性还可以得知节点的名称、取值并判断其类型。
利用DOM,开发人员可以动态地创建XML、遍历文档、增加/删除/修改文档内容。DOM提供的API与编程语言无关,所以对一些DOM标准中没有明确定义的接口,不同解析器的实现方法也可能有所差别。为方便描述,本文的举例均采用MSXML DOM方案并用VB Script编写代码。
2、DOM树的结构
Document对象建立之后,就可以与XML文档或数据岛联系在一起。数据岛的加载方法是将数据岛ID赋给Document对象:
<XML ID=“dsoDetails” src=“Books.xml”></XML>
Set doc = dsoDetails.XMLDocument
加载文档大体上分为三步:
1.使用CreateObject方法创建分析器实例;
2.设置async属性为False,禁止异步加载,这样当文档加载完毕,控制权才会返回给调用进程,如果想获取文档加载状态,可以读取readyState属性值;
3.使用load方法加载指定文档。
Set doc = CreateObject(“Microsoft.XMLDOM”)
doc.async = False
doc.load “Books.xml”
XML DOM还提供了一种loadXML的方法可以把XML字符串加载到DOM树中,使用时只要把XML字符串直接作为该方法的参数即可。
3、DOM树的访问
在文档加载完毕之后就可以使用documentElement属性访问根元素:
Set rootNode = doc.documentElement
一旦建立了对DOM树中某个节点(例如根节点)的引用,就可以根据节点间的等级关系调用适当的方法进行遍历。
下面以books.xml为例说明各种方法的使用:
<xml id=“dsoBooks”>
<?xml version=“1.0”?><booklist><book>
<title>The Gourmet Microwave</title>
<price>9.95</price>
<author>Charlotte M. Cooper</author>
<author>Shelley B. Burke</author>
<author>Regina P. Murphy</author>
</book><book>
<title>Sushi, Anyone?</title>
<price>14.99</price></book><book>
<title>Straight Talk About Computers</title> <price>19.99</price>
<author>Lars Peterson</author>
</book></booklist></xml>
建立对第二个<book>元素的引用:
Set theNode =dsoBooks.XMLDocument.documentElement.childNodes(1)
● 根节点:theNode.ownerDocument返回Document节点,指向XML文档本身;
● 兄弟节点:theNode.previousSibling返回第1个<book>元素,theNode.nextSibling返回第3个<book>元素;
● 父节点:theNode.parentNode返回<booklist>元素;
● 子节点:theNode.firstChild返回<title>元素,theNode.lastChild返回<price>元素,theNode.childNodes返回子节点集合,包括Sushi下面的所有元素。节点记数从0开始,即theNode.childNodes(0)的结果与theNode.firstChild的结果是一样的。
获得节点的引用后,就可以读取节点的相关信息:
● 节点类型:theNode.nodeType,本例为1,Document对象类型为9,元素类型为1,属性类型为2;
● 节点名称:theNode.nodeName,本例为book;
● 节点值:theNode.nodeValue,本例为null,对于Attr节点,返回的是属性值,而对于Element节点,返回的是null。
在MSXML中,对Node对象还提供了一些额外的方法和属性:
● nodeTypeString:用字符串的方式显示节点类型,如theNode.nodeTypeString的结果是“element”;
● text: 显示当前节点及其所有子节点的文本内容;
● xml:获取XML文档数据,通常是从根元素开始的所有内容。
4、XML格式的动态转换
通过学习XSL,我们已经能够使用样式单对XML文档进行转换。但这种过程是静态的,即在编写代码时,已经指定了作用在XML上的XSL文件,在程序运行过程中不能再做改变。而利用DOM,我们能够实现XML格式的动态转换,即在程序运行时,将XSL载入并对XML文档进行转换。
把XSL载入DOM对象的步骤基本上与XML文档的载入过程是一样的(XSL本身就是XML文档):
Set stylesheet = CreateObject(“Microsoft.XMLDOM”)
stylesheet.async = False
stylesheet.load “TransformDetails.xsl”
DOM提供了两个函数进行这种转换,作用对象可以是树中任何节点。这样就可以实现对DOM树的任意的部分进行格式转换。
● transformNodeToObject方法:该方法需要两个参数,第一个参数指向XSL文件,第二个参数存放转换后的XML数据的节点。例如:
Set targetNode = CreateObject(“Microsoft.XMLDOM”)
srcNode.transformNodeToObject stylesheet, targetNode
● transformNode方法:该方法只需要一个参数指明XSL文件。如下例是将源节点转换为一个字符串变量str:
str = srcNode.transformNode(stylesheet)
上面介绍的方法在服务器上一样可以实现,而且更具实际意义:服务器可以根据客户端的不同身份,使用不同的样式单进行转换,同一份XML文档呈现在不同用户面前的形式是不一样的!

 

通过DOM操作数据(下)

1、DOM解析时的错误
DOM在解析XML文档的时候可能会产生各式各样的错误,可以根据ParseError对象中的属性得知出错的可能原因及相关信息。
常用的属性及其含义如下表所示:
属性说明
errorCode错误代码
filepos错误在文档中的绝对字符位置
line错误所在行的行号
linepos错误所在行的字符位置
reason错误产生原因
srcText错误所在行的源代码
url最近一份含有解析错误的XML文档的URL地址
2、访问DOM树中的元素与属性
DOM还提供了许多查找节点的方法。其中基于搜索机制的方法有:
● 根据标签名称搜索元素;
● 使用XSL模式搜索节点;
● 利用集合索引搜索节点。
以books.xml为例,Document对象中的getElementsByTagName方法就是根据参数中的标签名称在全文范围内查找元素的,返回值是一个NodeList对象:
Set doc = dsoDetails.XMLDocument
Set authors = doc.getElementsByTagName(“author”)
上述查询结果中包含了文档中出现的全部4位作者。如果调用的是Element对象中的getElementsByTagName方法,除了搜索范围缩小为该元素的所有后继节点之外,其他的情况都是一样的。
所有类型的节点都带有selectNodes方法,该方法的唯一参数是XSL的模式规则,返回值是匹配该规则的结果集合。调用这个方法可以利用XSL的模式匹配策略查找节点。例如:
Set rootNode = doc.documentElement
Set cheapbooks = rootNode.selectNodes(“//book[price < 10]”)
这个例子返回所有售价低于10元的<book>元素。另外,节点中的selectSingleNodes方法的用法与selectNodes是一样的,只是返回结果为查找到的满足条件的第一个节点而已。
对于元素节点,获取元素标签名称的方法有两种:anyElement.nodeName和anyElement.tagName。前者是Node对象的属性,后者是Element对象的属性。
如果想获取元素中的文本内容,如: <price>9.95
</price>时,访问Element对象中的nodeValue属性是错误的,这时返回结果是null,而不是预期的9.95。含有文本内容的元素都包含一个Text类型的子节点,所以只有通过Text对象中的nodeValue属性才能真正访问到文本内容。
添加元素的步骤如下:
● 创建一个Text节点并赋值;
● 创建Element节点;
● 把Text节点挂在Element节点下,作为它的子节点;
● 把Element节点插入到XML文档的合适位置上。
对于元素节点的删除和替换操作,首先都要对操作对象进行定位,然后相应地执行对象节点所属父节点的removeChild方法和replaceChild方法即可。
Attr节点的各种操作在原理上与Element节点相同。Attr对象同样继承了Node对象中的各种方法和属性,并且MSXML中还提供了name属性和value属性,能够更直接地访问到属性信息。另外,还可以通过属性所属元素的相关方法访问属性,如通过getAttribute和setAttribute方法读取属性值或修改属性值,或者用getAttributeNode方法直接返回Attr对象。
创建新属性最直接的办法就是使用Element对象中的setAttribute方法。也可以先用Document对象中的createAttribute方法设置属性值,然后使用Element对象中的setAttributeNode方法把新节点添加到DOM树中。同样地,删除属性最直接的方法是调用Element中的removeAttribute方法。另外一种方案是先用getAttributeNode方法对操作对象进行定位,然后执行removeAttributeNode操作。
从以上的介绍中可以看出,由于节点间的继承关系,以及各种类型节点本身提供的丰富的接口,用户可以很容易地找到一套适合自己需要的对象操作方案。
3、DOM的显示功能
DOM技术还可以用来显示XML数据。XSL样式单面向的是XML文档的转换,用于显示格式的转换是其应用的一个方面,所以在显示功能上还存在着一些不足:
● 不易完成对XML数据的复杂处理,如将英文字母全部转换为大写,截取指定长度的字符串,忽略一些特定的标点等;
● 不易对XML数据中的数值进行计算;
● 一个XSL通常是静态地作用到一个XML文档上,无法将多个XML文档中的数据用一个XSL合并转换为一个输出结果。
使用DOM就能够很好地解决上述问题,而且编写的脚本在服务器端和客户端都能够执行。在客户端可以根据情况创建友好的用户界面与用户进行交互,在服务器端使用脚本利用DOM可以按客户端的需求将数据进行组织并且发送。
下面的这个例子就是把XML文档转换成HTML中的表格:
Dim outstr
outstr = “<TABLE BORDER=1>”
Set listOrderitem = doc.selectNodes(“//orderitem”)
For Each node In listOrderitem
outstr = outstr & “<TR>” & _
“<TD>” & node.getAttribute(“title”) & _
“</TD>” & _
“<TD>” & node.getAttribute(“isbn”) & _
“</TD></TR>”
Next
outstr = outstr & “</TABLE>”
下面的这个例子则是对XML数据进行数值运算,计算书本的平均售价:
totalPrice = 0
Set listPrice = doc.selectNodes(“//price”)
For Each node In listPrice
totalPrice = totalPrice + node.firstChild.nodeValue
Next
avgPrice = totalPrice / listPrice.length
最后的这个例子显示了DOM 把多个XML文档合并转换显示的强大功能:
<XML ID=“dsoOrders” src=“Orders.xml”></XML>
<XML ID=“dsoCustomers” src=“Customers.xml”></XML>
Set docOrders = dsoOrders.XMLDocument
Set docCustomers = dsoCustomers.XMLDocument
outstr = “<P>Number of order items: ” & _
docOrders.selectNodes(“//orderitem”).length & _
“<P>Number of customers: ” & _
docCustomers.selectNodes(“//customer”).length

FPGA实践教程: 使用HLS将C程序生成IP核心进行FPGA开发 请根据您使用的FPGA开发板和供应商选择适当的HLS工具,并按照他们的安装指南进行安装。根据您使用的FPGA开发板和供应商选择适当的HLS工具,并按照他们的安装指南进行安装。通过本教程,您了解了如何使用HLS工具将C程序生成IP核心,并将其用于FPGA开发。在HLS项目中,您可以对C程序进行设计和优化,以生成对应的IP核心。在HLS项目中,您可以对C程序进行设计和优化,以生成相应的IP核心。将导出的IP核心导入到FPGA项目中。使用FPGA开发环境的菜单中的"导入"或"添加文件"选项导入IP核心。 阅读详情

相关推荐

Cadence Spectre仿真保姆级教程:从DC/AC到PSS/PV,手把手教你搞定模拟电路分析

作为业界标准的Cadence Spectre仿真器,以其精确的算法和丰富的分析类型,成为每个模拟IC工程师必须掌握的利器。本文将带你从零开始,系统掌握Spectre仿真的核心技能,从最基础的DC工作点分析到复杂的PSS相位噪声仿真,每个步骤都配有详细的操作指导和实用技巧。记得我第一次使用Spectre仿真一个简单的两级运放时,花了整整三天时间才得到正确的AC响应曲线。过程中踩过的坑、浪费的时间,现在想来都是宝贵的学习资源。与传统的AC分析不同,STB分析可以在不破坏环路的情况下评估稳定性。

weixin_30898555的博客 335

XSLT/XML与MSXML

       最近一阵发飚,猛地花了两天的时间来研究如何使用MSXML来转换XSLT/XML文档,目前也是小有所成吧。这方面的资料网上也比较少,为此也是花了不少功夫。其中感觉对自己最大的帮助莫过于MSDN了,几乎80%的信息来源都出于此。然后就是在网上找到了一篇英文的文章来介绍此的用法了。所以,对于初学者的忠告还是多研究MSDN,这里面的实例以及对各个接口的介绍要比网上那些乱七八糟的介绍要好多了,这里会更系统一些。当然,有了我这篇文章的话,你的入门就完全不用愁了(呵呵,自夸下)。      首先,在读这篇文

韵苑23栋工作室 1194

Coze工作流实战:Coze一键生成沉浸式历史故事视频

【coze工作流实战】一键生成火爆的沉浸式历史故事视频!短短3分钟,顶替你3天的工作量!

bickys的博客 1004

DOM常见的操作有哪些

DOM(文档对象模型)是一种用于表示和操作HTML和XML文档的标准。在JavaScript中,可以使用DOM API来对DOM进行操作。

一步一个脚印,踏实努力,向着目标前进 3065

从理论到实践:用CST微波工作室完成单站雷达RCS仿真的完整指南

本文提供了一份利用CST微波工作室进行单站雷达RCS仿真的完整实践指南。文章深入剖析了从求解器选择(重点推荐积分方程法)、模型与材料设置、平面波激励定义到后处理分析的完整逻辑链条,旨在帮助工程师不仅完成仿真,更能理解其背后的物理原理与工程考量,从而高效、精准地评估目标的电磁散射特性。

weixin_29256771的博客 181

从网格剖分到结果外推:一文拆解HFSS快速扫频(Fast Sweep)的底层逻辑与性能调优

本文深入解析了HFSS快速扫频(Fast Sweep)技术的底层逻辑与性能调优方法。通过ALPS算法实现频带外推,快速扫频相比离散扫频和插值扫频能提升3-5倍计算效率,特别适用于天线阵列、微波滤波器等宽频带分析场景。文章详细介绍了算法架构、参数优化策略及工程实践中的精度保障机制,帮助工程师高效完成电磁仿真。

weixin_28693447的博客 93

Js中DOM操作详解

一、DOM是什么 DOM:(Document Object Model)即文档对象模型。是W3C定义的访问文档的标准,他允许程序动态地访问、更新文档的内容、结构和样式; 二、元素获取 更改文档内容,首先需要获取元素对象,常见的获取元素的方法有标签,ID,类名等等; 1.ID获取元素; 通过ID获取是最方便的方式之一,但是一次只能获取一个,ID重复时,只获取第一个,对于需要大量获取的不太适用; document.getElementById('ID') 2.标签获取元素; 通过标签可以获取指定标签的全部

前端成长之路 5756

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 153

JavaScript DOM操作详解

DOM全称Document Object Model 是JavaScript操作网页内容的接口,它讲HTML文档表示为节点树,允许我们通过JavaScript动态的访问和更新HTML文档的内容、结构和样式。

2403_88272287的博客 1403

深度学习笔记(3)——kernel(内核)与filter(滤波器)

本文仅仅简单介绍了kernel和filter的概念,介绍了确定filter和kernel个数的方法。

cs111211的博客 7139

Unity AssetBundle解包实战指南:从工具使用到编程解析

在游戏开发与资源管理中,资源打包与加载是核心技术环节。AssetBundle作为Unity引擎官方推荐的资源分发方案,其本质是一个包含头部信息、目录表、数据区及依赖关系的结构化文件系统,通过序列化机制将游戏资源转换为二进制格式。理解AssetBundle的机制对于实现高效的热更新、减少资源冗余、优化加载性能具有重要价值,广泛应用于游戏开发、竞品分析、技术研究等场景。本文聚焦AssetBundle解包这一实践需求,系统介绍如何利用AssetStudio、UABE等主流工具进行资源提取与可视化分析,并深入探讨通

weixin_28192383的博客 347

DOM常见的操作有哪些?

日常前端开发,我们都离不开DOM操作在以前,我们使用Jqueryzepto等库来操作DOM,之后在vueAngularReact等框架出现后,我们通过操作数据来控制DOM(绝大多数时候),越来越少的去直接操作DOM但这并不代表原生操作不重要。相反,DOM操作才能有助于我们理解框架深层的内容下面就来分析DOM。

aaaa_aaab的博客 1111

垂直领域论坛数据挖掘:Python突破Discuz!加密与用户画像构建指南

在垂直领域论坛,如专业技术论坛、兴趣爱好社区等,积累了大量有价值的信息和用户数据。这些数据不仅可以帮助我们了解用户的行为模式和兴趣点,还能为社区运营、产品优化、商业决策等提供有力支持。然而,许多基于Discuz!系统的论坛对数据进行了加密保护,给数据挖掘带来了一定的挑战。本文将详细探讨如何使用Python突破Discuz!论坛的加密机制,并构建用户画像,实现数据掘金。

u014481728的博客 1695

mouted vue 操作dom_Vue提供操作DOM的方法

Vue.js 提供了我们一个获取 DOM 对象的接口—— vm.$refs。在这里,我们通过了 this.$refs.wrapper访问到了这个 DOM 对象,并且我们在 mounted 这个钩子函数里,this.$nextTick 的回调函数中初始化因为 Vue 是数据驱动的, Vue 数据发生变化(this.data = res.data)到页面重新渲染是一个异步的过程,我们的初始化时机是要在...

weixin_32059007的博客 716

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

JQuery中的DOM操作(转载)

原文链接:http://www.cnblogs.com/ILYljhl/archive/2013/07/10/3182414.html jQuery封装了大量DOM操作的API,极大提高了操作DOM节点的效率。 1、查找节点   通过我们上一节介绍了JQuery选择器,可以非常轻松地查找节点元素。不过,这时得到的是jQuery对象,只能使用jQuery的API。   1.1...

datai3890的博客 117

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

使用JQuery操作DOM

1.DOM操作 DOM操作分为三类:DOM Core:任何一种支持DOM的编程语言都可以使用它,如getElementById()HTML-DOM:用于处理HTML文档,如document.formsCSS-DOM:用于操作CSS,如element.style.color="green" 提示:JavaScript用于对(x)html文档进行操作,它对这三类DOM操作都提供了支持 2.jQu...

weixin_30347009的博客 90

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

DOM操作表格——HTML DOM

html创建表格:<table berder='1' width='300'> <thead> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th&...

diuxieyu2483的博客 226

原生DOM操作vs框架虚拟DOM比较

1. 原生 DOM 操作 vs. 通过框架封装操作。 这是一个性能 vs. 可维护性的取舍。框架的意义在于为你掩盖底层的 DOM 操作,让你用更声明式的方式来描述你的目的,从而让你的代码更容易维护。没有任何框架可以比纯手动的优化 DOM 操作更快,因为框架的 DOM 操作层需要应对任何上层 API 可能产生的操作,它的实现必须是普适的。针对任何一个 benchmark,我都可以写出比任何框架更快...

weixin_30401605的博客 338

大批量的DOM操作如何优化

特别是大批量的DOM操作,只要一次有几百上千的级别就容易造成页面卡顿。特别是不要在一个for循环里不断地修改DOM,如下代码: for(var i = 0; i < 1000; i++) { ul.appendChild(li); } 这种可以先把li拼好了,再一次性appen...

chizhaoyi5484的博客 754

javaScript 原生DOM节点操作(最实用的dom节点操作大全)

简单介绍一下DOMDOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。也就是说把文档编译成了一个对象模型,例如我们写的html文件实际上是一个文档文件,通过我们的浏览器把它编译成了一个对象模型,这个模型就是document对象。DOM 以树结构表达 HTML 文档。就好像是一个家族谱,有父级元素也有对...

博客简介 1958

jQuery操作列表数据转成Json再输出为html dom树

jQuery 把列表数据转成Json再输出为如下 dom树 <div id="menu" class="lv1"> <ul class="menu"> <li><a href="#" class="parent"><span>aaaaaaaaaaa</span><...

weixin_30785593的博客 440

限制通过DOM操作所引发回流的次数

1.在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入。        2.在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除:            1. 通过removeChild()或者replaceChild()实现真正意义上的删除。            2. 设置该元素的display样式为“none”。            修改操作完成后,将上面...

weixin_34221073的博客 287

React获得真实的DOM操作

真实的DOM操作 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 组件并不是真实的...

dianmo5898的博客 341

dom js 同级_js中Dom操作的个人总结

一 js中的Dom操作处理一 获取元素querySelector的性能会比get系列的要高,因为返回的是nodeList的快照。querySelector获取的是快照,所以当元素更新的时候,获取的快照不会更新。querySelector系列是静态的,get系列是动态的。其中,document.getElementById('mybtn')只有document才有document.querySele...

weixin_28867333的博客 244

【转载】DOM树节点解析(转)

DOM是解析XML文件的官方标准,它与平台和语言无关。DOM解析将整个XML文件载入并组装成一棵DOM节点树,然后通过遍历、查找节点以读取XML文件中定义的数据。由于DOM解析中把所有节点都载入到内存中,因而它比较耗资源,而且它需要把整棵节点树构建完成后开始读取数据,因而它相对性能也不好;不过由于它在内存中保存了DOM节点树,因而它可以多次读取,并且它的节点树定义比较容易理解,因而操作起来比较简单

hcyFly 663

使用Jquery操作DOM对象

Dom操作分类 DOMCore:任何一种支持DOM的编程语言都可以使用它,如getElementById() HTML-DOM:用于处理HTML文档,如document.forms CSS-DOM:用于操作CSS,如element.style.color="green" 提示:JavaScript用于对(x)html文档进行操作,它对这三类DOM操作都提供了支持。 jQuery中的DOM...

weixin_30919429的博客 214
上一篇: 【转载】什么是VML ?
下一篇: 【转载】使用VML技术实现圆角表格的绘制
hitzqb
博客等级 码龄20年 8粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值