前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >XML 简介及用法详解

XML 简介及用法详解

原创
作者头像
小万哥
发布于 2024-03-14 14:08:09
发布于 2024-03-14 14:08:09
7720
举报
文章被收录于专栏:程序人生丶程序人生丶

XML 是一种用于存储和传输数据的与软件和硬件无关的工具。

什么是XML?

XML代表eXtensible Markup Language(可扩展标记语言)。XML是一种与HTML非常相似的标记语言。XML被设计用于存储和传输数据。XML被设计成具有自我描述性。XML不执行任何操作,也许有点难理解,但XML不执行任何操作。

XML示例

这是一张存储为XML的给Tove的Jani的便签:

代码语言:xml
AI代码解释
复制
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

上面的XML相当自我描述:

  • 它包含了发件人信息
  • 它包含了收件人信息
  • 它有一个标题
  • 它有一个消息正文

但是,上面的XML仍然不执行任何操作。XML只是用标记包装的信息。

必须有人编写一段软件来发送、接收、存储或显示它:

代码语言:plaintext
AI代码解释
复制
Note
To: Tove

From: Jani

Reminder
Don't forget me this weekend!

XML和HTML的区别

XML和HTML是出于不同目的而设计的:

  • XML被设计用于携带数据 - 专注于数据是什么
  • HTML被设计用于显示数据 - 专注于数据的呈现方式

XML标签不像HTML标签那样是预定义的。XML语言没有预定义的标签。上面示例中的标签(如<to><from>)在任何XML标准中都未定义。这些标签是XML文档的作者“创造”的。

HTML使用预定义标签,如<p><h1><table>等。使用XML,作者必须定义标签和文档结构。

XML是可扩展的

大多数XML应用程序即使添加(或删除)新数据也能正常工作。

想象一个应用程序,设计用于显示note.xml的原始版本(<to> <from> <heading> <body>)。然后想象一个具有添加的<date><hour>元素以及删除<heading>的新版本的note.xml

XML构造的方式使得旧版本的应用程序仍然可以工作:

代码语言:xml
AI代码解释
复制
<note>
  <date>2015-09-01</date>
  <hour>08:30</hour>
  <to>Tove</to>
  <from>Jani</from>
  <body>Don't forget me this weekend!</body>
</note>

旧版本

代码语言:plaintext
AI代码解释
复制
Note
To: Tove

From: Jani

Reminder
Don't forget me this weekend!

新版本

代码语言:plaintext
AI代码解释
复制
Note
To: Tove

From: Jani

Date: 2015-09-01 08:30

Don't forget me this weekend!

XML简化事务

  • XML简化数据共享
  • XML简化数据传输
  • XML简化平台更改
  • XML简化数据可用性

许多计算机系统包含以不兼容格式存储的数据。在不兼容的系统(或升级的系统)之间交换数据对于Web开发人员来说是一项耗时的任务。必须转换大量数据,并且通常会丢失不兼容的数据。

XML以纯文本格式存储数据。这提供了一种与软件和硬件无关的存储、传输和共享数据的方式。

XML还使得扩展或升级到新的操作系统、新的应用程序或新的浏览器变得更容易,而不会丢失数据。

使用XML,数据可以供各种“阅读机器”使用,如人类、计算机、语音机器、新闻源等。

XML的用途

XML在Web开发的许多方面都得到了应用。

XML分离数据与演示

XML通常用于将数据与演示分离。XML不包含有关如何显示的任何信息。相同的XML数据可以在许多不同的演示情境中使用。因此,使用XML,数据和演示之间存在完全的分离。

XML通常与HTML搭配使用

在许多HTML应用程序中,XML用于存储或传输数据,而HTML用于格式化和显示相同的数据。

XML分离数据与HTML

在HTML中显示数据时,当数据发生变化时不应该修改HTML文件。使用XML,数据可以存储在单独的XML文件中。通过几行JavaScript代码,您可以读取一个XML文件并更新任何HTML页面的数据内容。

Books.xml示例:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>

  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>

  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>

  <book category="web">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>
  </book>

  <book category="web" cover="paperback">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>

</bookstore>

事务数据

存在成千上万种XML格式,用于描述不同行业的日常数据交易:

  • 股票和股份
  • 金融交易
  • 医疗数据
  • 数学数据
  • 科学测量
  • 新闻信息
  • 天气服务

示例 XML

XMLNews是用于交换新闻和其他信息的规范。使用标准使得新闻制作者和新闻消费者更容易在不同的硬件、软件和编程语言之间产生、接收和存档任何类型的新闻信息。

一个示例XMLNews文档:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<nitf>
  <head>
    <title>Colombia Earthquake</title>
  </head>
  <body>
    <headline>
      <hl1>143 Dead in Colombia Earthquake</hl1>
    </headline>
    <byline>
      <bytag>By Jared Kotler, Associated Press Writer</bytag>
    </byline>
    <dateline>
      <location>Bogota, Colombia</location>
      <date>Monday January 25 1999 7:28 ET</date>
    </dateline>
  </body>
</nitf>

示例 XML 天气服务

来自美国国家海洋和大气管理局(NOAA)的XML国家气象服务:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<current_observation>

<credit>NOAA's National Weather Service</credit>
<credit_URL>http://weather.gov/</credit_URL>

<image>
  <url>http://weather.gov/images/xml_logo.gif</url>
  <title>NOAA's National Weather Service</title>
  <link>http://weather.gov</link>
</image>

<location>New York/John F. Kennedy Intl Airport, NY</location>
<station_id>KJFK</station_id>
<latitude>40.66</latitude>
<longitude>-73.78</longitude>
<observation_time_rfc822>Mon, 11 Feb 2008 06:51:00 -0500 EST
</observation_time_rfc822>

<weather>A Few Clouds</weather>
<temp_f>11</temp_f>
<temp_c>-12</temp_c>
<relative_humidity>36</relative_humidity>
<wind_dir>West</wind_dir>
<wind_degrees>280</wind_degrees>
<wind_mph>18.4</wind_mph>
<wind_gust_mph>29</wind_gust_mph>
<pressure_mb>1023.6</pressure_mb>
<pressure_in>30.23</pressure_in>
<dewpoint_f>-11</dewpoint_f>
<dewpoint_c>-24</dewpoint_c>
<windchill_f>-7</windchill_f>
<windchill_c>-22</windchill_c>
<visibility_mi>10.00</visibility_mi>

<icon_url_base>http://weather.gov/weather/images/fcicons/</icon_url_base>
<icon_url_name>nfew.jpg</icon_url_name>
<disclaimer_url>http://weather.gov/disclaimer.html</disclaimer_url>
<copyright_url>http://weather.gov/disclaimer.html</copyright_url>

</current_observation>

XML树

XML文档形成了一棵树状结构,从“根”开始分支到“叶子”。

XML树结构

DOM节点树

一个XML文档可以被看作是一棵树,这被称为DOM(Document Object Model)节点树。DOM节点树以根节点为起点,分支到各个子节点,形成一个层级结构。

一个XML文档的示例

上图表示了XML中的图书:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

XML树结构

XML文档被形成为元素树。

XML树始于根元素,从根元素分支到子元素。

所有元素都可以有子元素(子元素):

代码语言:xml
AI代码解释
复制
<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

术语父元素、子元素和兄弟元素用于描述元素之间的关系。

  • 父元素有子元素。
  • 子元素有父元素。
  • 兄弟元素是在同一级别上的子元素(兄弟姐妹)。

所有元素都可以有文本内容(例如:Harry Potter)和属性(例如:category="cooking")。

自描述语法

XML使用了一种非常自描述的语法。

一个前导定义了XML版本和字符编码:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>

下一行是文档的根元素:

代码语言:xml
AI代码解释
复制
<bookstore>

下一行开始了一个<book>元素:

代码语言:xml
AI代码解释
复制
<book category="cooking">

<book>元素有4个子元素:<title><author><year><price>

代码语言:xml
AI代码解释
复制
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>

下一行结束了<book>元素:

代码语言:xml
AI代码解释
复制
</book>

从这个例子中,您可以假设XML文档包含了有关书店中书籍的信息。

XML语法规则

XML的语法规则非常简单和逻辑。这些规则易于学习和使用。

XML文档必须有一个根元素

XML文档必须包含一个作为所有其他元素的父元素的根元素:

代码语言:xml
AI代码解释
复制
<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

在这个例子中,<note> 是根元素:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

XML前导部分

这一行被称为XML前导部分:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>

XML前导部分是可选的。如果存在,它必须在文档中首先出现。

所有XML元素必须有一个结束标签

在XML中,省略结束标签是非法的。所有元素必须有一个结束标签:

代码语言:xml
AI代码解释
复制
<p>This is a paragraph.</p>
<br />

XML标签区分大小写

XML标签是区分大小写的。标签<Letter>与标签<letter>是不同的。

开放和关闭标签必须使用相同的大小写

代码语言:xml
AI代码解释
复制
<message>This is correct</message>

“开放和关闭标签”通常被称为“开始和结束标签”。

XML元素必须嵌套正确

在XML中,所有元素必须在彼此之内正确嵌套:

代码语言:xml
AI代码解释
复制
<b><i>This text is bold and italic</i></b>

XML属性值必须始终用引号括起来

XML元素可以具有类似HTML中的名称/值对的属性。在XML中,属性值必须始终用引号括起来:

代码语言:xml
AI代码解释
复制
<note date="12/11/2007">
  <to>Tove</to>
  <from>Jani</from>
</note>

实体引用

在XML中,一些字符具有特殊的含义。为了避免解释错误,需要使用实体引用:

代码语言:xml
AI代码解释
复制
<message>salary &lt; 1000</message>

XML中的注释

在XML中编写注释的语法与HTML类似:

代码语言:xml
AI代码解释
复制
<!-- This is a comment -->

在XML中保留空白

XML不截断多个空白,保留所有空白字符。

XML将新行存储为LF

XML将新行存储为LF(Line Feed)。

格式良好的XML

符合上述语法规则的XML文档被称为“格式良好”的XML文档。

XML元素

一个XML文档包含XML元素。

什么是XML元素?

一个XML元素是从(包括)元素的开始标签到(包括)元素的结束标签的所有内容。

代码语言:xml
AI代码解释
复制
<price>29.99</price>

一个元素可以包含:

  • 文本
  • 属性
  • 其他元素
  • 或以上的混合
代码语言:xml
AI代码解释
复制
<bookstore>
  <book category="children">
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

在上面的例子中:

  • <title><author><year><price> 具有文本内容,因为它们包含文本(如29.99)。
  • <bookstore><book> 具有元素内容,因为它们包含元素。
  • <book> 具有一个属性(category="children")。

空XML元素

没有内容的元素被称为空元素。

在XML中,可以这样表示一个空元素:

代码语言:xml
AI代码解释
复制
<element></element>

也可以使用所谓的自闭合标签:

代码语言:xml
AI代码解释
复制
<element />

这两种形式在XML软件(阅读器、解析器、浏览器)中产生相同的结果。

空元素可以有属性。

XML命名规则

XML元素必须遵循以下命名规则:

  • 元素名称区分大小写
  • 元素名称必须以字母或下划线开头
  • 元素名称不能以字母xml(或XML、Xml等)开头
  • 元素名称可以包含字母、数字、连字符、下划线和句点
  • 元素名称不能包含空格

除了xml,任何名称都可以使用,没有保留的单词(除了xml)。

最佳命名实践

  • 创建描述性的名称,比如:<person><firstname><lastname>
  • 创建简短和简单的名称,比如:<book_title> 而不是 <the_title_of_the_book>

命名约定

一些常用的XML元素命名约定:

  • 小写:<firstname>(所有字母都小写)
  • 大写:<FIRSTNAME>(所有字母都大写)
  • 蛇形命名:<first_name>(下划线分隔单词,常用于SQL数据库
  • 帕斯卡命名:<FirstName>(每个单词的首字母大写,C程序员常用)
  • 骆驼命名:<firstName>(每个单词的首字母大写,除了第一个,JavaScript中常用)

提示! 选择您的命名风格,并始终保持一致!

XML元素是可扩展的

XML元素可以扩展以携带更多的信息。

看下面的XML示例:

代码语言:xml
AI代码解释
复制
<note>
  <to>Tove</to>
  <from>Jani</from>
  <body>Don't forget me this weekend!</body>
</note>

假设我们创建了一个应用程序,从XML文档中提取<to><from><body>元素以生成以下输出:

代码语言:txt
AI代码解释
复制
MESSAGE
To: Tove
From: Jani

Don't forget me this weekend!

想象一下,XML文档的作者向其添加了一些额外的信息:

代码语言:xml
AI代码解释
复制
<note>
  <date>2008-01-10</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

应用程序是否应该崩溃或中断?

不应该。应用程序应该仍然能够在XML文档中找到<to><from><body>元素,并生成相同的输出。

这是XML的优点之一。它可以在不破坏应用程序的情况下进行扩展。

XML属性

XML元素可以有属性,就像HTML一样。

XML属性必须用引号括起来

属性值必须始终用引号括起来。可以使用单引号或双引号。

对于一个人的性别,<person>元素可以这样写:

代码语言:xml
AI代码解释
复制
<person gender="female">

或者像这样:

代码语言:xml
AI代码解释
复制
<person gender='female'>

如果属性值本身包含双引号,可以使用单引号,就像在这个例子中:

代码语言:xml
AI代码解释
复制
<gangster name='George "Shotgun" Ziegler'>

或者可以使用字符实体:

代码语言:xml
AI代码解释
复制
<gangster name="George &quot;Shotgun&quot; Ziegler">

XML元素 vs 属性

在XML中,没有规定何时使用属性或何时使用元素的规则。

我最喜欢的方式

以下三个XML文档包含完全相同的信息:

在第一个例子中使用了一个date属性:

代码语言:xml
AI代码解释
复制
<note date="2008-01-10">
  <to>Tove</to>
  <from>Jani</from>
</note>

在第二个例子中使用了一个<date>元素:

代码语言:xml
AI代码解释
复制
<note>
  <date>2008-01-10</date>
  <to>Tove</to>
  <from>Jani</from>
</note>

在第三个例子中使用了一个扩展的<date>元素:(这是我最喜欢的)

代码语言:xml
AI代码解释
复制
<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>Tove</to>
  <from>Jani</from>
</note>

避免使用XML属性?

在使用属性时要考虑的一些事项有:

  • 属性不能包含多个值(元素可以)
  • 属性不能包含树结构(元素可以)
  • 属性不容易扩展(以适应将来的更改)

不要陷入这种情况:

代码语言:xml
AI代码解释
复制
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

用于元数据的XML属性

有时会为元素分配ID引用。这些ID可以用来识别XML元素,方式与HTML中的id属性类似。以下是此示例:

代码语言:xml
AI代码解释
复制
<messages>
  <note id="501">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
  </note>
  <note id="502">
    <to>Jani</to>
    <from>Tove</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note>
</messages>

上述id属性用于标识不同的注释。它不是注释本身的一部分。

我想在这里说的是,元数据(关于数据的数据)应该存储为属性,而数据本身应该存储为元素。

XML命名空间

XML命名空间提供了一种避免元素名称冲突的方法。

名称冲突

在XML中,元素名称由开发人员定义。这通常导致在尝试混合来自不同XML应用程序的XML文档时发生冲突。

这个XML包含HTML表信息:

代码语言:xml
AI代码解释
复制
<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

这个XML包含有关桌子(家具的一部分)的信息:

代码语言:xml
AI代码解释
复制
<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

如果将这些XML片段相加,将会出现名称冲突。两者都包含一个<table>元素,但这些元素具有不同的内容和含义。

用户或XML应用程序将不知道如何处理这些差异。

使用前缀解决名称冲突

在XML中,可以通过使用名称前缀轻松避免名称冲突。

这个XML包含有关HTML表和家具的信息:

代码语言:xml
AI代码解释
复制
<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

在上面的例子中,不会发生冲突,因为这两个<table>元素具有不同的名称。

XML命名空间 - xmlns属性

在XML中使用前缀时,必须为前缀定义一个命名空间。可以通过元素的开始标记中的xmlns属性来定义命名空间。

命名空间声明具有以下语法:xmlns:prefix="URI"。

代码语言:xml
AI代码解释
复制
<root>

  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

在上面的例子中:

  • 第一个<table>元素中的xmlns属性为h:前缀提供了一个合格的命名空间。
  • 第二个<table>元素中的xmlns属性为f:前缀提供了一个合格的命名空间。

当为元素定义命名空间时,所有具有相同前缀的子元素都与相同的命名空间相关联。

命名空间也可以在XML根元素中声明:

代码语言:xml
AI代码解释
复制
<h:table>
  <h:tr>
    <h:td>Apples</h:td>
    <h:td>Bananas</h:td>
  </h:tr>
</h:table>

<f:table>
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>

</root>

注意: 解析器不使用命名空间URI查找信息。使用URI的目的是为命名空间提供一个唯一的名称。然而,公司通常将命名空间用作指向包含命名空间信息的网页的指针。

统一资源标识符(URI)

统一资源标识符(URI)是一个字符串,用于标识互联网资源。最常见的URI是统一资源定位符(URL),用于标识互联网域地址。另一种不太常见的URI类型是统一资源名称(URN)。

默认命名空间

为元素定义默认命名空间可以避免在所有子元素中使用前缀。它具有以下语法:xmlns="namespaceURI"。

这个XML包含HTML表信息:

代码语言:xml
AI代码解释
复制
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

这个XML包含有关家具的信息:

代码语言:xml
AI代码解释
复制
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

实际使用中的命名空间

XSLT是一种可用于将XML文档转换为其他格式的语言。

下面的XML文档是用于将XML转换为HTML的文档。

命名空间"http://www.w3.org/1999/XSL/Transform"标识HTML文档中的XSLT元素:

代码语言:xml
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr>
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
Minerva
2020/06/16
15.6K0
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
GAN、DCGAN、WGAN、SRGAN 演变与改进
来源:信息网络工程研究中心本文共1000字,建议阅读5分钟本文带你了解GAN、DCGAN、WGAN、SRGAN。 GAN 生成网络接收一个随机噪声,生成逼真图像; 判别网络接收一个图像,生成该图像是真实的概率(0~1); GAN网络中存在两个不同的网络,训练方式采用的是对抗训练方式,其中G的梯度更新信息来自于判别器D,而不是来自数据样本。 GAN不适合处理离散形式的数据,比如文本。 使用JS散度作为距离公式 DCGAN DCGAN(deep convolutional generative adversa
数据派THU
2022/05/25
6800
GAN、DCGAN、WGAN、SRGAN 演变与改进
生成对抗网络(GANs)最新家谱:为你揭秘GANs的前世今生
作者:Guim Perarnau 编译:Katherine Hou、朝夕、Katrine Ren、Shan LIU、笪洁琼、钱天培 生成对抗网络(GAN)一经提出就风光无限,更是被Yann Lecun誉为“十年来机器学习领域最有趣的想法”。 GAN“左右互搏”的理念几乎众所周知,但正如卷积神经网络(CNN)一样,GAN发展至今已经衍生出了诸多变化形态。 今天,文摘菌就来为大家盘点一下GAN大家庭中各具特色的成员们。 他们的名单如下: 1.DCGANs 2.Improved DCGANs 3.Conditio
大数据文摘
2018/05/24
7080
样本数量的线性时间计算复杂度GAN
A Characteristic Function Approach to Deep Implicit Generative Modeling 2020
CreateAMind
2024/05/06
1870
样本数量的线性时间计算复杂度GAN
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
最常见的评价GAN的方法就是主观评价。主观评价需要花费大量人力物力,且存在以下问题:
JOYCE_Leo16
2024/04/16
3580
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
这份攻略帮你「稳住」反复无常的 GAN
生成对抗网络(GAN)是一类非常强大的神经网络,具有非常广阔的应用前景。GAN 本质上是由两个相互竞争的神经网络(生成器和判别器)组成的系统。
机器之心
2019/04/29
1.1K0
这份攻略帮你「稳住」反复无常的 GAN
GAN的入门与实践
作者:Double_V 编辑:龚 赛 PART 01 GAN 简介 引言 生成对抗网络(Generative Adversarial Nets,GAN)是由open ai研究员Good fellow在2014年提出的一种生成式模型,自从提出后在深度学习领域收到了广泛的关注和研究。目前,深度学习领域的图像生成,风格迁移,图像变换,图像描述,无监督学习,甚至强化学习领域都能看到GAN 的身影。GAN主要针对的是一种生成类问题。目前深度学习领域可以分为两大类,其中一个是检测识别,比如图像分类,目标识别等等,
机器学习算法工程师
2018/03/06
1.1K0
GAN的入门与实践
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
【新智元导读】 作者用 DCGAN,WGAN,WGAN-GP 和 LSGAN 等生成对抗网络(GAN),使用拥有1万张猫的图片的 CAT 数据集做“生成猫咪的脸”的实验。结果有非常好的,也有不够好的,作者进行了分析并提出一些改进的方法。这个研究被GAN的提出者 Ian Goodfellow,Andrew Ng 等人在推特推荐,可以说是非常有趣的深度学习应用了。 我尝试使用生成对抗网络(GAN)来生成猫的脸。我想分别以较低和较高的分辨率使用 DCGAN,WGAN,WGAN-GP 以及 LSGAN。使用的数据集
新智元
2018/03/27
2.2K1
【猫咪生成器】DCGAN、WGAN等4种生成对抗网络猫咪图像对比
BEGAN解读
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/77575617
DoubleV
2018/09/12
6410
BEGAN解读
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
选自GitHub 作者:eriklindernoren 机器之心编译 参与:刘晓坤、思源、李泽南 生成对抗网络一直是非常美妙且高效的方法,自 14 年 Ian Goodfellow 等人提出第一个生成对抗网络以来,各种变体和修正版如雨后春笋般出现,它们都有各自的特性和对应的优势。本文介绍了主流的生成对抗网络及其对应的 PyTorch 和 Keras 实现代码,希望对各位读者在 GAN 上的理解与实现有所帮助。 PyTorch 实现地址:https://github.com/eriklindernoren/
机器之心
2018/05/08
9900
这些资源你肯定需要!超全的GAN PyTorch+Keras实现集合
[读书笔记]:撩一撩 Improved WGAN《多图慎入》
至于为什么第一次写WGAN呢,其实我也不知道为什么,可能是刚好最近再看吧,生成效果也不错。WGAN的作者们前后一共写了三篇论文,前两篇知乎上有人写了,写的很好很仔细,我开始也是看的那个,获益匪浅, 建议看一下,当然原文还是要看的。今天要说的是第三篇,作者propose了一个新的method,用来对之前WGAN的改进。论文中声称比之前的wgan converges 更快并且generates 图像质量更高。好了,废话不多说,下面进入正文。 ==说一句哈,这是我一次写成的,限于水平有限,说的不对的地方,大神请轻
用户1622570
2018/04/11
1.9K0
[读书笔记]:撩一撩 Improved WGAN《多图慎入》
六种改进均未超越原版:谷歌新研究对GAN现状提出质疑
选自arXiv 机器之心编译 参与:李泽南、路雪、蒋思源 令人沮丧的结果:尽管目前很多GAN的衍生算法都声称自己要比原版GAN更强大,谷歌大脑的新研究却对这种主张持否定态度。生成对抗网络(GAN)自Ian Goodfellow等人于2014年提出以来已成为机器学习界最火热的讨论话题,各种在它之上的改进型层出不穷。然而谷歌的论文指出,原版GAN在多种任务中的表现与其他模型相当,而在CIFAR-10上甚至有着最高的FID成绩。在社交网络上有人对此评价道:或许我们应该把目光转向到开发新架构上了。此论文已在redd
机器之心
2018/05/09
1.1K0
六种改进均未超越原版:谷歌新研究对GAN现状提出质疑
学界 | Goodfellow点赞的相对鉴别器:表征GAN中缺失的关键因素
生成对抗网络(GAN)[Hong et al., 2017] 是生成模型的一大类别,两个竞争的神经网络——鉴别器 D 和生成器 G 在其中玩游戏。训练 D 用于分辨数据的真假,而 G 用于生成可以被 D 误识别为真数据的假数据。在 Goodfellow 等 [2014] 提出的原始 GAN(我们称之为标准 GAN,即 SGAN)中,D 是分类器,用于预测输入数据为真的概率。如果 D 达到最佳状态,SGAN 的损失函数就会近似于 JS 散度(Jensen–Shannon divergence,JSD)[Goodfellow et al., 2014]。
机器之心
2018/07/26
8230
学界 | Goodfellow点赞的相对鉴别器:表征GAN中缺失的关键因素
万字综述之生成对抗网络(GAN)
前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇。可是在深度学习,GAN 领域,其进展都是以月来计算的,感觉那两篇综述有些老了。
机器之心
2019/04/29
3.4K0
万字综述之生成对抗网络(GAN)
使用Pytorch实现频谱归一化生成对抗网络(SN-GAN)
自从扩散模型发布以来,GAN的关注度和论文是越来越少了,但是它们里面的一些思路还是值得我们了解和学习。所以本文我们来使用Pytorch 来实现SN-GAN
deephub
2023/10/23
7680
使用Pytorch实现频谱归一化生成对抗网络(SN-GAN)
生成对抗网络(GAN)系列:WGAN与金融时序(附代码)
过拟合是我们试图将机器学习技术应用于时间序列时遇到的问题之一。出现这个问题是因为我们使用我们所知道的唯一时间序列路径来训练我们的模型:已实现的历史。
量化投资与机器学习微信公众号
2020/06/29
4.3K1
生成对抗网络(GAN)系列:WGAN与金融时序(附代码)
WGAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
https://www.zhihu.com/question/52602529/answer/158727900
CreateAMind
2018/07/24
3.2K0
WGAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)
在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文Wassertein GAN 却在 Reddit 的 Machine Learning 频道火了,连Goodfellow都在帖子里和大家热烈讨论,这篇论文究竟有什么了不得的地方呢?
CreateAMind
2018/07/25
2.7K0
通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)
【GAN优化】如何选好正则项让你的GAN收敛
今天讲述的内容还是GAN的训练,也是最后一期,做几个简单的小实验,告诉大家怎么给GAN加正则项,使得你的GAN尽可能收敛。其实今天的内容本来还是与动力学结合很紧密,但是考虑到复杂的数学内容可能有害无益,我就将数学部分都删除了,只展示最直观的结果。
用户1508658
2019/09/17
1.3K0
【GAN优化】如何选好正则项让你的GAN收敛
基于GANs的非配对学习用于图像增强
论文链接:http://openaccess.thecvf.com/content_cvpr_2018/papers/Chen_Deep_Photo_Enhancer_CVPR_2018_paper.pdf 实验demo: http://www.cmlab.csie.ntu.edu.tw/project/Deep-Photo-Enhancer/
Natalia_ljq
2020/06/03
1.3K0
基于GANs的非配对学习用于图像增强
推荐阅读
相关推荐
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 什么是XML?
  • XML示例
  • XML和HTML的区别
  • XML是可扩展的
  • XML简化事务
  • XML的用途
  • XML分离数据与演示
  • XML通常与HTML搭配使用
  • XML分离数据与HTML
  • 事务数据
    • 示例 XML
    • 示例 XML 天气服务
    • XML树
    • XML树结构
    • 一个XML文档的示例
  • XML树结构
    • 自描述语法
  • XML语法规则
    • XML文档必须有一个根元素
    • XML前导部分
    • 所有XML元素必须有一个结束标签
    • XML标签区分大小写
    • 开放和关闭标签必须使用相同的大小写
    • XML元素必须嵌套正确
    • XML属性值必须始终用引号括起来
    • 实体引用
    • XML中的注释
    • 在XML中保留空白
    • XML将新行存储为LF
    • 格式良好的XML
  • XML元素
    • 什么是XML元素?
    • 空XML元素
  • XML命名规则
    • 最佳命名实践
    • 命名约定
    • XML元素是可扩展的
  • XML属性
    • XML属性必须用引号括起来
    • XML元素 vs 属性
    • 避免使用XML属性?
    • 用于元数据的XML属性
  • XML命名空间
    • 名称冲突
    • 使用前缀解决名称冲突
    • XML命名空间 - xmlns属性
    • 统一资源标识符(URI)
    • 默认命名空间
    • 实际使用中的命名空间
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档