blob: c19e056a40f4309666f09c34bbff2412695baf31 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>损失(Loss) &mdash; singa 2.0.0 documentation</title>
<script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'2.0.0',
LANGUAGE:'None',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="度量(Metric)" href="metric.html" />
<link rel="prev" title="初始化器(Initializer)" href="initializer.html" />
<link href="../_static/style.css" rel="stylesheet" type="text/css">
<!--link href="../_static/fontawesome-all.min.css" rel="stylesheet" type="text/css"-->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css"
integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<style>
.fa:hover {
opacity: 0.7;
}
.fab:hover {
opacity: 0.7;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> singa
<img src="../_static/singa.png" class="logo" alt="Logo"/>
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">文档</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="installation.html">安装</a></li>
<li class="toctree-l2"><a class="reference internal" href="software_stack.html">软件架构</a></li>
<li class="toctree-l2"><a class="reference internal" href="device.html">设备(Device)</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">张量(Tensor)</a></li>
<li class="toctree-l2"><a class="reference internal" href="layer.html">层(Layer)</a></li>
<li class="toctree-l2"><a class="reference internal" href="net.html">前馈网络</a></li>
<li class="toctree-l2"><a class="reference internal" href="initializer.html">初始化器(Initializer)</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">损失(Loss)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#class-singa-loss-loss">class singa.loss.Loss</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#backward">backward()</a></li>
<li class="toctree-l4"><a class="reference internal" href="#evaluate-flag-x-y">evaluate(flag, x, y)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#forward-flag-x-y">forward(flag, x, y)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#class-singa-loss-softmaxcrossentropy">class singa.loss.SoftmaxCrossEntropy</a></li>
<li class="toctree-l3"><a class="reference internal" href="#class-singa-loss-squarederror">class singa.loss.SquaredError</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id1">backward()</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id2">evaluate(flag, x, y)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id3">forward(flag, x, y)</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="metric.html">度量(Metric)</a></li>
<li class="toctree-l2"><a class="reference internal" href="optimizer.html">优化器(Optimizer)</a></li>
<li class="toctree-l2"><a class="reference internal" href="data.html">数据(Data)</a></li>
<li class="toctree-l2"><a class="reference internal" href="image_tool.html">图像工具</a></li>
<li class="toctree-l2"><a class="reference internal" href="snapshot.html">Snapshot</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
<li class="toctree-l2"><a class="reference internal" href="model_zoo/index.html">模型库</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../downloads.html">下载 SINGA</a></li>
</ul>
<p class="caption"><span class="caption-text">开发</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../develop/schedule.html">开发时间表</a></li>
<li class="toctree-l1"><a class="reference internal" href="../develop/how-contribute.html">如何贡献给 SINGA</a></li>
<li class="toctree-l1"><a class="reference internal" href="../develop/contribute-code.html">如何贡献代码</a></li>
</ul>
<p class="caption"><span class="caption-text">社区</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community/source-repository.html">源代码库</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/mail-lists.html">项目邮件列表</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/issue-tracking.html">问题追踪</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/team-list.html">SINGA团队</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">singa</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">文档</a> &raquo;</li>
<li>损失(Loss)</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="loss">
<h1>损失(Loss)<a class="headerlink" href="#loss" title="Permalink to this headline"></a></h1>
<p>损失模块包括一组训练损失实例。 有些是从C ++实现转换而来的,其余的都是直接使用python Tensor实现的。</p>
<p>示例用法:</p>
<div class="highlight-python"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">singa</span> <span class="kn">import</span> <span class="n">tensor</span>
<span class="kn">from</span> <span class="nn">singa</span> <span class="kn">import</span> <span class="n">loss</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">tensor</span><span class="o">.</span><span class="n">Tensor</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">x</span><span class="o">.</span><span class="n">uniform</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="c1"># randomly genearte the prediction activation</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">tensor</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">int</span><span class="p">))</span> <span class="c1"># set the truth</span>
<span class="n">f</span> <span class="o">=</span> <span class="n">loss</span><span class="o">.</span><span class="n">SoftmaxCrossEntropy</span><span class="p">()</span>
<span class="n">l</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="bp">True</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="c1"># l is tensor with 3 loss values</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span> <span class="c1"># g is a tensor containing all gradients of x w.r.t l</span>
</pre></div>
</div>
<hr class="docutils" />
<div class="section" id="class-singa-loss-loss">
<h2>class singa.loss.Loss<a class="headerlink" href="#class-singa-loss-loss" title="Permalink to this headline"></a></h2>
<p>基类:<code class="docutils literal"><span class="pre">object</span></code></p>
<p>损失类的基类</p>
<p>封装C++损失类的子类可以使用此基类继承的forward,backward和evaluate函数。 其他子类需要重写这些函数</p>
<div class="section" id="backward">
<h3>backward()<a class="headerlink" href="#backward" title="Permalink to this headline"></a></h3>
<p><strong>返回值:</strong> 与损失相对应的梯度</p>
</div>
<hr class="docutils" />
<div class="section" id="evaluate-flag-x-y">
<h3>evaluate(flag, x, y)<a class="headerlink" href="#evaluate-flag-x-y" title="Permalink to this headline"></a></h3>
<p><strong>参数:</strong></p>
<ul class="simple">
<li><strong>flag (int)</strong> – 必须是kEval</li>
<li><strong>x (Tensor)</strong> – 预测Tensor</li>
<li><strong>y (Tensor)</strong> – 真实Tensor</li>
</ul>
<p><strong>返回值:</strong> 所有样本的平均损失</p>
</div>
<hr class="docutils" />
<div class="section" id="forward-flag-x-y">
<h3>forward(flag, x, y)<a class="headerlink" href="#forward-flag-x-y" title="Permalink to this headline"></a></h3>
<p>计算损失值</p>
<p><strong>参数:</strong></p>
<ul class="simple">
<li><strong>flag</strong> – kTrain/kEval或布尔值。如果是kTrain/True,那么在下一次调用forward前会先调用backward计算梯度。</li>
<li><strong>x (Tensor)</strong> – 预测Tensor</li>
<li><strong>y (Tensor)</strong> – 真实Tensor, x.shape[0]必须和y.shape[0]相同</li>
</ul>
<p><strong>返回值:</strong> tensor,每个样本对应一个浮点型损失值</p>
</div>
</div>
<hr class="docutils" />
<div class="section" id="class-singa-loss-softmaxcrossentropy">
<h2>class singa.loss.SoftmaxCrossEntropy<a class="headerlink" href="#class-singa-loss-softmaxcrossentropy" title="Permalink to this headline"></a></h2>
<p>基类:<code class="docutils literal"><span class="pre">singa.loss.Loss</span></code></p>
<p>此损失函数是SoftMax和交叉熵损失的结合。它通过SoftMax函数转换输入,然后根据真实值计算交叉熵损失。 对于每个样本,真实值可以是一个整数作为标签索引; 或二进制数组,指示标签分布。 因此,真实值可以是1维或2维tensor。 对于一批样品,数据/特征tensor可以是1维(对于单个样品)或2维(对于一组样本)。</p>
</div>
<hr class="docutils" />
<div class="section" id="class-singa-loss-squarederror">
<h2>class singa.loss.SquaredError<a class="headerlink" href="#class-singa-loss-squarederror" title="Permalink to this headline"></a></h2>
<p>基类:<code class="docutils literal"><span class="pre">singa.loss.Loss</span></code></p>
<p>此损失用来衡量预测值和真实值之间的平方差。它通过Python Tensor操作实现。</p>
<hr class="docutils" />
<div class="section" id="id1">
<h3>backward()<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
<p>计算与损失相对应变量的梯度。</p>
<p><strong>返回值:</strong> x - y</p>
</div>
<hr class="docutils" />
<div class="section" id="id2">
<h3>evaluate(flag, x, y)<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<p>计算平均误差。</p>
<p><strong>返回值:</strong> 浮点型数</p>
</div>
<hr class="docutils" />
<div class="section" id="id3">
<h3>forward(flag, x, y)<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<p>通过0.5 * ||x-y||^2计算损失。</p>
<p><strong>参数:</strong></p>
<ul class="simple">
<li><strong>flag (int)</strong> – kTrain或kEval;如果是kTrain,那么在下一次调用forward前会先调用backward计算梯度。</li>
<li><strong>x (Tensor)</strong> – 预测Tensor</li>
<li><strong>y (Tensor)</strong> – 真实Tensor, 每个样本对应一个整型数, 取值为[0, x.shape[1])。</li>
</ul>
<p><strong>返回值:</strong> tensor,每个样本对应一个损失值</p>
<hr class="docutils" />
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="metric.html" class="btn btn-neutral float-right" title="度量(Metric)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="initializer.html" class="btn btn-neutral float-left" title="初始化器(Initializer)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019 The Apache Software Foundation. All rights reserved. Apache SINGA, Apache, the Apache feather logo, and the Apache SINGA project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> singa </span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Languages</dt>
<dd><a href="../../index.html">English</a></dd>
<dd><a href=".././index.html">中文</a></dd>
</dl>
<dl>
<dt>Versions</dt>
<dd><a href="http://singa.apache.org/v0.3.0/">0.3</a></dd>
<dd><a href="http://singa.apache.org/v1.1.0/">1.1</a></dd>
</dl>
</div>
<a href="http://www.apache.org"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Foundation</a>
<a href="http://www.apache.org/events/current-event"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Events</a>
<a href="http://www.apache.org/foundation/thanks.html"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Thanks</a>
<a href="http://www.apache.org/foundation/sponsorship.html"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Sponsorship</a>
<a href="http://www.apache.org/licenses/"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">License</a>
<br>
<a href="https://github.com/apache/singa" class="fa fa-github"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://aws.amazon.com/marketplace/seller-profile?id=5bcac385-12c4-4802-aec7-351e09b77b4c" class="fab fa-aws"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://hub.docker.com/r/apache/singa/" class="fab fa-docker"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.linkedin.com/groups/13550034" class="fa fa-linkedin"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://twitter.com/ApacheSinga" class="fa fa-twitter"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.facebook.com/Apache-SINGA-347284219056544/" class="fa fa-facebook"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.researchgate.net/project/Apache-SINGA" class="fab fa-researchgate"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
</div>
<a href="https://github.com/apache/singa">
<img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub">
</a>
</body>
</html>