-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbinary_8cc_source.html
102 lines (100 loc) · 20.1 KB
/
binary_8cc_source.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vowpal Wabbit: /mnt/c/w/linux/vowpal_wabbit/vowpalwabbit/binary.cc Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Vowpal Wabbit
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_23e69c20c74a4591a9cfc65aaff8f3d1.html">vowpalwabbit</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">binary.cc</div> </div>
</div><!--header-->
<div class="contents">
<a href="binary_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include <cfloat></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "<a class="code" href="reductions_8h.html">reductions.h</a>"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">using namespace </span><a class="code" href="namespaceVW_1_1config.html">VW::config</a>;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">template</span> <<span class="keywordtype">bool</span> is_learn></div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="binary_8cc.html#a17b25aeeb6d01bbc35de77c0066c6685"> 7</a></span> <span class="keywordtype">void</span> <a class="code" href="binary_8cc.html#a17b25aeeb6d01bbc35de77c0066c6685">predict_or_learn</a>(<span class="keywordtype">char</span>&, <a class="code" href="structLEARNER_1_1learner.html">LEARNER::single_learner</a>& base, <a class="code" href="structexample.html">example</a>& ec)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordflow">if</span> (is_learn)</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  base.<a class="code" href="structLEARNER_1_1learner.html#a9984332080a6ee4730a5762e9be3a3f6">learn</a>(ec);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  base.<a class="code" href="structLEARNER_1_1learner.html#a8b4f75763c0ec9a26eb5255780e782a8">predict</a>(ec);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordflow">if</span> (ec.<a class="code" href="structexample.html#ad1477e890371ed8253f1953d4190ba49">pred</a>.<a class="code" href="unionpolyprediction.html#ae29f42559acac5a2b08322a7fe887f04">scalar</a> > 0)</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  ec.<a class="code" href="structexample.html#ad1477e890371ed8253f1953d4190ba49">pred</a>.<a class="code" href="unionpolyprediction.html#ae29f42559acac5a2b08322a7fe887f04">scalar</a> = 1;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  ec.<a class="code" href="structexample.html#ad1477e890371ed8253f1953d4190ba49">pred</a>.<a class="code" href="unionpolyprediction.html#ae29f42559acac5a2b08322a7fe887f04">scalar</a> = -1;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keywordflow">if</span> (ec.<a class="code" href="structexample.html#a0c87f6e82d9c95ae42158bdbdab3acf5">l</a>.<a class="code" href="unionpolylabel.html#a80ff268cb4e29afddaac58174d316297">simple</a>.<a class="code" href="structlabel__data.html#a09103f622b965d8c14f0047b53ba7fe1">label</a> != FLT_MAX)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">if</span> (fabs(ec.<a class="code" href="structexample.html#a0c87f6e82d9c95ae42158bdbdab3acf5">l</a>.<a class="code" href="unionpolylabel.html#a80ff268cb4e29afddaac58174d316297">simple</a>.<a class="code" href="structlabel__data.html#a09103f622b965d8c14f0047b53ba7fe1">label</a>) != 1.f)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  std::cout << <span class="stringliteral">"You are using label "</span> << ec.<a class="code" href="structexample.html#a0c87f6e82d9c95ae42158bdbdab3acf5">l</a>.<a class="code" href="unionpolylabel.html#a80ff268cb4e29afddaac58174d316297">simple</a>.<a class="code" href="structlabel__data.html#a09103f622b965d8c14f0047b53ba7fe1">label</a> << <span class="stringliteral">" not -1 or 1 as loss function expects!"</span> << std::endl;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ec.<a class="code" href="structexample.html#a0c87f6e82d9c95ae42158bdbdab3acf5">l</a>.<a class="code" href="unionpolylabel.html#a80ff268cb4e29afddaac58174d316297">simple</a>.<a class="code" href="structlabel__data.html#a09103f622b965d8c14f0047b53ba7fe1">label</a> == ec.<a class="code" href="structexample.html#ad1477e890371ed8253f1953d4190ba49">pred</a>.<a class="code" href="unionpolyprediction.html#ae29f42559acac5a2b08322a7fe887f04">scalar</a>)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  ec.<a class="code" href="structexample.html#aec82f8fecc8ad2a13e54ecf83dfbc5c9">loss</a> = 0.;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ec.<a class="code" href="structexample.html#aec82f8fecc8ad2a13e54ecf83dfbc5c9">loss</a> = ec.<a class="code" href="structexample.html#a403be75fc4fdd058e4f7c1baf39be11a">weight</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="binary_8h.html#a19c8e197ca0abccc7ec55c51acb587b8"> 30</a></span> <a class="code" href="structLEARNER_1_1learner.html">LEARNER::base_learner</a>* <a class="code" href="binary_8cc.html#a8fc039df5a587090b74ced7cb4339627">binary_setup</a>(<a class="code" href="structVW_1_1config_1_1options__i.html">options_i</a>& options, <a class="code" href="structvw.html">vw</a>& all)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> binary = <span class="keyword">false</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="structVW_1_1config_1_1option__group__definition.html">option_group_definition</a> new_options(<span class="stringliteral">"Binary loss"</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  new_options.<a class="code" href="structVW_1_1config_1_1option__group__definition.html#aecce8d13a7a8328d479bb3a52f9d3980">add</a>(<a class="code" href="namespaceVW_1_1config.html#ae768389a49d24d07215612b2f824d520">make_option</a>(<span class="stringliteral">"binary"</span>, binary).keep().help(<span class="stringliteral">"report loss as binary classification on -1,1"</span>));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  options.<a class="code" href="structVW_1_1config_1_1options__i.html#a93c0de6c3ad57f6fb57441af2c908ba5">add_and_parse</a>(new_options);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span> (!binary)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="structLEARNER_1_1learner.html">LEARNER::learner<char, example></a>& ret =</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="namespaceLEARNER.html#a46de7ca84ed37d7b45dc7db64420b978">LEARNER::init_learner</a>(<a class="code" href="namespaceLEARNER.html#abd71c87941b752738319b3d1ed64fe47">as_singleline</a>(<a class="code" href="parse__args_8cc.html#a34c806099b7857a0ffc630bc8142beba">setup_base</a>(options, all)), predict_or_learn<true>, predict_or_learn<false>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceLEARNER.html#abcf6bdc2fa5e38928c33212e20dbbd74">make_base</a>(ret);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="ttc" id="structLEARNER_1_1learner_html_a8b4f75763c0ec9a26eb5255780e782a8"><div class="ttname"><a href="structLEARNER_1_1learner.html#a8b4f75763c0ec9a26eb5255780e782a8">LEARNER::learner::predict</a></div><div class="ttdeci">void predict(E &ec, size_t i=0)</div><div class="ttdef"><b>Definition:</b> <a href="learner_8h_source.html#l00169">learner.h:169</a></div></div>
<div class="ttc" id="binary_8cc_html_a8fc039df5a587090b74ced7cb4339627"><div class="ttname"><a href="binary_8cc.html#a8fc039df5a587090b74ced7cb4339627">binary_setup</a></div><div class="ttdeci">LEARNER::base_learner * binary_setup(options_i &options, vw &all)</div><div class="ttdef"><b>Definition:</b> <a href="binary_8cc_source.html#l00030">binary.cc:30</a></div></div>
<div class="ttc" id="unionpolyprediction_html_ae29f42559acac5a2b08322a7fe887f04"><div class="ttname"><a href="unionpolyprediction.html#ae29f42559acac5a2b08322a7fe887f04">polyprediction::scalar</a></div><div class="ttdeci">float scalar</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00045">example.h:45</a></div></div>
<div class="ttc" id="namespaceLEARNER_html_abcf6bdc2fa5e38928c33212e20dbbd74"><div class="ttname"><a href="namespaceLEARNER.html#abcf6bdc2fa5e38928c33212e20dbbd74">LEARNER::make_base</a></div><div class="ttdeci">base_learner * make_base(learner< T, E > &base)</div><div class="ttdef"><b>Definition:</b> <a href="learner_8h_source.html#l00462">learner.h:462</a></div></div>
<div class="ttc" id="structVW_1_1config_1_1option__group__definition_html"><div class="ttname"><a href="structVW_1_1config_1_1option__group__definition.html">VW::config::option_group_definition</a></div><div class="ttdef"><b>Definition:</b> <a href="options_8h_source.html#l00085">options.h:85</a></div></div>
<div class="ttc" id="structVW_1_1config_1_1options__i_html_a93c0de6c3ad57f6fb57441af2c908ba5"><div class="ttname"><a href="structVW_1_1config_1_1options__i.html#a93c0de6c3ad57f6fb57441af2c908ba5">VW::config::options_i::add_and_parse</a></div><div class="ttdeci">virtual void add_and_parse(const option_group_definition &group)=0</div></div>
<div class="ttc" id="structlabel__data_html_a09103f622b965d8c14f0047b53ba7fe1"><div class="ttname"><a href="structlabel__data.html#a09103f622b965d8c14f0047b53ba7fe1">label_data::label</a></div><div class="ttdeci">float label</div><div class="ttdef"><b>Definition:</b> <a href="simple__label_8h_source.html#l00014">simple_label.h:14</a></div></div>
<div class="ttc" id="unionpolylabel_html_a80ff268cb4e29afddaac58174d316297"><div class="ttname"><a href="unionpolylabel.html#a80ff268cb4e29afddaac58174d316297">polylabel::simple</a></div><div class="ttdeci">label_data simple</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00028">example.h:28</a></div></div>
<div class="ttc" id="structLEARNER_1_1learner_html"><div class="ttname"><a href="structLEARNER_1_1learner.html">LEARNER::learner</a></div><div class="ttdef"><b>Definition:</b> <a href="cb__explore_8h_source.html#l00011">cb_explore.h:11</a></div></div>
<div class="ttc" id="structvw_html"><div class="ttname"><a href="structvw.html">vw</a></div><div class="ttdef"><b>Definition:</b> <a href="global__data_8h_source.html#l00369">global_data.h:369</a></div></div>
<div class="ttc" id="namespaceLEARNER_html_abd71c87941b752738319b3d1ed64fe47"><div class="ttname"><a href="namespaceLEARNER.html#abd71c87941b752738319b3d1ed64fe47">LEARNER::as_singleline</a></div><div class="ttdeci">single_learner * as_singleline(learner< T, E > *l)</div><div class="ttdef"><b>Definition:</b> <a href="learner_8h_source.html#l00476">learner.h:476</a></div></div>
<div class="ttc" id="namespaceLEARNER_html_a46de7ca84ed37d7b45dc7db64420b978"><div class="ttname"><a href="namespaceLEARNER.html#a46de7ca84ed37d7b45dc7db64420b978">LEARNER::init_learner</a></div><div class="ttdeci">learner< T, E > & init_learner(free_ptr< T > &dat, L *base, void(*learn)(T &, L &, E &), void(*predict)(T &, L &, E &), size_t ws, prediction_type::prediction_type_t pred_type)</div><div class="ttdef"><b>Definition:</b> <a href="learner_8h_source.html#l00369">learner.h:369</a></div></div>
<div class="ttc" id="structVW_1_1config_1_1options__i_html"><div class="ttname"><a href="structVW_1_1config_1_1options__i.html">VW::config::options_i</a></div><div class="ttdef"><b>Definition:</b> <a href="options_8h_source.html#l00107">options.h:107</a></div></div>
<div class="ttc" id="structexample_html"><div class="ttname"><a href="structexample.html">example</a></div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00054">example.h:54</a></div></div>
<div class="ttc" id="reductions_8h_html"><div class="ttname"><a href="reductions_8h.html">reductions.h</a></div></div>
<div class="ttc" id="structexample_html_aec82f8fecc8ad2a13e54ecf83dfbc5c9"><div class="ttname"><a href="structexample.html#aec82f8fecc8ad2a13e54ecf83dfbc5c9">example::loss</a></div><div class="ttdeci">float loss</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00070">example.h:70</a></div></div>
<div class="ttc" id="structVW_1_1config_1_1option__group__definition_html_aecce8d13a7a8328d479bb3a52f9d3980"><div class="ttname"><a href="structVW_1_1config_1_1option__group__definition.html#aecce8d13a7a8328d479bb3a52f9d3980">VW::config::option_group_definition::add</a></div><div class="ttdeci">option_group_definition & add(T &&op)</div><div class="ttdef"><b>Definition:</b> <a href="options_8h_source.html#l00090">options.h:90</a></div></div>
<div class="ttc" id="namespaceVW_1_1config_html"><div class="ttname"><a href="namespaceVW_1_1config.html">VW::config</a></div><div class="ttdef"><b>Definition:</b> <a href="options_8h_source.html#l00011">options.h:11</a></div></div>
<div class="ttc" id="structexample_html_a0c87f6e82d9c95ae42158bdbdab3acf5"><div class="ttname"><a href="structexample.html#a0c87f6e82d9c95ae42158bdbdab3acf5">example::l</a></div><div class="ttdeci">polylabel l</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00057">example.h:57</a></div></div>
<div class="ttc" id="namespaceVW_1_1config_html_ae768389a49d24d07215612b2f824d520"><div class="ttname"><a href="namespaceVW_1_1config.html#ae768389a49d24d07215612b2f824d520">VW::config::make_option</a></div><div class="ttdeci">typed_option< T > make_option(std::string name, T &location)</div><div class="ttdef"><b>Definition:</b> <a href="options_8h_source.html#l00080">options.h:80</a></div></div>
<div class="ttc" id="binary_8cc_html_a17b25aeeb6d01bbc35de77c0066c6685"><div class="ttname"><a href="binary_8cc.html#a17b25aeeb6d01bbc35de77c0066c6685">predict_or_learn</a></div><div class="ttdeci">void predict_or_learn(char &, LEARNER::single_learner &base, example &ec)</div><div class="ttdef"><b>Definition:</b> <a href="binary_8cc_source.html#l00007">binary.cc:7</a></div></div>
<div class="ttc" id="parse__args_8cc_html_a34c806099b7857a0ffc630bc8142beba"><div class="ttname"><a href="parse__args_8cc.html#a34c806099b7857a0ffc630bc8142beba">setup_base</a></div><div class="ttdeci">LEARNER::base_learner * setup_base(options_i &options, vw &all)</div><div class="ttdef"><b>Definition:</b> <a href="parse__args_8cc_source.html#l01222">parse_args.cc:1222</a></div></div>
<div class="ttc" id="structexample_html_ad1477e890371ed8253f1953d4190ba49"><div class="ttname"><a href="structexample.html#ad1477e890371ed8253f1953d4190ba49">example::pred</a></div><div class="ttdeci">polyprediction pred</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00060">example.h:60</a></div></div>
<div class="ttc" id="structLEARNER_1_1learner_html_a9984332080a6ee4730a5762e9be3a3f6"><div class="ttname"><a href="structLEARNER_1_1learner.html#a9984332080a6ee4730a5762e9be3a3f6">LEARNER::learner::learn</a></div><div class="ttdeci">void learn(E &ec, size_t i=0)</div><div class="ttdef"><b>Definition:</b> <a href="learner_8h_source.html#l00160">learner.h:160</a></div></div>
<div class="ttc" id="structexample_html_a403be75fc4fdd058e4f7c1baf39be11a"><div class="ttname"><a href="structexample.html#a403be75fc4fdd058e4f7c1baf39be11a">example::weight</a></div><div class="ttdeci">float weight</div><div class="ttdef"><b>Definition:</b> <a href="example_8h_source.html#l00062">example.h:62</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Apr 9 2020 14:45:24 for Vowpal Wabbit by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>