Haddock (#3)
* Trivial script for regenerating haddocks: exclude .haddock files. * Haddock regen
4
docs/haddock/doc-index-47.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - /)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - /</p><table><tr><td class="src">/=</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Types.html#t:-47--61-">TensorFlow.Types</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-92.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - \)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - \</p><table><tr><td class="src">\\</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Types.html#t:-92--92-">TensorFlow.Types</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-95.html
Normal file
4
docs/haddock/doc-index-A.html
Normal file
4
docs/haddock/doc-index-All.html
Normal file
4
docs/haddock/doc-index-B.html
Normal file
4
docs/haddock/doc-index-C.html
Normal file
4
docs/haddock/doc-index-D.html
Normal file
4
docs/haddock/doc-index-E.html
Normal file
4
docs/haddock/doc-index-F.html
Normal file
4
docs/haddock/doc-index-G.html
Normal file
4
docs/haddock/doc-index-H.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - H)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - H</p><table><tr><td class="src">halfVal</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Tensor.html#v:halfVal">Proto.Tensorflow.Core.Framework.Tensor</a></td></tr><tr><td class="src">hashCode</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-ResourceHandle.html#v:hashCode">Proto.Tensorflow.Core.Framework.ResourceHandle</a></td></tr><tr><td class="src">hasMinimum</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-OpDef.html#v:hasMinimum">Proto.Tensorflow.Core.Framework.OpDef</a></td></tr><tr><td class="src">histogramSummary</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:histogramSummary">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">hoistBuildT</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:hoistBuildT">TensorFlow.Build</a></td></tr><tr><td class="src">hSVToRGB</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:hSVToRGB">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-I.html
Normal file
4
docs/haddock/doc-index-K.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - K)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - K</p><table><tr><td class="src">key</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Protobuf-Config.html#v:key">Proto.Tensorflow.Core.Protobuf.Config</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-NodeDef.html#v:key">Proto.Tensorflow.Core.Framework.NodeDef</a></td></tr><tr><td class="alt">3 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-AttrValue.html#v:key">Proto.Tensorflow.Core.Framework.AttrValue</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-L.html
Normal file
4
docs/haddock/doc-index-M.html
Normal file
4
docs/haddock/doc-index-N.html
Normal file
4
docs/haddock/doc-index-O.html
Normal file
4
docs/haddock/doc-index-P.html
Normal file
4
docs/haddock/doc-index-Q.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - Q)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - Q</p><table><tr><td class="src">quantizeAndDequantize</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizeAndDequantize">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">Queue2</td><td class="module"><a href="./tensorflow-queue-0.1.0.0/TensorFlow-Queue.html#t:Queue2">TensorFlow.Queue</a></td></tr><tr><td class="src">queueClose</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:queueClose">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">queueSize</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:queueSize">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-R.html
Normal file
4
docs/haddock/doc-index-S.html
Normal file
4
docs/haddock/doc-index-T.html
Normal file
4
docs/haddock/doc-index-U.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - U)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - U</p><table><tr><td class="src">unControlNode</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html#v:unControlNode">TensorFlow.Output</a>, <a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:unControlNode">TensorFlow.Build</a></td></tr><tr><td class="src">uniformCandidateSampler</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:uniformCandidateSampler">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">Unique</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#t:Unique">TensorFlow.Build</a></td></tr><tr><td class="src">unique</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:unique">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">uniqueWithCounts</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:uniqueWithCounts">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">unknownRank</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-TensorShape.html#v:unknownRank">Proto.Tensorflow.Core.Framework.TensorShape</a></td></tr><tr><td class="src">unNodeName</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html#v:unNodeName">TensorFlow.Output</a></td></tr><tr><td class="src">unOpType</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html#v:unOpType">TensorFlow.Output</a></td></tr><tr><td class="src">unOutputIx</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html#v:unOutputIx">TensorFlow.Output</a></td></tr><tr><td class="src">unpack</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:unpack">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">Unrendered</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html#v:Unrendered">TensorFlow.Output</a></td></tr><tr><td class="src">unScalar</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Nodes.html#v:unScalar">TensorFlow.Nodes</a></td></tr><tr><td class="src">unsortedSegmentSum</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:unsortedSegmentSum">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">unTensorData</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Types.html#v:unTensorData">TensorFlow.Types</a></td></tr><tr><td class="src">usePerSessionThreads</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Protobuf-Config.html#v:usePerSessionThreads">Proto.Tensorflow.Core.Protobuf.Config</a></td></tr><tr><td class="src">useProtoAsVoidPtrLen</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Internal-FFI.html#v:useProtoAsVoidPtrLen">TensorFlow.Internal.FFI</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-V.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - V)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - V</p><table><tr><td class="src">Value</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">TensorFlow.Tensor</a></td></tr><tr><td class="src">value</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Tensor.html#v:value">TensorFlow.Tensor</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Protobuf-Config.html#v:value">Proto.Tensorflow.Core.Protobuf.Config</a></td></tr><tr><td class="alt">3 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-NodeDef.html#v:value">Proto.Tensorflow.Core.Framework.NodeDef</a></td></tr><tr><td class="alt">4 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-AttrValue.html#v:value">Proto.Tensorflow.Core.Framework.AttrValue</a></td></tr><tr><td class="src">ValueKind</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Tensor.html#v:ValueKind">TensorFlow.Tensor</a></td></tr><tr><td class="src">variable</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:variable">TensorFlow.GenOps.Core</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html#v:variable">TensorFlow.Ops</a></td></tr><tr><td class="src">vector</td><td class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html#v:vector">TensorFlow.Ops</a></td></tr><tr><td class="src">version</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Graph.html#v:version">Proto.Tensorflow.Core.Framework.Graph</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-OpDef.html#v:version">Proto.Tensorflow.Core.Framework.OpDef</a></td></tr><tr><td class="src">versionNumber</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Tensor.html#v:versionNumber">Proto.Tensorflow.Core.Framework.Tensor</a></td></tr><tr><td class="src">versions</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Graph.html#v:versions">Proto.Tensorflow.Core.Framework.Graph</a></td></tr><tr><td class="src">visibleDeviceList</td><td class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Protobuf-Config.html#v:visibleDeviceList">Proto.Tensorflow.Core.Protobuf.Config</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-W.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - W)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - W</p><table><tr><td class="src">where'</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:where-39-">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">wholeFileReader</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:wholeFileReader">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">withControlDependencies</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-ControlFlow.html#v:withControlDependencies">TensorFlow.ControlFlow</a></td></tr><tr><td class="src">withDevice</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:withDevice">TensorFlow.Build</a></td></tr><tr><td class="src">withNameScope</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:withNameScope">TensorFlow.Build</a></td></tr><tr><td class="src">withNodeDependencies</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:withNodeDependencies">TensorFlow.Build</a></td></tr><tr><td class="src">withSession</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Internal-FFI.html#v:withSession">TensorFlow.Internal.FFI</a></td></tr><tr><td class="src">withStateLens</td><td class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html#v:withStateLens">TensorFlow.Build</a></td></tr><tr><td class="src">wtsCkpt</td><td class="module"><a href="./tensorflow-mnist-0.1.0.0/TensorFlow-Examples-MNIST-TrainedGraph.html#v:wtsCkpt">TensorFlow.Examples.MNIST.TrainedGraph</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index-Z.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index - Z)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - Z</p><table><tr><td class="src">zeroInitializedVariable</td><td class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html#v:zeroInitializedVariable">TensorFlow.Ops</a></td></tr><tr><td class="src">zeros</td><td class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html#v:zeros">TensorFlow.Ops</a></td></tr><tr><td class="src">zerosLike</td><td> </td></tr><tr><td class="alt">1 (Function)</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:zerosLike">TensorFlow.GenOps.Core</a></td></tr><tr><td class="alt">2 (Function)</td><td class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html#v:zerosLike">TensorFlow.Ops</a></td></tr><tr><td class="src">zeta</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:zeta">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
4
docs/haddock/doc-index.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title> (Index)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption empty"> </p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-K.html">K</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-47.html">/</a></li><li><a href="doc-index-92.html">\</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
30
docs/haddock/frames.html
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<script src="haddock-util.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript"><!--
|
||||||
|
/*
|
||||||
|
|
||||||
|
The synopsis frame needs to be updated using javascript, so we hide
|
||||||
|
it by default and only show it if javascript is enabled.
|
||||||
|
|
||||||
|
TODO: provide some means to disable it.
|
||||||
|
*/
|
||||||
|
function load() {
|
||||||
|
var d = document.getElementById("inner-fs");
|
||||||
|
d.rows = "50%,50%";
|
||||||
|
postReframe();
|
||||||
|
}
|
||||||
|
--></script>
|
||||||
|
</head>
|
||||||
|
<frameset id="outer-fs" cols="25%,75%" onload="load()">
|
||||||
|
<frameset id="inner-fs" rows="100%,0%">
|
||||||
|
<frame src="index-frames.html" name="modules" />
|
||||||
|
<frame src="" name="synopsis" />
|
||||||
|
</frameset>
|
||||||
|
<frame src="index.html" name="main" />
|
||||||
|
</frameset>
|
||||||
|
</html>
|
344
docs/haddock/haddock-util.js
Normal file
|
@ -0,0 +1,344 @@
|
||||||
|
// Haddock JavaScript utilities
|
||||||
|
|
||||||
|
var rspace = /\s\s+/g,
|
||||||
|
rtrim = /^\s+|\s+$/g;
|
||||||
|
|
||||||
|
function spaced(s) { return (" " + s + " ").replace(rspace, " "); }
|
||||||
|
function trim(s) { return s.replace(rtrim, ""); }
|
||||||
|
|
||||||
|
function hasClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
return className.indexOf( " " + value + " " ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
if ( className.indexOf( " " + value + " " ) < 0 ) {
|
||||||
|
elem.className = trim(className + " " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
className = className.replace(" " + value + " ", " ");
|
||||||
|
elem.className = trim(className);
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleClass(elem, valueOn, valueOff, bool) {
|
||||||
|
if (bool == null) { bool = ! hasClass(elem, valueOn); }
|
||||||
|
if (bool) {
|
||||||
|
removeClass(elem, valueOff);
|
||||||
|
addClass(elem, valueOn);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
removeClass(elem, valueOn);
|
||||||
|
addClass(elem, valueOff);
|
||||||
|
}
|
||||||
|
return bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeClassToggle(valueOn, valueOff)
|
||||||
|
{
|
||||||
|
return function(elem, bool) {
|
||||||
|
return toggleClass(elem, valueOn, valueOff, bool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleShow = makeClassToggle("show", "hide");
|
||||||
|
toggleCollapser = makeClassToggle("collapser", "expander");
|
||||||
|
|
||||||
|
function toggleSection(id)
|
||||||
|
{
|
||||||
|
var b = toggleShow(document.getElementById("section." + id));
|
||||||
|
toggleCollapser(document.getElementById("control." + id), b);
|
||||||
|
rememberCollapsed(id, b);
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
var collapsed = {};
|
||||||
|
function rememberCollapsed(id, b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
delete collapsed[id]
|
||||||
|
else
|
||||||
|
collapsed[id] = null;
|
||||||
|
|
||||||
|
var sections = [];
|
||||||
|
for(var i in collapsed)
|
||||||
|
{
|
||||||
|
if(collapsed.hasOwnProperty(i))
|
||||||
|
sections.push(i);
|
||||||
|
}
|
||||||
|
// cookie specific to this page; don't use setCookie which sets path=/
|
||||||
|
document.cookie = "collapsed=" + escape(sections.join('+'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function restoreCollapsed()
|
||||||
|
{
|
||||||
|
var cookie = getCookie("collapsed");
|
||||||
|
if(!cookie)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var ids = cookie.split('+');
|
||||||
|
for(var i in ids)
|
||||||
|
{
|
||||||
|
if(document.getElementById("section." + ids[i]))
|
||||||
|
toggleSection(ids[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setCookie(name, value) {
|
||||||
|
document.cookie = name + "=" + escape(value) + ";path=/;";
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearCookie(name) {
|
||||||
|
document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCookie(name) {
|
||||||
|
var nameEQ = name + "=";
|
||||||
|
var ca = document.cookie.split(';');
|
||||||
|
for(var i=0;i < ca.length;i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
||||||
|
if (c.indexOf(nameEQ) == 0) {
|
||||||
|
return unescape(c.substring(nameEQ.length,c.length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var max_results = 75; // 50 is not enough to search for map in the base libraries
|
||||||
|
var shown_range = null;
|
||||||
|
var last_search = null;
|
||||||
|
|
||||||
|
function quick_search()
|
||||||
|
{
|
||||||
|
perform_search(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function full_search()
|
||||||
|
{
|
||||||
|
perform_search(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function perform_search(full)
|
||||||
|
{
|
||||||
|
var text = document.getElementById("searchbox").value.toLowerCase();
|
||||||
|
if (text == last_search && !full) return;
|
||||||
|
last_search = text;
|
||||||
|
|
||||||
|
var table = document.getElementById("indexlist");
|
||||||
|
var status = document.getElementById("searchmsg");
|
||||||
|
var children = table.firstChild.childNodes;
|
||||||
|
|
||||||
|
// first figure out the first node with the prefix
|
||||||
|
var first = bisect(-1);
|
||||||
|
var last = (first == -1 ? -1 : bisect(1));
|
||||||
|
|
||||||
|
if (first == -1)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "No results found, displaying all";
|
||||||
|
}
|
||||||
|
else if (first == 0 && last == children.length - 1)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "";
|
||||||
|
}
|
||||||
|
else if (last - first >= max_results && !full)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "More than " + max_results + ", press Search to display";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// decide what you need to clear/show
|
||||||
|
if (shown_range)
|
||||||
|
setclass(shown_range[0], shown_range[1], "indexrow");
|
||||||
|
setclass(first, last, "indexshow");
|
||||||
|
shown_range = [first, last];
|
||||||
|
table.className = "indexsearch";
|
||||||
|
status.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setclass(first, last, status)
|
||||||
|
{
|
||||||
|
for (var i = first; i <= last; i++)
|
||||||
|
{
|
||||||
|
children[i].className = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// do a binary search, treating 0 as ...
|
||||||
|
// return either -1 (no 0's found) or location of most far match
|
||||||
|
function bisect(dir)
|
||||||
|
{
|
||||||
|
var first = 0, finish = children.length - 1;
|
||||||
|
var mid, success = false;
|
||||||
|
|
||||||
|
while (finish - first > 3)
|
||||||
|
{
|
||||||
|
mid = Math.floor((finish + first) / 2);
|
||||||
|
|
||||||
|
var i = checkitem(mid);
|
||||||
|
if (i == 0) i = dir;
|
||||||
|
if (i == -1)
|
||||||
|
finish = mid;
|
||||||
|
else
|
||||||
|
first = mid;
|
||||||
|
}
|
||||||
|
var a = (dir == 1 ? first : finish);
|
||||||
|
var b = (dir == 1 ? finish : first);
|
||||||
|
for (var i = b; i != a - dir; i -= dir)
|
||||||
|
{
|
||||||
|
if (checkitem(i) == 0) return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// from an index, decide what the result is
|
||||||
|
// 0 = match, -1 is lower, 1 is higher
|
||||||
|
function checkitem(i)
|
||||||
|
{
|
||||||
|
var s = getitem(i).toLowerCase().substr(0, text.length);
|
||||||
|
if (s == text) return 0;
|
||||||
|
else return (s > text ? -1 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// from an index, get its string
|
||||||
|
// this abstracts over alternates
|
||||||
|
function getitem(i)
|
||||||
|
{
|
||||||
|
for ( ; i >= 0; i--)
|
||||||
|
{
|
||||||
|
var s = children[i].firstChild.firstChild.data;
|
||||||
|
if (s.indexOf(' ') == -1)
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
return ""; // should never be reached
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSynopsis(filename) {
|
||||||
|
if (parent.window.synopsis) {
|
||||||
|
if (parent.window.synopsis.location.replace) {
|
||||||
|
// In Firefox this avoids adding the change to the history.
|
||||||
|
parent.window.synopsis.location.replace(filename);
|
||||||
|
} else {
|
||||||
|
parent.window.synopsis.location = filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addMenuItem(html) {
|
||||||
|
var menu = document.getElementById("page-menu");
|
||||||
|
if (menu) {
|
||||||
|
var btn = menu.firstChild.cloneNode(false);
|
||||||
|
btn.innerHTML = html;
|
||||||
|
menu.appendChild(btn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function adjustForFrames() {
|
||||||
|
var bodyCls;
|
||||||
|
|
||||||
|
if (parent.location.href == window.location.href) {
|
||||||
|
// not in frames, so add Frames button
|
||||||
|
addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");
|
||||||
|
bodyCls = "no-frame";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bodyCls = "in-frame";
|
||||||
|
}
|
||||||
|
addClass(document.body, bodyCls);
|
||||||
|
}
|
||||||
|
|
||||||
|
function reframe() {
|
||||||
|
setCookie("haddock-reframe", document.URL);
|
||||||
|
window.location = "frames.html";
|
||||||
|
}
|
||||||
|
|
||||||
|
function postReframe() {
|
||||||
|
var s = getCookie("haddock-reframe");
|
||||||
|
if (s) {
|
||||||
|
parent.window.main.location = s;
|
||||||
|
clearCookie("haddock-reframe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function styles() {
|
||||||
|
var i, a, es = document.getElementsByTagName("link"), rs = [];
|
||||||
|
for (i = 0; a = es[i]; i++) {
|
||||||
|
if(a.rel.indexOf("style") != -1 && a.title) {
|
||||||
|
rs.push(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addStyleMenu() {
|
||||||
|
var as = styles();
|
||||||
|
var i, a, btns = "";
|
||||||
|
for(i=0; a = as[i]; i++) {
|
||||||
|
btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"
|
||||||
|
+ a.title + "'); return false;\">"
|
||||||
|
+ a.title + "</a></li>"
|
||||||
|
}
|
||||||
|
if (as.length > 1) {
|
||||||
|
var h = "<div id='style-menu-holder'>"
|
||||||
|
+ "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>"
|
||||||
|
+ "<ul id='style-menu' class='hide'>" + btns + "</ul>"
|
||||||
|
+ "</div>";
|
||||||
|
addMenuItem(h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setActiveStyleSheet(title) {
|
||||||
|
var as = styles();
|
||||||
|
var i, a, found;
|
||||||
|
for(i=0; a = as[i]; i++) {
|
||||||
|
a.disabled = true;
|
||||||
|
// need to do this always, some browsers are edge triggered
|
||||||
|
if(a.title == title) {
|
||||||
|
found = a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
found.disabled = false;
|
||||||
|
setCookie("haddock-style", title);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
as[0].disabled = false;
|
||||||
|
clearCookie("haddock-style");
|
||||||
|
}
|
||||||
|
styleMenu(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetStyle() {
|
||||||
|
var s = getCookie("haddock-style");
|
||||||
|
if (s) setActiveStyleSheet(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function styleMenu(show) {
|
||||||
|
var m = document.getElementById('style-menu');
|
||||||
|
if (m) toggleShow(m, show);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function pageLoad() {
|
||||||
|
addStyleMenu();
|
||||||
|
adjustForFrames();
|
||||||
|
resetStyle();
|
||||||
|
restoreCollapsed();
|
||||||
|
}
|
||||||
|
|
BIN
docs/haddock/hslogo-16.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
4
docs/haddock/index-frames.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title></title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-AttrValue.html" target="main">Proto.Tensorflow.Core.Framework.AttrValue</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Graph.html" target="main">Proto.Tensorflow.Core.Framework.Graph</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-NodeDef.html" target="main">Proto.Tensorflow.Core.Framework.NodeDef</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-OpDef.html" target="main">Proto.Tensorflow.Core.Framework.OpDef</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-ResourceHandle.html" target="main">Proto.Tensorflow.Core.Framework.ResourceHandle</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Tensor.html" target="main">Proto.Tensorflow.Core.Framework.Tensor</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-TensorShape.html" target="main">Proto.Tensorflow.Core.Framework.TensorShape</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-Types.html" target="main">Proto.Tensorflow.Core.Framework.Types</a></li><li class="module"><a href="./tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Protobuf-Config.html" target="main">Proto.Tensorflow.Core.Protobuf.Config</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Build.html" target="main">TensorFlow.Build</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-BuildOp.html" target="main">TensorFlow.BuildOp</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-ControlFlow.html" target="main">TensorFlow.ControlFlow</a></li><li class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-EmbeddingOps.html" target="main">TensorFlow.EmbeddingOps</a></li><li class="module"><a href="./tensorflow-mnist-input-data-0.1.0.0/TensorFlow-Examples-MNIST-InputData.html" target="main">TensorFlow.Examples.MNIST.InputData</a></li><li class="module"><a href="./tensorflow-mnist-0.1.0.0/TensorFlow-Examples-MNIST-Parse.html" target="main">TensorFlow.Examples.MNIST.Parse</a></li><li class="module"><a href="./tensorflow-mnist-0.1.0.0/TensorFlow-Examples-MNIST-TrainedGraph.html" target="main">TensorFlow.Examples.MNIST.TrainedGraph</a></li><li class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html" target="main">TensorFlow.GenOps.Core</a></li><li class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Gradient.html" target="main">TensorFlow.Gradient</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Internal-FFI.html" target="main">TensorFlow.Internal.FFI</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Internal-VarInt.html" target="main">TensorFlow.Internal.VarInt</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Nodes.html" target="main">TensorFlow.Nodes</a></li><li class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen.html" target="main">TensorFlow.OpGen</a></li><li class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-AttrVal.html" target="main">TensorFlow.OpGen.AttrVal</a></li><li class="module"><a href="./tensorflow-ops-0.1.0.0/TensorFlow-Ops.html" target="main">TensorFlow.Ops</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Output.html" target="main">TensorFlow.Output</a></li><li class="module"><a href="./tensorflow-queue-0.1.0.0/TensorFlow-Queue.html" target="main">TensorFlow.Queue</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Session.html" target="main">TensorFlow.Session</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Tensor.html" target="main">TensorFlow.Tensor</a></li><li class="module"><a href="./tensorflow-0.1.0.0/TensorFlow-Types.html" target="main">TensorFlow.Types</a></li></ul></div></body></html>
|
4
docs/haddock/index.html
Normal file
BIN
docs/haddock/minus.gif
Normal file
After Width: | Height: | Size: 56 B |
600
docs/haddock/ocean.css
Normal file
|
@ -0,0 +1,600 @@
|
||||||
|
/* @group Fundamentals */
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0 }
|
||||||
|
|
||||||
|
/* Is this portable? */
|
||||||
|
html {
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
text-align: left;
|
||||||
|
min-height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
margin: 0.8em 0 0.8em 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a { text-decoration: none; }
|
||||||
|
a[href]:link { color: rgb(196,69,29); }
|
||||||
|
a[href]:visited { color: rgb(171,105,84); }
|
||||||
|
a[href]:hover { text-decoration:underline; }
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Fonts & Sizes */
|
||||||
|
|
||||||
|
/* Basic technique & IE workarounds from YUI 3
|
||||||
|
For reasons, see:
|
||||||
|
http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
font:13px/1.4 sans-serif;
|
||||||
|
*font-size:small; /* for IE */
|
||||||
|
*font:x-small; /* for IE in quirks mode */
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 { font-size: 146.5%; /* 19pt */ }
|
||||||
|
h2 { font-size: 131%; /* 17pt */ }
|
||||||
|
h3 { font-size: 116%; /* 15pt */ }
|
||||||
|
h4 { font-size: 100%; /* 13pt */ }
|
||||||
|
h5 { font-size: 100%; /* 13pt */ }
|
||||||
|
|
||||||
|
select, input, button, textarea {
|
||||||
|
font:99% sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
font-size:inherit;
|
||||||
|
font:100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code, kbd, samp, tt, .src {
|
||||||
|
font-family:monospace;
|
||||||
|
*font-size:108%;
|
||||||
|
line-height: 124%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links, .link {
|
||||||
|
font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-header .caption {
|
||||||
|
font-size: 182%; /* 24pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents, #synopsis {
|
||||||
|
/* font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Common */
|
||||||
|
|
||||||
|
.caption, h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-weight: bold;
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
margin: 0.8em 0 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
|
||||||
|
margin-top: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
|
||||||
|
margin-top: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links {
|
||||||
|
list-style: none;
|
||||||
|
text-align: left;
|
||||||
|
float: right;
|
||||||
|
display: inline-table;
|
||||||
|
margin: 0 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links li {
|
||||||
|
display: inline;
|
||||||
|
border-left: 1px solid #d5d5d5;
|
||||||
|
white-space: nowrap;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links li a {
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide { display: none; }
|
||||||
|
.show { display: inherit; }
|
||||||
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
.collapser {
|
||||||
|
background-image: url(minus.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.expander {
|
||||||
|
background-image: url(plus.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
p.caption.collapser,
|
||||||
|
p.caption.expander {
|
||||||
|
background-position: 0 0.4em;
|
||||||
|
}
|
||||||
|
.collapser, .expander {
|
||||||
|
padding-left: 14px;
|
||||||
|
margin-left: -14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 0.25em;
|
||||||
|
margin: 0.8em 0;
|
||||||
|
background: rgb(229,237,244);
|
||||||
|
overflow: auto;
|
||||||
|
border-bottom: 0.25em solid white;
|
||||||
|
/* white border adds some space below the box to compensate
|
||||||
|
for visual extra space that paragraphs have between baseline
|
||||||
|
and the bounding box */
|
||||||
|
}
|
||||||
|
|
||||||
|
.src {
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.keyword { font-weight: normal; }
|
||||||
|
.def { font-weight: bold; }
|
||||||
|
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Page Structure */
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 2em 6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header {
|
||||||
|
background: rgb(41,56,69);
|
||||||
|
border-top: 5px solid rgb(78,98,114);
|
||||||
|
color: #ddd;
|
||||||
|
padding: 0.2em;
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header .caption {
|
||||||
|
background: url(hslogo-16.png) no-repeat 0em;
|
||||||
|
color: white;
|
||||||
|
margin: 0 2em;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header a:link, #package-header a:visited { color: white; }
|
||||||
|
#package-header a:hover { background: rgb(78,98,114); }
|
||||||
|
|
||||||
|
#module-header .caption {
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
font-weight: bold;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.info {
|
||||||
|
float: right;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
background-color: #fff;
|
||||||
|
max-width: 40%;
|
||||||
|
border-spacing: 0;
|
||||||
|
position: relative;
|
||||||
|
top: -0.5em;
|
||||||
|
margin: 0 0 0 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info th {
|
||||||
|
padding: 0 1em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#style-menu-holder {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
overflow: visible;
|
||||||
|
background: #374c5e;
|
||||||
|
margin: 0;
|
||||||
|
text-align: center;
|
||||||
|
right: 0;
|
||||||
|
padding: 0;
|
||||||
|
top: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu li {
|
||||||
|
display: list-item;
|
||||||
|
border-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu li + li {
|
||||||
|
border-top: 1px solid #919191;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu a {
|
||||||
|
width: 6em;
|
||||||
|
padding: 3px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
background: #ddd;
|
||||||
|
border-top: 1px solid #aaa;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
color: #666;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Front Matter */
|
||||||
|
|
||||||
|
#table-of-contents {
|
||||||
|
float: right;
|
||||||
|
clear: right;
|
||||||
|
background: #faf9dc;
|
||||||
|
border: 1px solid #d8d7ad;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
max-width: 20em;
|
||||||
|
margin: 0.5em 0 1em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents .caption {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents ul ul {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#description .caption {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-frame #synopsis {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
height: 80%;
|
||||||
|
top: 10%;
|
||||||
|
padding: 0;
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis .caption {
|
||||||
|
float: left;
|
||||||
|
width: 29px;
|
||||||
|
color: rgba(255,255,255,0);
|
||||||
|
height: 110px;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis p.caption.collapser {
|
||||||
|
background: url(synopsis.png) no-repeat -64px -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis p.caption.expander {
|
||||||
|
background: url(synopsis.png) no-repeat 0px -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul {
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul ul {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul,
|
||||||
|
#synopsis ul li.src {
|
||||||
|
background-color: #faf9dc;
|
||||||
|
white-space: nowrap;
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Main Content */
|
||||||
|
|
||||||
|
#interface div.top { margin: 2em 0; }
|
||||||
|
#interface h1 + div.top,
|
||||||
|
#interface h2 + div.top,
|
||||||
|
#interface h3 + div.top,
|
||||||
|
#interface h4 + div.top,
|
||||||
|
#interface h5 + div.top {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
#interface p.src .link {
|
||||||
|
float: right;
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0 0.5em 0.2em;
|
||||||
|
margin: 0 -0.5em 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface td.src .link {
|
||||||
|
float: right;
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0 0.5em 0.2em;
|
||||||
|
margin: 0 -0.5em 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface span.fixity {
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
padding: 0.2em 0.5em 0.2em 0.5em;
|
||||||
|
margin: 0 -1em 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface span.rightedge {
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
padding: 0.2em 0 0.2em 0;
|
||||||
|
margin: 0 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface table { border-spacing: 2px; }
|
||||||
|
#interface td {
|
||||||
|
vertical-align: top;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
}
|
||||||
|
#interface td.src {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
#interface td.doc p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#interface td.doc p + p {
|
||||||
|
margin-top: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both;
|
||||||
|
content: " ";
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dl {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dt {
|
||||||
|
float: left;
|
||||||
|
clear: left;
|
||||||
|
display: block;
|
||||||
|
margin: 1px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd {
|
||||||
|
float: right;
|
||||||
|
width: 90%;
|
||||||
|
display: block;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd.empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Render short-style data instances */
|
||||||
|
.inst ul {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inst, .inst li {
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workaround for bug in Firefox (issue #384) */
|
||||||
|
.inst-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top p.src {
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs, .doc {
|
||||||
|
/* use this selector for one level of indent */
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arguments {
|
||||||
|
margin-top: -0.4em;
|
||||||
|
}
|
||||||
|
.arguments .caption {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fields { padding-left: 1em; }
|
||||||
|
|
||||||
|
.fields .caption { display: none; }
|
||||||
|
|
||||||
|
.fields p { margin: 0 0; }
|
||||||
|
|
||||||
|
/* this seems bulky to me
|
||||||
|
.methods, .constructors {
|
||||||
|
background: #f8f8f8;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Auxillary Pages */
|
||||||
|
|
||||||
|
|
||||||
|
.extension-list {
|
||||||
|
list-style-type: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 1em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini > * {
|
||||||
|
font-size: 93%; /* 12pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #module-list .caption,
|
||||||
|
#mini #module-header .caption {
|
||||||
|
font-size: 125%; /* 15pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #interface h1,
|
||||||
|
#mini #interface h2,
|
||||||
|
#mini #interface h3,
|
||||||
|
#mini #interface h4 {
|
||||||
|
font-size: 109%; /* 13pt */
|
||||||
|
margin: 1em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #interface .top,
|
||||||
|
#mini #interface .src {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #module-list ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0.5em 0 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet li {
|
||||||
|
display: inline;
|
||||||
|
margin: 0 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index .caption,
|
||||||
|
#module-list .caption { font-size: 131%; /* 17pt */ }
|
||||||
|
|
||||||
|
#index table {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index .src {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#index .alt {
|
||||||
|
font-size: 77%; /* 10pt */
|
||||||
|
font-style: italic;
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index td + td {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 0 0 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list li {
|
||||||
|
clear: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list span.collapser,
|
||||||
|
#module-list span.expander {
|
||||||
|
background-position: 0 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list .package {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
BIN
docs/haddock/plus.gif
Normal file
After Width: | Height: | Size: 59 B |
BIN
docs/haddock/synopsis.png
Normal file
After Width: | Height: | Size: 11 KiB |
27
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Build.html
Normal file
6
docs/haddock/tensorflow-0.1.0.0/TensorFlow-BuildOp.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.ControlFlow</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();setSynopsis("mini_TensorFlow-ControlFlow.html");};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-ControlFlow.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-0.1.0.0: TensorFlow bindings.</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">TensorFlow.ControlFlow</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Dependencies</a></li><li><a href="#g:2">Operations</a></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:withControlDependencies">withControlDependencies</a> :: <a href="TensorFlow-Nodes.html#t:Nodes">Nodes</a> t => t -> <a href="TensorFlow-Build.html#t:Build">Build</a> a -> <a href="TensorFlow-Build.html#t:Build">Build</a> a</li><li class="src short"><a href="#v:group">group</a> :: <a href="TensorFlow-Nodes.html#t:Nodes">Nodes</a> t => t -> <a href="TensorFlow-Build.html#t:Build">Build</a> <a href="TensorFlow-Output.html#t:ControlNode">ControlNode</a></li><li class="src short"><a href="#v:identity">identity</a> :: <a href="TensorFlow-Types.html#t:TensorType">TensorType</a> a => <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a</li><li class="src short"><a href="#v:noOp">noOp</a> :: <a href="TensorFlow-Output.html#t:ControlNode">ControlNode</a></li><li class="src short"><a href="#v:named">named</a> :: <a href="TensorFlow-Types.html#t:TensorType">TensorType</a> a => <a href="../text-1.2.2.1/Data-Text.html#t:Text">Text</a> -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a</li></ul></div><div id="interface"><h1 id="g:1">Dependencies</h1><div class="top"><p class="src"><a name="v:withControlDependencies" class="def">withControlDependencies</a> :: <a href="TensorFlow-Nodes.html#t:Nodes">Nodes</a> t => t -> <a href="TensorFlow-Build.html#t:Build">Build</a> a -> <a href="TensorFlow-Build.html#t:Build">Build</a> a <a href="src/TensorFlow-ControlFlow.html#withControlDependencies" class="link">Source</a></p><div class="doc"><p>Modify a <code><a href="TensorFlow-Build.html#t:Build">Build</a></code> action, such that all new ops rendered in it will depend
|
||||||
|
on the nodes in the first argument.</p></div></div><div class="top"><p class="src"><a name="v:group" class="def">group</a> :: <a href="TensorFlow-Nodes.html#t:Nodes">Nodes</a> t => t -> <a href="TensorFlow-Build.html#t:Build">Build</a> <a href="TensorFlow-Output.html#t:ControlNode">ControlNode</a> <a href="src/TensorFlow-ControlFlow.html#group" class="link">Source</a></p><div class="doc"><p>Create an op that groups multiple operations.</p><p>When this op finishes, all ops in the input <code>n</code> have finished. This op has
|
||||||
|
no output.</p></div></div><h1 id="g:2">Operations</h1><div class="top"><p class="src"><a name="v:identity" class="def">identity</a> :: <a href="TensorFlow-Types.html#t:TensorType">TensorType</a> a => <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a <a href="src/TensorFlow-ControlFlow.html#identity" class="link">Source</a></p><div class="doc"><p>Returns a <code><a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a></code> with the same shape and contents as the input.</p></div></div><div class="top"><p class="src"><a name="v:noOp" class="def">noOp</a> :: <a href="TensorFlow-Output.html#t:ControlNode">ControlNode</a> <a href="src/TensorFlow-ControlFlow.html#noOp" class="link">Source</a></p><div class="doc"><p>Does nothing. Only useful as a placeholder for control edges.</p></div></div><div class="top"><p class="src"><a name="v:named" class="def">named</a> :: <a href="TensorFlow-Types.html#t:TensorType">TensorType</a> a => <a href="../text-1.2.2.1/Data-Text.html#t:Text">Text</a> -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a <a href="src/TensorFlow-ControlFlow.html#named" class="link">Source</a></p><div class="doc"><p>Returns a <code><a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a></code> with a given name and the same shape and contents as
|
||||||
|
the input.</p><p>TODO(judahjacobson): This breaks when used with uninitialize <code>Tensor Ref</code>s,
|
||||||
|
since <code>RefIdentity</code> doesn't have SetAllowsUninitializedInput(). Look into
|
||||||
|
whether we can change that op.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Internal.VarInt</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();setSynopsis("mini_TensorFlow-Internal-VarInt.html");};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-Internal-VarInt.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-0.1.0.0: TensorFlow bindings.</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">TensorFlow.Internal.VarInt</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Originally taken from internal proto-lens code.</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:getVarInt">getVarInt</a> :: <a href="../attoparsec-0.13.0.2/Data-Attoparsec-ByteString.html#t:Parser">Parser</a> <a href="../base-4.8.2.0/Data-Word.html#t:Word64">Word64</a></li><li class="src short"><a href="#v:putVarInt">putVarInt</a> :: <a href="../base-4.8.2.0/Data-Word.html#t:Word64">Word64</a> -> <a href="../bytestring-0.10.6.0/Data-ByteString-Builder.html#t:Builder">Builder</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:getVarInt" class="def">getVarInt</a> :: <a href="../attoparsec-0.13.0.2/Data-Attoparsec-ByteString.html#t:Parser">Parser</a> <a href="../base-4.8.2.0/Data-Word.html#t:Word64">Word64</a> <a href="src/TensorFlow-Internal-VarInt.html#getVarInt" class="link">Source</a></p><div class="doc"><p>Decode an unsigned varint.</p></div></div><div class="top"><p class="src"><a name="v:putVarInt" class="def">putVarInt</a> :: <a href="../base-4.8.2.0/Data-Word.html#t:Word64">Word64</a> -> <a href="../bytestring-0.10.6.0/Data-ByteString-Builder.html#t:Builder">Builder</a> <a href="src/TensorFlow-Internal-VarInt.html#putVarInt" class="link">Source</a></p><div class="doc"><p>Encode a Word64.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
6
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Nodes.html
Normal file
14
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Output.html
Normal file
23
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Session.html
Normal file
17
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Tensor.html
Normal file
13
docs/haddock/tensorflow-0.1.0.0/TensorFlow-Types.html
Normal file
4
docs/haddock/tensorflow-0.1.0.0/doc-index.html
Normal file
30
docs/haddock/tensorflow-0.1.0.0/frames.html
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<script src="haddock-util.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript"><!--
|
||||||
|
/*
|
||||||
|
|
||||||
|
The synopsis frame needs to be updated using javascript, so we hide
|
||||||
|
it by default and only show it if javascript is enabled.
|
||||||
|
|
||||||
|
TODO: provide some means to disable it.
|
||||||
|
*/
|
||||||
|
function load() {
|
||||||
|
var d = document.getElementById("inner-fs");
|
||||||
|
d.rows = "50%,50%";
|
||||||
|
postReframe();
|
||||||
|
}
|
||||||
|
--></script>
|
||||||
|
</head>
|
||||||
|
<frameset id="outer-fs" cols="25%,75%" onload="load()">
|
||||||
|
<frameset id="inner-fs" rows="100%,0%">
|
||||||
|
<frame src="index-frames.html" name="modules" />
|
||||||
|
<frame src="" name="synopsis" />
|
||||||
|
</frameset>
|
||||||
|
<frame src="index.html" name="main" />
|
||||||
|
</frameset>
|
||||||
|
</html>
|
344
docs/haddock/tensorflow-0.1.0.0/haddock-util.js
Normal file
|
@ -0,0 +1,344 @@
|
||||||
|
// Haddock JavaScript utilities
|
||||||
|
|
||||||
|
var rspace = /\s\s+/g,
|
||||||
|
rtrim = /^\s+|\s+$/g;
|
||||||
|
|
||||||
|
function spaced(s) { return (" " + s + " ").replace(rspace, " "); }
|
||||||
|
function trim(s) { return s.replace(rtrim, ""); }
|
||||||
|
|
||||||
|
function hasClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
return className.indexOf( " " + value + " " ) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
if ( className.indexOf( " " + value + " " ) < 0 ) {
|
||||||
|
elem.className = trim(className + " " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeClass(elem, value) {
|
||||||
|
var className = spaced(elem.className || "");
|
||||||
|
className = className.replace(" " + value + " ", " ");
|
||||||
|
elem.className = trim(className);
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleClass(elem, valueOn, valueOff, bool) {
|
||||||
|
if (bool == null) { bool = ! hasClass(elem, valueOn); }
|
||||||
|
if (bool) {
|
||||||
|
removeClass(elem, valueOff);
|
||||||
|
addClass(elem, valueOn);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
removeClass(elem, valueOn);
|
||||||
|
addClass(elem, valueOff);
|
||||||
|
}
|
||||||
|
return bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function makeClassToggle(valueOn, valueOff)
|
||||||
|
{
|
||||||
|
return function(elem, bool) {
|
||||||
|
return toggleClass(elem, valueOn, valueOff, bool);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleShow = makeClassToggle("show", "hide");
|
||||||
|
toggleCollapser = makeClassToggle("collapser", "expander");
|
||||||
|
|
||||||
|
function toggleSection(id)
|
||||||
|
{
|
||||||
|
var b = toggleShow(document.getElementById("section." + id));
|
||||||
|
toggleCollapser(document.getElementById("control." + id), b);
|
||||||
|
rememberCollapsed(id, b);
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
var collapsed = {};
|
||||||
|
function rememberCollapsed(id, b)
|
||||||
|
{
|
||||||
|
if(b)
|
||||||
|
delete collapsed[id]
|
||||||
|
else
|
||||||
|
collapsed[id] = null;
|
||||||
|
|
||||||
|
var sections = [];
|
||||||
|
for(var i in collapsed)
|
||||||
|
{
|
||||||
|
if(collapsed.hasOwnProperty(i))
|
||||||
|
sections.push(i);
|
||||||
|
}
|
||||||
|
// cookie specific to this page; don't use setCookie which sets path=/
|
||||||
|
document.cookie = "collapsed=" + escape(sections.join('+'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function restoreCollapsed()
|
||||||
|
{
|
||||||
|
var cookie = getCookie("collapsed");
|
||||||
|
if(!cookie)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var ids = cookie.split('+');
|
||||||
|
for(var i in ids)
|
||||||
|
{
|
||||||
|
if(document.getElementById("section." + ids[i]))
|
||||||
|
toggleSection(ids[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setCookie(name, value) {
|
||||||
|
document.cookie = name + "=" + escape(value) + ";path=/;";
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearCookie(name) {
|
||||||
|
document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCookie(name) {
|
||||||
|
var nameEQ = name + "=";
|
||||||
|
var ca = document.cookie.split(';');
|
||||||
|
for(var i=0;i < ca.length;i++) {
|
||||||
|
var c = ca[i];
|
||||||
|
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
||||||
|
if (c.indexOf(nameEQ) == 0) {
|
||||||
|
return unescape(c.substring(nameEQ.length,c.length));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var max_results = 75; // 50 is not enough to search for map in the base libraries
|
||||||
|
var shown_range = null;
|
||||||
|
var last_search = null;
|
||||||
|
|
||||||
|
function quick_search()
|
||||||
|
{
|
||||||
|
perform_search(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function full_search()
|
||||||
|
{
|
||||||
|
perform_search(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function perform_search(full)
|
||||||
|
{
|
||||||
|
var text = document.getElementById("searchbox").value.toLowerCase();
|
||||||
|
if (text == last_search && !full) return;
|
||||||
|
last_search = text;
|
||||||
|
|
||||||
|
var table = document.getElementById("indexlist");
|
||||||
|
var status = document.getElementById("searchmsg");
|
||||||
|
var children = table.firstChild.childNodes;
|
||||||
|
|
||||||
|
// first figure out the first node with the prefix
|
||||||
|
var first = bisect(-1);
|
||||||
|
var last = (first == -1 ? -1 : bisect(1));
|
||||||
|
|
||||||
|
if (first == -1)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "No results found, displaying all";
|
||||||
|
}
|
||||||
|
else if (first == 0 && last == children.length - 1)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "";
|
||||||
|
}
|
||||||
|
else if (last - first >= max_results && !full)
|
||||||
|
{
|
||||||
|
table.className = "";
|
||||||
|
status.innerHTML = "More than " + max_results + ", press Search to display";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// decide what you need to clear/show
|
||||||
|
if (shown_range)
|
||||||
|
setclass(shown_range[0], shown_range[1], "indexrow");
|
||||||
|
setclass(first, last, "indexshow");
|
||||||
|
shown_range = [first, last];
|
||||||
|
table.className = "indexsearch";
|
||||||
|
status.innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function setclass(first, last, status)
|
||||||
|
{
|
||||||
|
for (var i = first; i <= last; i++)
|
||||||
|
{
|
||||||
|
children[i].className = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// do a binary search, treating 0 as ...
|
||||||
|
// return either -1 (no 0's found) or location of most far match
|
||||||
|
function bisect(dir)
|
||||||
|
{
|
||||||
|
var first = 0, finish = children.length - 1;
|
||||||
|
var mid, success = false;
|
||||||
|
|
||||||
|
while (finish - first > 3)
|
||||||
|
{
|
||||||
|
mid = Math.floor((finish + first) / 2);
|
||||||
|
|
||||||
|
var i = checkitem(mid);
|
||||||
|
if (i == 0) i = dir;
|
||||||
|
if (i == -1)
|
||||||
|
finish = mid;
|
||||||
|
else
|
||||||
|
first = mid;
|
||||||
|
}
|
||||||
|
var a = (dir == 1 ? first : finish);
|
||||||
|
var b = (dir == 1 ? finish : first);
|
||||||
|
for (var i = b; i != a - dir; i -= dir)
|
||||||
|
{
|
||||||
|
if (checkitem(i) == 0) return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// from an index, decide what the result is
|
||||||
|
// 0 = match, -1 is lower, 1 is higher
|
||||||
|
function checkitem(i)
|
||||||
|
{
|
||||||
|
var s = getitem(i).toLowerCase().substr(0, text.length);
|
||||||
|
if (s == text) return 0;
|
||||||
|
else return (s > text ? -1 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// from an index, get its string
|
||||||
|
// this abstracts over alternates
|
||||||
|
function getitem(i)
|
||||||
|
{
|
||||||
|
for ( ; i >= 0; i--)
|
||||||
|
{
|
||||||
|
var s = children[i].firstChild.firstChild.data;
|
||||||
|
if (s.indexOf(' ') == -1)
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
return ""; // should never be reached
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSynopsis(filename) {
|
||||||
|
if (parent.window.synopsis) {
|
||||||
|
if (parent.window.synopsis.location.replace) {
|
||||||
|
// In Firefox this avoids adding the change to the history.
|
||||||
|
parent.window.synopsis.location.replace(filename);
|
||||||
|
} else {
|
||||||
|
parent.window.synopsis.location = filename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addMenuItem(html) {
|
||||||
|
var menu = document.getElementById("page-menu");
|
||||||
|
if (menu) {
|
||||||
|
var btn = menu.firstChild.cloneNode(false);
|
||||||
|
btn.innerHTML = html;
|
||||||
|
menu.appendChild(btn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function adjustForFrames() {
|
||||||
|
var bodyCls;
|
||||||
|
|
||||||
|
if (parent.location.href == window.location.href) {
|
||||||
|
// not in frames, so add Frames button
|
||||||
|
addMenuItem("<a href='#' onclick='reframe();return true;'>Frames</a>");
|
||||||
|
bodyCls = "no-frame";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bodyCls = "in-frame";
|
||||||
|
}
|
||||||
|
addClass(document.body, bodyCls);
|
||||||
|
}
|
||||||
|
|
||||||
|
function reframe() {
|
||||||
|
setCookie("haddock-reframe", document.URL);
|
||||||
|
window.location = "frames.html";
|
||||||
|
}
|
||||||
|
|
||||||
|
function postReframe() {
|
||||||
|
var s = getCookie("haddock-reframe");
|
||||||
|
if (s) {
|
||||||
|
parent.window.main.location = s;
|
||||||
|
clearCookie("haddock-reframe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function styles() {
|
||||||
|
var i, a, es = document.getElementsByTagName("link"), rs = [];
|
||||||
|
for (i = 0; a = es[i]; i++) {
|
||||||
|
if(a.rel.indexOf("style") != -1 && a.title) {
|
||||||
|
rs.push(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addStyleMenu() {
|
||||||
|
var as = styles();
|
||||||
|
var i, a, btns = "";
|
||||||
|
for(i=0; a = as[i]; i++) {
|
||||||
|
btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"
|
||||||
|
+ a.title + "'); return false;\">"
|
||||||
|
+ a.title + "</a></li>"
|
||||||
|
}
|
||||||
|
if (as.length > 1) {
|
||||||
|
var h = "<div id='style-menu-holder'>"
|
||||||
|
+ "<a href='#' onclick='styleMenu(); return false;'>Style ▾</a>"
|
||||||
|
+ "<ul id='style-menu' class='hide'>" + btns + "</ul>"
|
||||||
|
+ "</div>";
|
||||||
|
addMenuItem(h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setActiveStyleSheet(title) {
|
||||||
|
var as = styles();
|
||||||
|
var i, a, found;
|
||||||
|
for(i=0; a = as[i]; i++) {
|
||||||
|
a.disabled = true;
|
||||||
|
// need to do this always, some browsers are edge triggered
|
||||||
|
if(a.title == title) {
|
||||||
|
found = a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
found.disabled = false;
|
||||||
|
setCookie("haddock-style", title);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
as[0].disabled = false;
|
||||||
|
clearCookie("haddock-style");
|
||||||
|
}
|
||||||
|
styleMenu(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetStyle() {
|
||||||
|
var s = getCookie("haddock-style");
|
||||||
|
if (s) setActiveStyleSheet(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function styleMenu(show) {
|
||||||
|
var m = document.getElementById('style-menu');
|
||||||
|
if (m) toggleShow(m, show);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function pageLoad() {
|
||||||
|
addStyleMenu();
|
||||||
|
adjustForFrames();
|
||||||
|
resetStyle();
|
||||||
|
restoreCollapsed();
|
||||||
|
}
|
||||||
|
|
BIN
docs/haddock/tensorflow-0.1.0.0/hslogo-16.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
4
docs/haddock/tensorflow-0.1.0.0/index-frames.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-0.1.0.0: TensorFlow bindings.</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="TensorFlow-Build.html" target="main">TensorFlow.Build</a></li><li class="module"><a href="TensorFlow-BuildOp.html" target="main">TensorFlow.BuildOp</a></li><li class="module"><a href="TensorFlow-ControlFlow.html" target="main">TensorFlow.ControlFlow</a></li><li class="module"><a href="TensorFlow-Internal-FFI.html" target="main">TensorFlow.Internal.FFI</a></li><li class="module"><a href="TensorFlow-Internal-VarInt.html" target="main">TensorFlow.Internal.VarInt</a></li><li class="module"><a href="TensorFlow-Nodes.html" target="main">TensorFlow.Nodes</a></li><li class="module"><a href="TensorFlow-Output.html" target="main">TensorFlow.Output</a></li><li class="module"><a href="TensorFlow-Session.html" target="main">TensorFlow.Session</a></li><li class="module"><a href="TensorFlow-Tensor.html" target="main">TensorFlow.Tensor</a></li><li class="module"><a href="TensorFlow-Types.html" target="main">TensorFlow.Types</a></li></ul></div></body></html>
|
4
docs/haddock/tensorflow-0.1.0.0/index.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-0.1.0.0: TensorFlow bindings.</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-0.1.0.0: TensorFlow bindings.</p></div><div id="content"><div id="description"><h1>tensorflow-0.1.0.0: TensorFlow bindings.</h1><div class="doc"><p>Please see README.md</p></div></div><div id="module-list"><p class="caption">Modules</p><ul><li><span id="control.n.1" class="module collapser" onclick="toggleSection('n.1')">TensorFlow</span><ul id="section.n.1" class="show"><li><span class="module"><a href="TensorFlow-Build.html">TensorFlow.Build</a></span></li><li><span class="module"><a href="TensorFlow-BuildOp.html">TensorFlow.BuildOp</a></span></li><li><span class="module"><a href="TensorFlow-ControlFlow.html">TensorFlow.ControlFlow</a></span></li><li><span id="control.n.1.4" class="module collapser" onclick="toggleSection('n.1.4')">Internal</span><ul id="section.n.1.4" class="show"><li><span class="module"><a href="TensorFlow-Internal-FFI.html">TensorFlow.Internal.FFI</a></span></li><li><span class="module"><a href="TensorFlow-Internal-VarInt.html">TensorFlow.Internal.VarInt</a></span> Encoders and decoders for varint types.</li></ul></li><li><span class="module"><a href="TensorFlow-Nodes.html">TensorFlow.Nodes</a></span></li><li><span class="module"><a href="TensorFlow-Output.html">TensorFlow.Output</a></span></li><li><span class="module"><a href="TensorFlow-Session.html">TensorFlow.Session</a></span></li><li><span class="module"><a href="TensorFlow-Tensor.html">TensorFlow.Tensor</a></span></li><li><span class="module"><a href="TensorFlow-Types.html">TensorFlow.Types</a></span></li></ul></li></ul></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Build</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Build</p></div><div id="interface"><h1>Graph node types</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Build.html#t:ControlNode" target="main">ControlNode</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Build.html#t:Unique" target="main">Unique</a></p></div><h1>Ops</h1><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:explicitName" target="main">explicitName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:implicitName" target="main">implicitName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opDef" target="main">opDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opDefWithName" target="main">opDefWithName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opName" target="main">opName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opType" target="main">opType</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opAttr" target="main">opAttr</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opInputs" target="main">opInputs</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:opControlInputs" target="main">opControlInputs</a></p></div><h1>The Build monad</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Build.html#t:GraphState" target="main">GraphState</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:render" target="main">render</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:renderNodeName" target="main">renderNodeName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:renderedNodeDefs" target="main">renderedNodeDefs</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Build.html#t:BuildT" target="main">BuildT</a> m a</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="TensorFlow-Build.html#t:Build" target="main">Build</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:addInitializer" target="main">addInitializer</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:hoistBuildT" target="main">hoistBuildT</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:evalBuildT" target="main">evalBuildT</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:runBuildT" target="main">runBuildT</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:asGraphDef" target="main">asGraphDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:addGraphDef" target="main">addGraphDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:flushInitializers" target="main">flushInitializers</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:flushNodeBuffer" target="main">flushNodeBuffer</a></p></div><h1>Creating and looking up Ops</h1><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:getOrAddOp" target="main">getOrAddOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:addNewOp" target="main">addNewOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:renderOutput" target="main">renderOutput</a></p></div><h1>Modifying all nodes in a Build action</h1><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:colocateWith" target="main">colocateWith</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:withStateLens" target="main">withStateLens</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:withDevice" target="main">withDevice</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:withNameScope" target="main">withNameScope</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:withNodeDependencies" target="main">withNodeDependencies</a></p></div><h1>Internal Summary related bits.</h1><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:addSummary" target="main">addSummary</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="TensorFlow-Build.html#t:SummaryTensor" target="main">SummaryTensor</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Build.html#v:collectAllSummaries" target="main">collectAllSummaries</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.BuildOp</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.BuildOp</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-BuildOp.html#t:OpResult" target="main">OpResult</a> a</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-BuildOp.html#t:BuildOp" target="main">BuildOp</a> f</p></div><div class="top"><p class="src"><a href="TensorFlow-BuildOp.html#v:buildOp" target="main">buildOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-BuildOp.html#v:buildListOp" target="main">buildListOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-BuildOp.html#v:eqLengthGuard" target="main">eqLengthGuard</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.ControlFlow</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.ControlFlow</p></div><div id="interface"><h1>Dependencies</h1><div class="top"><p class="src"><a href="TensorFlow-ControlFlow.html#v:withControlDependencies" target="main">withControlDependencies</a></p></div><div class="top"><p class="src"><a href="TensorFlow-ControlFlow.html#v:group" target="main">group</a></p></div><h1>Operations</h1><div class="top"><p class="src"><a href="TensorFlow-ControlFlow.html#v:identity" target="main">identity</a></p></div><div class="top"><p class="src"><a href="TensorFlow-ControlFlow.html#v:noOp" target="main">noOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-ControlFlow.html#v:named" target="main">named</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Internal.FFI</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Internal.FFI</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Internal-FFI.html#t:TensorFlowException" target="main">TensorFlowException</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Internal-FFI.html#t:Session" target="main">Session</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:withSession" target="main">withSession</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:extendGraph" target="main">extendGraph</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:run" target="main">run</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Internal-FFI.html#t:TensorData" target="main">TensorData</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:setSessionConfig" target="main">setSessionConfig</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:setSessionTarget" target="main">setSessionTarget</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:getAllOpList" target="main">getAllOpList</a></p></div><h1>Internal helper.</h1><div class="top"><p class="src"><a href="TensorFlow-Internal-FFI.html#v:useProtoAsVoidPtrLen" target="main">useProtoAsVoidPtrLen</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Internal.VarInt</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Internal.VarInt</p></div><div id="interface"><div class="top"><p class="src"><a href="TensorFlow-Internal-VarInt.html#v:getVarInt" target="main">getVarInt</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Internal-VarInt.html#v:putVarInt" target="main">putVarInt</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Nodes</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Nodes</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-Nodes.html#t:Nodes" target="main">Nodes</a> t</p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-Nodes.html#t:Fetchable" target="main">Fetchable</a> t a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Nodes.html#t:Fetch" target="main">Fetch</a> a</p></div><div class="top"><p class="src"><a href="TensorFlow-Nodes.html#v:nodesUnion" target="main">nodesUnion</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Nodes.html#v:fetchTensorList" target="main">fetchTensorList</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Nodes.html#v:fetchTensorVector" target="main">fetchTensorVector</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Nodes.html#t:Scalar" target="main">Scalar</a> a</p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Output</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Output</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:ControlNode" target="main">ControlNode</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:Device" target="main">Device</a></p></div><h1>Ops</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:NodeName" target="main">NodeName</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:Op" target="main">Op</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opUnrendered" target="main">opUnrendered</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:OpDef" target="main">OpDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opName" target="main">opName</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opType" target="main">opType</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opAttr" target="main">opAttr</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opInputs" target="main">opInputs</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:opControlInputs" target="main">opControlInputs</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:OpType" target="main">OpType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:OutputIx" target="main">OutputIx</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:Output" target="main">Output</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:output" target="main">output</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:outputIndex" target="main">outputIndex</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Output.html#v:outputOp" target="main">outputOp</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:PendingNodeName" target="main">PendingNodeName</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Session</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Session</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Session.html#t:Session" target="main">Session</a> a</p></div><h1>Opaque value created via <code><a href="TensorFlow-Session.html#v:sessionConfig">sessionConfig</a></code> and <code><a href="TensorFlow-Session.html#v:sessionTarget">sessionTarget</a></code>.</h1><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Session.html#t:SessionOption" target="main">SessionOption</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:sessionConfig" target="main">sessionConfig</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:sessionTarget" target="main">sessionTarget</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:runSession" target="main">runSession</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:runSessionWithOptions" target="main">runSessionWithOptions</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:build" target="main">build</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:buildAnd" target="main">buildAnd</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:buildWithSummary" target="main">buildWithSummary</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:extend" target="main">extend</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:addGraphDef" target="main">addGraphDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:run" target="main">run</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:runWithFeeds" target="main">runWithFeeds</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:run_" target="main">run_</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:runWithFeeds_" target="main">runWithFeeds_</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Session.html#v:asyncProdNodes" target="main">asyncProdNodes</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Tensor</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Tensor</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Tensor.html#t:Tensor" target="main">Tensor</a> v a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Tensor.html#t:Value" target="main">Value</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Tensor.html#t:Ref" target="main">Ref</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Tensor.html#t:TensorKind" target="main">TensorKind</a> v</p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:tensorKind" target="main">tensorKind</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:tensorOutput" target="main">tensorOutput</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:tensorAttr" target="main">tensorAttr</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:value" target="main">value</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Tensor.html#t:Feed" target="main">Feed</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:feed" target="main">feed</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Tensor.html#v:tensorFromName" target="main">tensorFromName</a></p></div></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>TensorFlow.Types</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body id="mini"><div id="module-header"><p class="caption">TensorFlow.Types</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-Types.html#t:TensorType" target="main">TensorType</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Types.html#t:TensorData" target="main">TensorData</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Types.html#t:Shape" target="main">Shape</a></p></div><div class="top"><p class="src"><a href="TensorFlow-Types.html#v:protoShape" target="main">protoShape</a></p></div><div class="top"><p class="src"><span class="keyword">class</span> <a href="TensorFlow-Types.html#t:Attribute" target="main">Attribute</a> a</p></div><h1>Type constraints</h1><div class="top"><p class="src"><span class="keyword">type</span> <a href="TensorFlow-Types.html#t:OneOf" target="main">OneOf</a> ts a</p></div><div class="top"><p class="src"><span class="keyword">type family</span> a <a href="#t:-47--61-">/=</a> b :: <a href="../base-4.8.2.0/GHC-Exts.html#t:Constraint">Constraint</a></p></div><h2>Implementation of constraints</h2><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Types.html#t:TypeError" target="main">TypeError</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Types.html#t:ExcludedCase" target="main">ExcludedCase</a></p></div><div class="top"><p class="src"><span class="keyword">type family</span> <a href="#t:TensorTypes">TensorTypes</a> ts :: <a href="../base-4.8.2.0/GHC-Exts.html#t:Constraint">Constraint</a></p></div><div class="top"><p class="src"><span class="keyword">type family</span> <a href="#t:NoneOf">NoneOf</a> ts a :: <a href="../base-4.8.2.0/GHC-Exts.html#t:Constraint">Constraint</a></p></div><div class="top"><p class="src"><span class="keyword">type family</span> as <a href="#t:-92--92-">\\</a> bs</p></div><div class="top"><p class="src"><span class="keyword">type family</span> <a href="#t:Delete">Delete</a> a as</p></div><div class="top"><p class="src"><span class="keyword">type</span> <a href="TensorFlow-Types.html#t:AllTensorTypes" target="main">AllTensorTypes</a></p></div></div></body></html>
|
BIN
docs/haddock/tensorflow-0.1.0.0/minus.gif
Normal file
After Width: | Height: | Size: 56 B |
600
docs/haddock/tensorflow-0.1.0.0/ocean.css
Normal file
|
@ -0,0 +1,600 @@
|
||||||
|
/* @group Fundamentals */
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0 }
|
||||||
|
|
||||||
|
/* Is this portable? */
|
||||||
|
html {
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: white;
|
||||||
|
color: black;
|
||||||
|
text-align: left;
|
||||||
|
min-height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
margin: 0.8em 0 0.8em 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
dl {
|
||||||
|
margin: 0.8em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
dt {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
dd {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
a { text-decoration: none; }
|
||||||
|
a[href]:link { color: rgb(196,69,29); }
|
||||||
|
a[href]:visited { color: rgb(171,105,84); }
|
||||||
|
a[href]:hover { text-decoration:underline; }
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Fonts & Sizes */
|
||||||
|
|
||||||
|
/* Basic technique & IE workarounds from YUI 3
|
||||||
|
For reasons, see:
|
||||||
|
http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
font:13px/1.4 sans-serif;
|
||||||
|
*font-size:small; /* for IE */
|
||||||
|
*font:x-small; /* for IE in quirks mode */
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 { font-size: 146.5%; /* 19pt */ }
|
||||||
|
h2 { font-size: 131%; /* 17pt */ }
|
||||||
|
h3 { font-size: 116%; /* 15pt */ }
|
||||||
|
h4 { font-size: 100%; /* 13pt */ }
|
||||||
|
h5 { font-size: 100%; /* 13pt */ }
|
||||||
|
|
||||||
|
select, input, button, textarea {
|
||||||
|
font:99% sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
font-size:inherit;
|
||||||
|
font:100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code, kbd, samp, tt, .src {
|
||||||
|
font-family:monospace;
|
||||||
|
*font-size:108%;
|
||||||
|
line-height: 124%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.links, .link {
|
||||||
|
font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-header .caption {
|
||||||
|
font-size: 182%; /* 24pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
.info {
|
||||||
|
font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents, #synopsis {
|
||||||
|
/* font-size: 85%; /* 11pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Common */
|
||||||
|
|
||||||
|
.caption, h1, h2, h3, h4, h5, h6 {
|
||||||
|
font-weight: bold;
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
margin: 0.8em 0 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
|
||||||
|
margin-top: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
|
||||||
|
margin-top: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links {
|
||||||
|
list-style: none;
|
||||||
|
text-align: left;
|
||||||
|
float: right;
|
||||||
|
display: inline-table;
|
||||||
|
margin: 0 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links li {
|
||||||
|
display: inline;
|
||||||
|
border-left: 1px solid #d5d5d5;
|
||||||
|
white-space: nowrap;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.links li a {
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide { display: none; }
|
||||||
|
.show { display: inherit; }
|
||||||
|
.clear { clear: both; }
|
||||||
|
|
||||||
|
.collapser {
|
||||||
|
background-image: url(minus.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.expander {
|
||||||
|
background-image: url(plus.gif);
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
p.caption.collapser,
|
||||||
|
p.caption.expander {
|
||||||
|
background-position: 0 0.4em;
|
||||||
|
}
|
||||||
|
.collapser, .expander {
|
||||||
|
padding-left: 14px;
|
||||||
|
margin-left: -14px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 0.25em;
|
||||||
|
margin: 0.8em 0;
|
||||||
|
background: rgb(229,237,244);
|
||||||
|
overflow: auto;
|
||||||
|
border-bottom: 0.25em solid white;
|
||||||
|
/* white border adds some space below the box to compensate
|
||||||
|
for visual extra space that paragraphs have between baseline
|
||||||
|
and the bounding box */
|
||||||
|
}
|
||||||
|
|
||||||
|
.src {
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0.2em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.keyword { font-weight: normal; }
|
||||||
|
.def { font-weight: bold; }
|
||||||
|
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Page Structure */
|
||||||
|
|
||||||
|
#content {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 2em 6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header {
|
||||||
|
background: rgb(41,56,69);
|
||||||
|
border-top: 5px solid rgb(78,98,114);
|
||||||
|
color: #ddd;
|
||||||
|
padding: 0.2em;
|
||||||
|
position: relative;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header .caption {
|
||||||
|
background: url(hslogo-16.png) no-repeat 0em;
|
||||||
|
color: white;
|
||||||
|
margin: 0 2em;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#package-header a:link, #package-header a:visited { color: white; }
|
||||||
|
#package-header a:hover { background: rgb(78,98,114); }
|
||||||
|
|
||||||
|
#module-header .caption {
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
font-weight: bold;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.info {
|
||||||
|
float: right;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
color: rgb(78,98,114);
|
||||||
|
background-color: #fff;
|
||||||
|
max-width: 40%;
|
||||||
|
border-spacing: 0;
|
||||||
|
position: relative;
|
||||||
|
top: -0.5em;
|
||||||
|
margin: 0 0 0 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info th {
|
||||||
|
padding: 0 1em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#style-menu-holder {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
overflow: visible;
|
||||||
|
background: #374c5e;
|
||||||
|
margin: 0;
|
||||||
|
text-align: center;
|
||||||
|
right: 0;
|
||||||
|
padding: 0;
|
||||||
|
top: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu li {
|
||||||
|
display: list-item;
|
||||||
|
border-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
color: #000;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu li + li {
|
||||||
|
border-top: 1px solid #919191;
|
||||||
|
}
|
||||||
|
|
||||||
|
#style-menu a {
|
||||||
|
width: 6em;
|
||||||
|
padding: 3px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
background: #ddd;
|
||||||
|
border-top: 1px solid #aaa;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
color: #666;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Front Matter */
|
||||||
|
|
||||||
|
#table-of-contents {
|
||||||
|
float: right;
|
||||||
|
clear: right;
|
||||||
|
background: #faf9dc;
|
||||||
|
border: 1px solid #d8d7ad;
|
||||||
|
padding: 0.5em 1em;
|
||||||
|
max-width: 20em;
|
||||||
|
margin: 0.5em 0 1em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents .caption {
|
||||||
|
text-align: center;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#table-of-contents ul ul {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#description .caption {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-frame #synopsis {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
height: 80%;
|
||||||
|
top: 10%;
|
||||||
|
padding: 0;
|
||||||
|
max-width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis .caption {
|
||||||
|
float: left;
|
||||||
|
width: 29px;
|
||||||
|
color: rgba(255,255,255,0);
|
||||||
|
height: 110px;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis p.caption.collapser {
|
||||||
|
background: url(synopsis.png) no-repeat -64px -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis p.caption.expander {
|
||||||
|
background: url(synopsis.png) no-repeat 0px -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul {
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul ul {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#synopsis ul,
|
||||||
|
#synopsis ul li.src {
|
||||||
|
background-color: #faf9dc;
|
||||||
|
white-space: nowrap;
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Main Content */
|
||||||
|
|
||||||
|
#interface div.top { margin: 2em 0; }
|
||||||
|
#interface h1 + div.top,
|
||||||
|
#interface h2 + div.top,
|
||||||
|
#interface h3 + div.top,
|
||||||
|
#interface h4 + div.top,
|
||||||
|
#interface h5 + div.top {
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
#interface p.src .link {
|
||||||
|
float: right;
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0 0.5em 0.2em;
|
||||||
|
margin: 0 -0.5em 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface td.src .link {
|
||||||
|
float: right;
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
background: #f0f0f0;
|
||||||
|
padding: 0 0.5em 0.2em;
|
||||||
|
margin: 0 -0.5em 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface span.fixity {
|
||||||
|
color: #919191;
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
padding: 0.2em 0.5em 0.2em 0.5em;
|
||||||
|
margin: 0 -1em 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface span.rightedge {
|
||||||
|
border-left: 1px solid #919191;
|
||||||
|
padding: 0.2em 0 0.2em 0;
|
||||||
|
margin: 0 0 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#interface table { border-spacing: 2px; }
|
||||||
|
#interface td {
|
||||||
|
vertical-align: top;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
}
|
||||||
|
#interface td.src {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
#interface td.doc p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#interface td.doc p + p {
|
||||||
|
margin-top: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clearfix:after {
|
||||||
|
clear: both;
|
||||||
|
content: " ";
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dl {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dt {
|
||||||
|
float: left;
|
||||||
|
clear: left;
|
||||||
|
display: block;
|
||||||
|
margin: 1px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd {
|
||||||
|
float: right;
|
||||||
|
width: 90%;
|
||||||
|
display: block;
|
||||||
|
padding-left: 0.5em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd.empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs dd p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Render short-style data instances */
|
||||||
|
.inst ul {
|
||||||
|
height: 100%;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inst, .inst li {
|
||||||
|
list-style: none;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Workaround for bug in Firefox (issue #384) */
|
||||||
|
.inst-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top p.src {
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subs, .doc {
|
||||||
|
/* use this selector for one level of indent */
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arguments {
|
||||||
|
margin-top: -0.4em;
|
||||||
|
}
|
||||||
|
.arguments .caption {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fields { padding-left: 1em; }
|
||||||
|
|
||||||
|
.fields .caption { display: none; }
|
||||||
|
|
||||||
|
.fields p { margin: 0 0; }
|
||||||
|
|
||||||
|
/* this seems bulky to me
|
||||||
|
.methods, .constructors {
|
||||||
|
background: #f8f8f8;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* @end */
|
||||||
|
|
||||||
|
/* @group Auxillary Pages */
|
||||||
|
|
||||||
|
|
||||||
|
.extension-list {
|
||||||
|
list-style-type: none;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini {
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 1em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini > * {
|
||||||
|
font-size: 93%; /* 12pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #module-list .caption,
|
||||||
|
#mini #module-header .caption {
|
||||||
|
font-size: 125%; /* 15pt */
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #interface h1,
|
||||||
|
#mini #interface h2,
|
||||||
|
#mini #interface h3,
|
||||||
|
#mini #interface h4 {
|
||||||
|
font-size: 109%; /* 13pt */
|
||||||
|
margin: 1em 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #interface .top,
|
||||||
|
#mini #interface .src {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mini #module-list ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet ul {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0.5em 0 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet li {
|
||||||
|
display: inline;
|
||||||
|
margin: 0 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#alphabet a {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index .caption,
|
||||||
|
#module-list .caption { font-size: 131%; /* 17pt */ }
|
||||||
|
|
||||||
|
#index table {
|
||||||
|
margin-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index .src {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#index .alt {
|
||||||
|
font-size: 77%; /* 10pt */
|
||||||
|
font-style: italic;
|
||||||
|
padding-left: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#index td + td {
|
||||||
|
padding-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 0 0 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list li {
|
||||||
|
clear: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list span.collapser,
|
||||||
|
#module-list span.expander {
|
||||||
|
background-position: 0 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#module-list .package {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @end */
|
BIN
docs/haddock/tensorflow-0.1.0.0/plus.gif
Normal file
After Width: | Height: | Size: 59 B |
387
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Build.html
Normal file
|
@ -0,0 +1,387 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Build.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE LambdaCase #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-19"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-20"></a> <span class='hs-layout'>(</span> <span class='hs-comment'>-- * Graph node types</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-conid'>ControlNode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Unique</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-comment'>-- * Ops</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>explicitName</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>implicitName</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opDef</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opDefWithName</span>
|
||||||
|
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opName</span>
|
||||||
|
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opType</span>
|
||||||
|
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opAttr</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opInputs</span>
|
||||||
|
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opControlInputs</span>
|
||||||
|
<a name="line-33"></a> <span class='hs-comment'>-- * The Build monad</span>
|
||||||
|
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>GraphState</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>render</span>
|
||||||
|
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>renderNodeName</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>renderedNodeDefs</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>BuildT</span>
|
||||||
|
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>addInitializer</span>
|
||||||
|
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>hoistBuildT</span>
|
||||||
|
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>evalBuildT</span>
|
||||||
|
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>runBuildT</span>
|
||||||
|
<a name="line-44"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>asGraphDef</span>
|
||||||
|
<a name="line-45"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>addGraphDef</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>flushInitializers</span>
|
||||||
|
<a name="line-47"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>flushNodeBuffer</span>
|
||||||
|
<a name="line-48"></a> <span class='hs-comment'>-- * Creating and looking up Ops</span>
|
||||||
|
<a name="line-49"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>getOrAddOp</span>
|
||||||
|
<a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>addNewOp</span>
|
||||||
|
<a name="line-51"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>renderOutput</span>
|
||||||
|
<a name="line-52"></a> <span class='hs-comment'>-- * Modifying all nodes in a Build action</span>
|
||||||
|
<a name="line-53"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>colocateWith</span>
|
||||||
|
<a name="line-54"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withStateLens</span>
|
||||||
|
<a name="line-55"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withDevice</span>
|
||||||
|
<a name="line-56"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withNameScope</span>
|
||||||
|
<a name="line-57"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withNodeDependencies</span>
|
||||||
|
<a name="line-58"></a> <span class='hs-comment'>-- * Internal Summary related bits.</span>
|
||||||
|
<a name="line-59"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>addSummary</span>
|
||||||
|
<a name="line-60"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>SummaryTensor</span>
|
||||||
|
<a name="line-61"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>collectAllSummaries</span>
|
||||||
|
<a name="line-62"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-63"></a>
|
||||||
|
<a name="line-64"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadIO</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadTrans</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-66"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span><span class='hs-layout'>(</span><span class='hs-conid'>StateT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>mapStateT</span><span class='hs-layout'>,</span> <span class='hs-varid'>evalStateT</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-67"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-layout'>(</span><span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-68"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Default</span> <span class='hs-layout'>(</span><span class='hs-varid'>def</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Functor</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span> <span class='hs-layout'>(</span><span class='hs-conid'>Identity</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Map</span>
|
||||||
|
<a name="line-71"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'><></span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-72"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
|
||||||
|
<a name="line-73"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-74"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>IsString</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-75"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-76"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-77"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-conid'>Lens'</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.~</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-78"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadState</span><span class='hs-layout'>,</span> <span class='hs-varid'>use</span><span class='hs-layout'>,</span> <span class='hs-varid'>uses</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.=</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'><>=</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>%=</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-79"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span><span class='hs-varop'>.</span><span class='hs-conid'>Unchecked</span> <span class='hs-layout'>(</span><span class='hs-varid'>lens</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-80"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Graph</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>GraphDef</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>node</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-84"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-85"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attr</span>
|
||||||
|
<a name="line-87"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>input</span>
|
||||||
|
<a name="line-88"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>device</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>name</span>
|
||||||
|
<a name="line-90"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>op</span>
|
||||||
|
<a name="line-91"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-92"></a>
|
||||||
|
<a name="line-93"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Orphans</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-94"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-95"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-96"></a>
|
||||||
|
<a name="line-97"></a><a name="Unique"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Unique</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Unique</span> <span class='hs-conid'>Int</span>
|
||||||
|
<a name="line-98"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Enum</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-99"></a>
|
||||||
|
<a name="line-100"></a><span class='hs-comment'>--------------</span>
|
||||||
|
<a name="line-101"></a>
|
||||||
|
<a name="line-102"></a><a name="implicitName"></a><span class='hs-definition'>implicitName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PendingNodeName</span>
|
||||||
|
<a name="line-103"></a><span class='hs-definition'>implicitName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ImplicitName</span>
|
||||||
|
<a name="line-104"></a>
|
||||||
|
<a name="line-105"></a><a name="explicitName"></a><span class='hs-definition'>explicitName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>PendingNodeName</span>
|
||||||
|
<a name="line-106"></a><span class='hs-definition'>explicitName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ExplicitName</span>
|
||||||
|
<a name="line-107"></a>
|
||||||
|
<a name="line-108"></a><a name="Scope"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Scope</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Scope</span> <span class='hs-layout'>{</span><span class='hs-varid'>unScope</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span><span class='hs-layout'>}</span>
|
||||||
|
<a name="line-109"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>IsString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-110"></a>
|
||||||
|
<a name="line-111"></a><a name="instance%20Show%20Scope"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>Scope</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-112"></a> <span class='hs-varid'>show</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>show</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unScope</span>
|
||||||
|
<a name="line-113"></a>
|
||||||
|
<a name="line-114"></a><a name="opDef"></a><span class='hs-definition'>opDef</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpType</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-115"></a><span class='hs-definition'>opDef</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>opDefWithName</span> <span class='hs-conid'>ImplicitName</span>
|
||||||
|
<a name="line-116"></a>
|
||||||
|
<a name="line-117"></a><a name="opDefWithName"></a><span class='hs-definition'>opDefWithName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PendingNodeName</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpType</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-118"></a><span class='hs-definition'>opDefWithName</span> <span class='hs-varid'>n</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-119"></a> <span class='hs-layout'>{</span> <span class='hs-sel'>_opName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-120"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span>
|
||||||
|
<a name="line-122"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-123"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opControlInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-124"></a> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-125"></a>
|
||||||
|
<a name="line-126"></a><a name="SummaryTensor"></a><span class='hs-comment'>-- | Synonym for the tensors that return serialized Summary proto.</span>
|
||||||
|
<a name="line-127"></a><a name="SummaryTensor"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>SummaryTensor</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Tensor</span> <span class='hs-conid'>Value</span> <span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-128"></a>
|
||||||
|
<a name="line-129"></a><a name="GraphState"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>GraphState</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>GraphState</span>
|
||||||
|
<a name="line-130"></a> <span class='hs-layout'>{</span> <span class='hs-sel'>_renderedNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-conid'>PendingNode</span> <span class='hs-conid'>NodeDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-131"></a> <span class='hs-comment'>-- ^ Nodes which have been rendered. Keeps track of the unique ID we</span>
|
||||||
|
<a name="line-132"></a> <span class='hs-comment'>-- assign each implicitly-named node. Also prevents us from adding the</span>
|
||||||
|
<a name="line-133"></a> <span class='hs-comment'>-- same node (implicit or explicit) more than once to the nodeBuffer.</span>
|
||||||
|
<a name="line-134"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_renderedNodeDefs</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-conid'>NodeName</span> <span class='hs-conid'>NodeDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-135"></a> <span class='hs-comment'>-- ^ The NodeDefs of nodes which have been rendered. Used by the</span>
|
||||||
|
<a name="line-136"></a> <span class='hs-comment'>-- Gradient module to inspect the node graph.</span>
|
||||||
|
<a name="line-137"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_nodeBuffer</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeDef</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-138"></a> <span class='hs-comment'>-- ^ A list of nodes that should be passed to TensorFlow during</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-comment'>-- the next call to Session.extend (TF_ExtendGraph).</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_nextUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-conid'>Unique</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-comment'>-- ^ Unique ID for the next node</span>
|
||||||
|
<a name="line-142"></a> <span class='hs-comment'>-- TODO(judahjacobson): watch for clashes between auto and user names.</span>
|
||||||
|
<a name="line-143"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_defaultDevice</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>Device</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-144"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_currentScope</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Scope</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-145"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_defaultControlInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Set</span> <span class='hs-conid'>NodeName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-146"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_initializationNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-147"></a> <span class='hs-comment'>-- ^ The nodes to run next time a TF.run is issued, typically</span>
|
||||||
|
<a name="line-148"></a> <span class='hs-comment'>-- variable initializers.</span>
|
||||||
|
<a name="line-149"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_summaries</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SummaryTensor</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-150"></a> <span class='hs-comment'>-- ^ The tensors for summary</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-152"></a>
|
||||||
|
<a name="line-153"></a><a name="PendingNode"></a><span class='hs-comment'>-- | A node definition without its final name. Used as a key in the</span>
|
||||||
|
<a name="line-154"></a><a name="PendingNode"></a><span class='hs-comment'>-- "renderedNodes" map.</span>
|
||||||
|
<a name="line-155"></a><a name="PendingNode"></a><span class='hs-comment'>-- The NodeDef contained inside has an empty "name" field.</span>
|
||||||
|
<a name="line-156"></a><a name="PendingNode"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>PendingNode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>PendingNode</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Scope</span><span class='hs-keyglyph'>]</span> <span class='hs-varop'>!</span><span class='hs-conid'>PendingNodeName</span> <span class='hs-varop'>!</span><span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-157"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-158"></a>
|
||||||
|
<a name="line-159"></a><a name="pendingNodeDef"></a><span class='hs-comment'>-- Returns an _incomplete_ NodeDef. The name is fixed by addNewOpFromPending.</span>
|
||||||
|
<a name="line-160"></a><span class='hs-definition'>pendingNodeDef</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PendingNode</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-161"></a><span class='hs-definition'>pendingNodeDef</span> <span class='hs-layout'>(</span><span class='hs-conid'>PendingNode</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-162"></a>
|
||||||
|
<a name="line-163"></a><a name="initGraphState"></a><span class='hs-definition'>initGraphState</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GraphState</span>
|
||||||
|
<a name="line-164"></a><span class='hs-definition'>initGraphState</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-165"></a> <span class='hs-conid'>GraphState</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span> <span class='hs-conid'>[]</span> <span class='hs-layout'>(</span><span class='hs-conid'>Unique</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span> <span class='hs-conid'>Nothing</span> <span class='hs-conid'>[]</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span> <span class='hs-conid'>[]</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-166"></a>
|
||||||
|
<a name="line-167"></a><a name="renderedNodes"></a><span class='hs-definition'>renderedNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-conid'>PendingNode</span> <span class='hs-conid'>NodeDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-168"></a><span class='hs-definition'>renderedNodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_renderedNodes</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_renderedNodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-169"></a>
|
||||||
|
<a name="line-170"></a><a name="renderedNodeDefs"></a><span class='hs-definition'>renderedNodeDefs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-conid'>NodeName</span> <span class='hs-conid'>NodeDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-171"></a><span class='hs-definition'>renderedNodeDefs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_renderedNodeDefs</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_renderedNodeDefs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-172"></a>
|
||||||
|
<a name="line-173"></a><a name="nodeBuffer"></a><span class='hs-definition'>nodeBuffer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeDef</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-174"></a><span class='hs-definition'>nodeBuffer</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_nodeBuffer</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_nodeBuffer</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-175"></a>
|
||||||
|
<a name="line-176"></a><a name="nextUnique"></a><span class='hs-definition'>nextUnique</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-conid'>Unique</span>
|
||||||
|
<a name="line-177"></a><span class='hs-definition'>nextUnique</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_nextUnique</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_nextUnique</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-178"></a>
|
||||||
|
<a name="line-179"></a><a name="defaultDevice"></a><span class='hs-definition'>defaultDevice</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>Device</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-180"></a><span class='hs-definition'>defaultDevice</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_defaultDevice</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_defaultDevice</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-181"></a>
|
||||||
|
<a name="line-182"></a><a name="currentScope"></a><span class='hs-definition'>currentScope</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Scope</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-183"></a><span class='hs-definition'>currentScope</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_currentScope</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_currentScope</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-184"></a>
|
||||||
|
<a name="line-185"></a><a name="defaultControlInputs"></a><span class='hs-definition'>defaultControlInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span> <span class='hs-conid'>NodeName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-186"></a><span class='hs-definition'>defaultControlInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_defaultControlInputs</span>
|
||||||
|
<a name="line-187"></a> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_defaultControlInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-188"></a>
|
||||||
|
<a name="line-189"></a><a name="initializationNodes"></a><span class='hs-definition'>initializationNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-190"></a><span class='hs-definition'>initializationNodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_initializationNodes</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_initializationNodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-191"></a>
|
||||||
|
<a name="line-192"></a><a name="summaries"></a><span class='hs-definition'>summaries</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>GraphState</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SummaryTensor</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-193"></a><span class='hs-definition'>summaries</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_summaries</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>g</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>g</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_summaries</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span> <span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-194"></a>
|
||||||
|
<a name="line-195"></a><a name="BuildT"></a><span class='hs-comment'>-- | An action for building nodes in a TensorFlow graph.</span>
|
||||||
|
<a name="line-196"></a><a name="BuildT"></a><span class='hs-comment'>-- Used to manage build state internally as part of the @Session@ monad.</span>
|
||||||
|
<a name="line-197"></a><a name="BuildT"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildT</span> <span class='hs-layout'>(</span><span class='hs-conid'>StateT</span> <span class='hs-conid'>GraphState</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-198"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Functor</span><span class='hs-layout'>,</span> <span class='hs-conid'>Applicative</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monad</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadIO</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadTrans</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-199"></a> <span class='hs-conid'>MonadState</span> <span class='hs-conid'>GraphState</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-200"></a>
|
||||||
|
<a name="line-201"></a><a name="Build"></a><span class='hs-comment'>-- | An action for building nodes in a TensorFlow graph.</span>
|
||||||
|
<a name="line-202"></a><a name="Build"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Build</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildT</span> <span class='hs-conid'>Identity</span>
|
||||||
|
<a name="line-203"></a>
|
||||||
|
<a name="line-204"></a><a name="hoistBuildT"></a><span class='hs-comment'>-- | This is Control.Monad.Morph.hoist sans the dependency.</span>
|
||||||
|
<a name="line-205"></a><span class='hs-definition'>hoistBuildT</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varop'>.</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>n</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>n</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-206"></a><span class='hs-definition'>hoistBuildT</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>BuildT</span> <span class='hs-varop'>$</span> <span class='hs-varid'>mapStateT</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span>
|
||||||
|
<a name="line-207"></a>
|
||||||
|
<a name="line-208"></a><a name="runBuildT"></a><span class='hs-definition'>runBuildT</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>GraphState</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-209"></a><span class='hs-definition'>runBuildT</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildT</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runStateT</span> <span class='hs-varid'>f</span> <span class='hs-varid'>initGraphState</span>
|
||||||
|
<a name="line-210"></a>
|
||||||
|
<a name="line-211"></a><a name="evalBuildT"></a><span class='hs-definition'>evalBuildT</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>m</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-212"></a><span class='hs-definition'>evalBuildT</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildT</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>evalStateT</span> <span class='hs-varid'>f</span> <span class='hs-varid'>initGraphState</span>
|
||||||
|
<a name="line-213"></a>
|
||||||
|
<a name="line-214"></a><a name="flushNodeBuffer"></a><span class='hs-comment'>-- | Get all the NodeDefs that have accumulated so far, and clear that buffer.</span>
|
||||||
|
<a name="line-215"></a><span class='hs-definition'>flushNodeBuffer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeDef</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-216"></a><span class='hs-definition'>flushNodeBuffer</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-217"></a> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>nodeBuffer</span>
|
||||||
|
<a name="line-218"></a> <span class='hs-varid'>nodeBuffer</span> <span class='hs-varop'>.=</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-219"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>ns</span>
|
||||||
|
<a name="line-220"></a>
|
||||||
|
<a name="line-221"></a><a name="flushInitializers"></a><span class='hs-comment'>-- | Get all the initializers that have accumulated so far, and clear</span>
|
||||||
|
<a name="line-222"></a><span class='hs-comment'>-- that buffer.</span>
|
||||||
|
<a name="line-223"></a><span class='hs-definition'>flushInitializers</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-224"></a><span class='hs-definition'>flushInitializers</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-225"></a> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>initializationNodes</span>
|
||||||
|
<a name="line-226"></a> <span class='hs-varid'>initializationNodes</span> <span class='hs-varop'>.=</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-227"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>ns</span>
|
||||||
|
<a name="line-228"></a>
|
||||||
|
<a name="line-229"></a><a name="addInitializer"></a><span class='hs-comment'>-- | Registers the given node to be executed before the next</span>
|
||||||
|
<a name="line-230"></a><span class='hs-comment'>-- 'TensorFlow.Session.run'.</span>
|
||||||
|
<a name="line-231"></a><span class='hs-definition'>addInitializer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ControlNode</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-232"></a><span class='hs-definition'>addInitializer</span> <span class='hs-layout'>(</span><span class='hs-conid'>ControlNode</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-233"></a> <span class='hs-varid'>i</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-234"></a> <span class='hs-varid'>initializationNodes</span> <span class='hs-varop'>%=</span> <span class='hs-layout'>(</span><span class='hs-varid'>i</span><span class='hs-conop'>:</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-235"></a>
|
||||||
|
<a name="line-236"></a><a name="asGraphDef"></a><span class='hs-comment'>-- | Produce a GraphDef proto representation of the nodes that are rendered in</span>
|
||||||
|
<a name="line-237"></a><span class='hs-comment'>-- the given 'Build' action.</span>
|
||||||
|
<a name="line-238"></a><span class='hs-definition'>asGraphDef</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>GraphDef</span>
|
||||||
|
<a name="line-239"></a><span class='hs-definition'>asGraphDef</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>node</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>gs</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>nodeBuffer</span>
|
||||||
|
<a name="line-240"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-241"></a> <span class='hs-varid'>gs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>snd</span> <span class='hs-varop'>$</span> <span class='hs-varid'>runIdentity</span> <span class='hs-varop'>$</span> <span class='hs-varid'>runBuildT</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-242"></a>
|
||||||
|
<a name="line-243"></a><a name="addGraphDef"></a><span class='hs-comment'>-- TODO: check against existing nodes for conflicts?</span>
|
||||||
|
<a name="line-244"></a><span class='hs-definition'>addGraphDef</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>GraphDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-245"></a><span class='hs-definition'>addGraphDef</span> <span class='hs-varid'>g</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nodeBuffer</span> <span class='hs-varop'><>=</span> <span class='hs-varid'>g</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>node</span>
|
||||||
|
<a name="line-246"></a>
|
||||||
|
<a name="line-247"></a><a name="getOrAddOp"></a><span class='hs-comment'>-- | Render the given op if it hasn't been rendered already, and return its</span>
|
||||||
|
<a name="line-248"></a><span class='hs-comment'>-- name.</span>
|
||||||
|
<a name="line-249"></a><span class='hs-definition'>getOrAddOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Op</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeName</span>
|
||||||
|
<a name="line-250"></a><span class='hs-definition'>getOrAddOp</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NodeName</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>resolveOp</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-251"></a>
|
||||||
|
<a name="line-252"></a><a name="resolveOp"></a><span class='hs-definition'>resolveOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Op</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-253"></a><span class='hs-definition'>resolveOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rendered</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-254"></a><span class='hs-definition'>resolveOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Unrendered</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-255"></a> <span class='hs-varid'>pending</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getPendingNode</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-256"></a> <span class='hs-varid'>uses</span> <span class='hs-varid'>renderedNodes</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>lookup</span> <span class='hs-varid'>pending</span><span class='hs-layout'>)</span> <span class='hs-varop'>>>=</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>case</span>
|
||||||
|
<a name="line-257"></a> <span class='hs-conid'>Just</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-258"></a> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>addNewOpFromPending</span> <span class='hs-varid'>pending</span>
|
||||||
|
<a name="line-259"></a>
|
||||||
|
<a name="line-260"></a><a name="addNewOp"></a><span class='hs-comment'>-- | Add a new node for a given 'OpDef'. This is used for making "stateful" ops</span>
|
||||||
|
<a name="line-261"></a><span class='hs-comment'>-- which are not safe to dedup (e.g, "variable" and "assign").</span>
|
||||||
|
<a name="line-262"></a><span class='hs-definition'>addNewOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-263"></a><span class='hs-definition'>addNewOp</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getPendingNode</span> <span class='hs-varid'>o</span> <span class='hs-varop'>>>=</span> <span class='hs-varid'>addNewOpFromPending</span>
|
||||||
|
<a name="line-264"></a>
|
||||||
|
<a name="line-265"></a><a name="addNewOpFromPending"></a><span class='hs-definition'>addNewOpFromPending</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PendingNode</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-266"></a><span class='hs-definition'>addNewOpFromPending</span> <span class='hs-varid'>pending</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-267"></a> <span class='hs-varid'>nodeName</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>renderPendingNode</span> <span class='hs-varid'>pending</span>
|
||||||
|
<a name="line-268"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>nodeDef</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pendingNodeDef</span> <span class='hs-varid'>pending</span> <span class='hs-varop'>&</span> <span class='hs-varid'>name</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>unNodeName</span> <span class='hs-varid'>nodeName</span>
|
||||||
|
<a name="line-269"></a> <span class='hs-varid'>nodeBuffer</span> <span class='hs-varop'>%=</span> <span class='hs-layout'>(</span><span class='hs-varid'>nodeDef</span> <span class='hs-conop'>:</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-270"></a> <span class='hs-varid'>renderedNodes</span> <span class='hs-varop'>%=</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>insert</span> <span class='hs-varid'>pending</span> <span class='hs-varid'>nodeDef</span>
|
||||||
|
<a name="line-271"></a> <span class='hs-varid'>renderedNodeDefs</span> <span class='hs-varop'>%=</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>insert</span> <span class='hs-varid'>nodeName</span> <span class='hs-varid'>nodeDef</span>
|
||||||
|
<a name="line-272"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>nodeDef</span>
|
||||||
|
<a name="line-273"></a>
|
||||||
|
<a name="line-274"></a><a name="getPendingNode"></a><span class='hs-comment'>-- | Get the pending node corresponding to an OpDef, which may or may not have</span>
|
||||||
|
<a name="line-275"></a><span class='hs-comment'>-- been rendered before. Implicitly renders all of this node's inputs.</span>
|
||||||
|
<a name="line-276"></a><span class='hs-definition'>getPendingNode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>PendingNode</span>
|
||||||
|
<a name="line-277"></a><span class='hs-definition'>getPendingNode</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-278"></a> <span class='hs-comment'>-- An empty string in the proto field means that no specific</span>
|
||||||
|
<a name="line-279"></a> <span class='hs-comment'>-- device is specified.</span>
|
||||||
|
<a name="line-280"></a> <span class='hs-varid'>dev</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>maybe</span> <span class='hs-str'>""</span> <span class='hs-varid'>deviceName</span> <span class='hs-varop'><$></span> <span class='hs-varid'>use</span> <span class='hs-varid'>defaultDevice</span>
|
||||||
|
<a name="line-281"></a> <span class='hs-varid'>inputs</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getInput</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>opInputs</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-282"></a> <span class='hs-varid'>scope</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>currentScope</span>
|
||||||
|
<a name="line-283"></a> <span class='hs-varid'>controls</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>defaultControlInputs</span>
|
||||||
|
<a name="line-284"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>controlInputs</span>
|
||||||
|
<a name="line-285"></a> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</span> <span class='hs-varid'>getDep</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>opControlInputs</span> <span class='hs-varop'>++</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varid'>controls</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-286"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>PendingNode</span> <span class='hs-varid'>scope</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>opName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-287"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>op</span> <span class='hs-varop'>.~</span> <span class='hs-layout'>(</span><span class='hs-varid'>unOpType</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>opType</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-288"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>attr</span> <span class='hs-varop'>.~</span> <span class='hs-sel'>_opAttrs</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-289"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>input</span> <span class='hs-varop'>.~</span> <span class='hs-layout'>(</span><span class='hs-varid'>inputs</span> <span class='hs-varop'>++</span> <span class='hs-varid'>controlInputs</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-290"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>device</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>dev</span>
|
||||||
|
<a name="line-291"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-292"></a> <span class='hs-varid'>getInput</span> <span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-layout'>(</span><span class='hs-conid'>OutputIx</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span> <span class='hs-varid'>subOp</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-293"></a> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varop'><></span> <span class='hs-str'>":"</span> <span class='hs-varop'><></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unNodeName</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-varid'>subOp</span>
|
||||||
|
<a name="line-294"></a> <span class='hs-varid'>getDep</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-str'>"^"</span> <span class='hs-varop'><></span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unNodeName</span>
|
||||||
|
<a name="line-295"></a>
|
||||||
|
<a name="line-296"></a><a name="renderPendingNode"></a><span class='hs-comment'>-- | Pick a name for a pending node. If it has an explicit name, just use that;</span>
|
||||||
|
<a name="line-297"></a><span class='hs-comment'>-- if the name is implicit, assign a new unique name based on the op type.</span>
|
||||||
|
<a name="line-298"></a><span class='hs-definition'>renderPendingNode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PendingNode</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeName</span>
|
||||||
|
<a name="line-299"></a><span class='hs-definition'>renderPendingNode</span> <span class='hs-layout'>(</span><span class='hs-conid'>PendingNode</span> <span class='hs-varid'>scope</span> <span class='hs-varid'>pendingName</span> <span class='hs-varid'>nodeDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-300"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NodeName</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varid'>scopePrefix</span> <span class='hs-varop'><></span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getName</span>
|
||||||
|
<a name="line-301"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-302"></a> <span class='hs-varid'>scopePrefix</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>concat</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'><></span> <span class='hs-str'>"/"</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unScope</span><span class='hs-layout'>)</span> <span class='hs-varid'>scope</span>
|
||||||
|
<a name="line-303"></a> <span class='hs-varid'>getName</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>pendingName</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-304"></a> <span class='hs-conid'>ExplicitName</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-305"></a> <span class='hs-conid'>ImplicitName</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-306"></a> <span class='hs-varid'>u</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>Unique</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>nextUnique</span>
|
||||||
|
<a name="line-307"></a> <span class='hs-varid'>nextUnique</span> <span class='hs-varop'>.=</span> <span class='hs-varid'>succ</span> <span class='hs-varid'>u</span>
|
||||||
|
<a name="line-308"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>nodeDef</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>op</span> <span class='hs-varop'><></span> <span class='hs-str'>"_"</span> <span class='hs-varop'><></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-layout'>(</span><span class='hs-varid'>show</span> <span class='hs-varid'>k</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-309"></a>
|
||||||
|
<a name="line-310"></a>
|
||||||
|
<a name="line-311"></a><a name="renderOutput"></a><span class='hs-comment'>-- | Render an 'Output' and return a string representation for the TensorFlow</span>
|
||||||
|
<a name="line-312"></a><span class='hs-comment'>-- foreign APIs.</span>
|
||||||
|
<a name="line-313"></a><span class='hs-definition'>renderOutput</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Output</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-314"></a><span class='hs-definition'>renderOutput</span> <span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-layout'>(</span><span class='hs-conid'>OutputIx</span> <span class='hs-varid'>i</span><span class='hs-layout'>)</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-315"></a> <span class='hs-varid'>n</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-316"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>unNodeName</span> <span class='hs-varid'>n</span> <span class='hs-varop'><></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-layout'>(</span><span class='hs-str'>":"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>i</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-317"></a>
|
||||||
|
<a name="line-318"></a><a name="withStateLens"></a><span class='hs-comment'>-- | Modify some part of the state, run an action, and restore the state</span>
|
||||||
|
<a name="line-319"></a><span class='hs-comment'>-- after that action is done.</span>
|
||||||
|
<a name="line-320"></a><span class='hs-definition'>withStateLens</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MonadState</span> <span class='hs-varid'>s</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Lens'</span> <span class='hs-varid'>s</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>m</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-321"></a><span class='hs-definition'>withStateLens</span> <span class='hs-varid'>accessor</span> <span class='hs-varid'>f</span> <span class='hs-varid'>act</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-322"></a> <span class='hs-varid'>old</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>use</span> <span class='hs-varid'>accessor</span>
|
||||||
|
<a name="line-323"></a> <span class='hs-varid'>accessor</span> <span class='hs-varop'>%=</span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-324"></a> <span class='hs-varid'>result</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>act</span>
|
||||||
|
<a name="line-325"></a> <span class='hs-varid'>accessor</span> <span class='hs-varop'>.=</span> <span class='hs-varid'>old</span>
|
||||||
|
<a name="line-326"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
|
||||||
|
<a name="line-327"></a>
|
||||||
|
<a name="line-328"></a><a name="withDevice"></a><span class='hs-comment'>-- | Set a device for all nodes rendered in the given 'Build' action</span>
|
||||||
|
<a name="line-329"></a><span class='hs-comment'>-- (unless further overridden by another use of withDevice).</span>
|
||||||
|
<a name="line-330"></a><span class='hs-definition'>withDevice</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Device</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-331"></a><span class='hs-definition'>withDevice</span> <span class='hs-varid'>d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withStateLens</span> <span class='hs-varid'>defaultDevice</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-332"></a>
|
||||||
|
<a name="line-333"></a><a name="colocateWith"></a><span class='hs-comment'>-- | Places all nodes rendered in the given 'Build' action on the same</span>
|
||||||
|
<a name="line-334"></a><span class='hs-comment'>-- device as the given Tensor (see also 'withDevice'). Make sure that</span>
|
||||||
|
<a name="line-335"></a><span class='hs-comment'>-- the action has side effects of rendering the desired tensors. A pure</span>
|
||||||
|
<a name="line-336"></a><span class='hs-comment'>-- return would not have the desired effect.</span>
|
||||||
|
<a name="line-337"></a><span class='hs-definition'>colocateWith</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varid'>v</span> <span class='hs-varid'>b</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-338"></a><span class='hs-definition'>colocateWith</span> <span class='hs-varid'>t</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-339"></a> <span class='hs-varid'>d</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Device</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span> <span class='hs-varid'>device</span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>resolveOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-varop'>.</span> <span class='hs-varid'>outputOp</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-340"></a> <span class='hs-varid'>withDevice</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-varid'>x</span>
|
||||||
|
<a name="line-341"></a>
|
||||||
|
<a name="line-342"></a><a name="withNameScope"></a><span class='hs-comment'>-- | Prepend a scope to all nodes rendered in the given 'Build' action.</span>
|
||||||
|
<a name="line-343"></a><span class='hs-definition'>withNameScope</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-344"></a><span class='hs-definition'>withNameScope</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withStateLens</span> <span class='hs-varid'>currentScope</span> <span class='hs-layout'>(</span><span class='hs-conid'>Scope</span> <span class='hs-varid'>s</span> <span class='hs-conop'>:</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-345"></a>
|
||||||
|
<a name="line-346"></a><a name="withNodeDependencies"></a><span class='hs-comment'>-- | Add control inputs to all nodes rendered in the given 'Build' action.</span>
|
||||||
|
<a name="line-347"></a><span class='hs-definition'>withNodeDependencies</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Set</span> <span class='hs-conid'>NodeName</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-348"></a><span class='hs-definition'>withNodeDependencies</span> <span class='hs-varid'>nodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withStateLens</span> <span class='hs-varid'>defaultControlInputs</span> <span class='hs-layout'>(</span><span class='hs-varop'><></span> <span class='hs-varid'>nodes</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-349"></a>
|
||||||
|
<a name="line-350"></a><a name="render"></a><span class='hs-comment'>-- | Render a 'Tensor', fixing its name, scope, device and control inputs from</span>
|
||||||
|
<a name="line-351"></a><span class='hs-comment'>-- the 'Build' context. Also renders any dependencies of the 'Tensor' that</span>
|
||||||
|
<a name="line-352"></a><span class='hs-comment'>-- weren't already rendered.</span>
|
||||||
|
<a name="line-353"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-354"></a><span class='hs-comment'>-- This operation is idempotent; @render >=> render === render@. However,</span>
|
||||||
|
<a name="line-355"></a><span class='hs-comment'>-- rendering a (previously un-rendered) 'Tensor' in two different contexts</span>
|
||||||
|
<a name="line-356"></a><span class='hs-comment'>-- may result in two different 'Tensor's.</span>
|
||||||
|
<a name="line-357"></a><span class='hs-definition'>render</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-358"></a><span class='hs-definition'>render</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-varop'>$</span> <span class='hs-varid'>outputOp</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fmap</span> <span class='hs-conid'>Rendered</span> <span class='hs-varop'>.</span> <span class='hs-varid'>resolveOp</span>
|
||||||
|
<a name="line-359"></a>
|
||||||
|
<a name="line-360"></a><a name="renderNodeName"></a><span class='hs-comment'>-- | Render a 'Tensor' and get its node's name.</span>
|
||||||
|
<a name="line-361"></a><span class='hs-definition'>renderNodeName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>NodeName</span>
|
||||||
|
<a name="line-362"></a><span class='hs-definition'>renderNodeName</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-varop'>.</span> <span class='hs-varid'>outputOp</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-363"></a>
|
||||||
|
<a name="line-364"></a><a name="addSummary"></a><span class='hs-comment'>-- | Records the given summary action in Build for retrieval with</span>
|
||||||
|
<a name="line-365"></a><span class='hs-comment'>-- 'collectAllSummaries'. The summary op is required to produce a</span>
|
||||||
|
<a name="line-366"></a><span class='hs-comment'>-- Summary protocol buffer in string form. For safety, use the</span>
|
||||||
|
<a name="line-367"></a><span class='hs-comment'>-- pre-composed functions: Logging.scalarSummary and</span>
|
||||||
|
<a name="line-368"></a><span class='hs-comment'>-- Logging.histogramSummary.</span>
|
||||||
|
<a name="line-369"></a><span class='hs-definition'>addSummary</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SummaryTensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-370"></a><span class='hs-definition'>addSummary</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>summaries</span> <span class='hs-varop'>%=</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-conop'>:</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-371"></a>
|
||||||
|
<a name="line-372"></a><a name="collectAllSummaries"></a><span class='hs-comment'>-- | Retrieves the summary ops collected thus far. Typically this only</span>
|
||||||
|
<a name="line-373"></a><span class='hs-comment'>-- happens once, but if 'TensorFlow.Session.buildWithSummary' is used</span>
|
||||||
|
<a name="line-374"></a><span class='hs-comment'>-- repeatedly, the values accumulate.</span>
|
||||||
|
<a name="line-375"></a><span class='hs-definition'>collectAllSummaries</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Monad</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildT</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SummaryTensor</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-376"></a><span class='hs-definition'>collectAllSummaries</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>use</span> <span class='hs-varid'>summaries</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
210
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-BuildOp.html
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/BuildOp.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE TupleSections #-}</span>
|
||||||
|
<a name="line-17"></a>
|
||||||
|
<a name="line-18"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>BuildOp</span>
|
||||||
|
<a name="line-19"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>OpResult</span>
|
||||||
|
<a name="line-20"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>BuildOp</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>buildOp</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>buildListOp</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>eqLengthGuard</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-26"></a>
|
||||||
|
<a name="line-27"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>replicateM</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span><span class='hs-layout'>,</span> <span class='hs-varid'>runReaderT</span><span class='hs-layout'>,</span> <span class='hs-varid'>ask</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>State</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span><span class='hs-layout'>,</span> <span class='hs-varid'>runState</span><span class='hs-layout'>,</span> <span class='hs-varid'>get</span><span class='hs-layout'>,</span> <span class='hs-varid'>put</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Int</span> <span class='hs-layout'>(</span><span class='hs-conid'>Int64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'><>~</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-32"></a>
|
||||||
|
<a name="line-33"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-35"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-36"></a>
|
||||||
|
<a name="line-37"></a><a name="ResultState"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ResultState</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ResultState</span> <span class='hs-varop'>!</span><span class='hs-conid'>OutputIx</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>deriving</span> <span class='hs-conid'>Show</span>
|
||||||
|
<a name="line-38"></a>
|
||||||
|
<a name="line-39"></a><a name="Result"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Result</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ReaderT</span> <span class='hs-conid'>Op</span> <span class='hs-layout'>(</span><span class='hs-conid'>State</span> <span class='hs-conid'>ResultState</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-40"></a>
|
||||||
|
<a name="line-41"></a><a name="OpResult"></a><span class='hs-comment'>-- | Class of types that can be used as op outputs.</span>
|
||||||
|
<a name="line-42"></a><a name="OpResult"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-43"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Result</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-44"></a>
|
||||||
|
<a name="line-45"></a><a name="instance%20OpResult%20(a1,%20a2)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>(,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-47"></a>
|
||||||
|
<a name="line-48"></a><a name="instance%20OpResult%20(a1,%20a2,%20a3)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a3</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-varid'>a3</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-49"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>(,,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-50"></a>
|
||||||
|
<a name="line-51"></a><a name="instance%20OpResult%20(a1,%20a2,%20a3,%20a4)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a3</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a4</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-52"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-varid'>a3</span><span class='hs-layout'>,</span> <span class='hs-varid'>a4</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-53"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>(,,,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-54"></a>
|
||||||
|
<a name="line-55"></a><a name="instance%20OpResult%20(a1,%20a2,%20a3,%20a4,%20a5)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a3</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a4</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a5</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-56"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-varid'>a3</span><span class='hs-layout'>,</span> <span class='hs-varid'>a4</span><span class='hs-layout'>,</span> <span class='hs-varid'>a5</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-57"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>(,,,,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-58"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-59"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-60"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-61"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-62"></a>
|
||||||
|
<a name="line-63"></a><a name="instance%20OpResult%20(a1,%20a2,%20a3,%20a4,%20a5,%20a6)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a1</span>
|
||||||
|
<a name="line-64"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a2</span>
|
||||||
|
<a name="line-65"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a3</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a4</span>
|
||||||
|
<a name="line-67"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a5</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a6</span>
|
||||||
|
<a name="line-69"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-70"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-varid'>a3</span><span class='hs-layout'>,</span> <span class='hs-varid'>a4</span><span class='hs-layout'>,</span> <span class='hs-varid'>a5</span><span class='hs-layout'>,</span> <span class='hs-varid'>a6</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-71"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>(,,,,,)</span>
|
||||||
|
<a name="line-72"></a> <span class='hs-varop'><$></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-73"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-74"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-75"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-76"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-77"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-78"></a>
|
||||||
|
<a name="line-79"></a><a name="tensorResult"></a><span class='hs-definition'>tensorResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorKind</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Result</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-80"></a><span class='hs-definition'>tensorResult</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-varid'>o</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>ask</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-conid'>ResultState</span> <span class='hs-varid'>i</span> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>get</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-varid'>put</span> <span class='hs-varop'>$!</span> <span class='hs-conid'>ResultState</span> <span class='hs-layout'>(</span><span class='hs-varid'>i</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-varid'>ns</span>
|
||||||
|
<a name="line-84"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$!</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varop'>$</span> <span class='hs-varid'>output</span> <span class='hs-varid'>i</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-85"></a>
|
||||||
|
<a name="line-86"></a><a name="instance%20OpResult%20(Tensor%20Value%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-conid'>Value</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-87"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorResult</span> <span class='hs-conid'>ValueKind</span>
|
||||||
|
<a name="line-88"></a>
|
||||||
|
<a name="line-89"></a><a name="instance%20OpResult%20(Tensor%20Ref%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-conid'>Ref</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-90"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorResult</span> <span class='hs-conid'>RefKind</span>
|
||||||
|
<a name="line-91"></a>
|
||||||
|
<a name="line-92"></a><a name="instance%20OpResult%20ControlNode"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-conid'>ControlNode</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-93"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlNode</span> <span class='hs-varop'><$></span> <span class='hs-varid'>ask</span>
|
||||||
|
<a name="line-94"></a>
|
||||||
|
<a name="line-95"></a><a name="instance%20OpResult%20%5ba%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpResult</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-96"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-97"></a> <span class='hs-conid'>ResultState</span> <span class='hs-varid'>i</span> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>get</span>
|
||||||
|
<a name="line-98"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>ns</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-99"></a> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Ran out of counts in toResult. "</span> <span class='hs-varop'>++</span>
|
||||||
|
<a name="line-100"></a> <span class='hs-str'>"Likely misuse of buildListOp."</span>
|
||||||
|
<a name="line-101"></a> <span class='hs-layout'>(</span><span class='hs-varid'>n</span> <span class='hs-conop'>:</span> <span class='hs-varid'>rest</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-102"></a> <span class='hs-varid'>put</span> <span class='hs-varop'>$!</span> <span class='hs-conid'>ResultState</span> <span class='hs-varid'>i</span> <span class='hs-varid'>rest</span>
|
||||||
|
<a name="line-103"></a> <span class='hs-varid'>replicateM</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-varid'>toResult</span>
|
||||||
|
<a name="line-104"></a>
|
||||||
|
<a name="line-105"></a><a name="runResult"></a><span class='hs-definition'>runResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Op</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-106"></a><span class='hs-definition'>runResult</span> <span class='hs-varid'>ns</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-107"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>runState</span> <span class='hs-layout'>(</span><span class='hs-varid'>runReaderT</span> <span class='hs-varid'>toResult</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>ResultState</span> <span class='hs-num'>0</span> <span class='hs-varid'>ns</span><span class='hs-layout'>)</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-108"></a> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-conid'>ResultState</span> <span class='hs-keyword'>_</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>x</span>
|
||||||
|
<a name="line-109"></a> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>ns'</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Ununsed length in runResult attributes: "</span> <span class='hs-varop'>++</span>
|
||||||
|
<a name="line-110"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>ns</span><span class='hs-layout'>,</span> <span class='hs-varid'>ns'</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-111"></a>
|
||||||
|
<a name="line-112"></a><a name="pureResult"></a><span class='hs-comment'>-- | Make a new "pure" op, which may be deduped with identical ops within</span>
|
||||||
|
<a name="line-113"></a><span class='hs-comment'>-- the same scope.</span>
|
||||||
|
<a name="line-114"></a><span class='hs-definition'>pureResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-115"></a><span class='hs-definition'>pureResult</span> <span class='hs-varid'>ns</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runResult</span> <span class='hs-varid'>ns</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Unrendered</span> <span class='hs-varop'>$</span> <span class='hs-varid'>addReversedInputs</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-116"></a>
|
||||||
|
<a name="line-117"></a><a name="buildResult"></a><span class='hs-comment'>-- | Make a new "stateful" op, which will not be deduped with otherwise</span>
|
||||||
|
<a name="line-118"></a><span class='hs-comment'>-- identical ops.</span>
|
||||||
|
<a name="line-119"></a><span class='hs-definition'>buildResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-120"></a><span class='hs-definition'>buildResult</span> <span class='hs-varid'>ns</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runResult</span> <span class='hs-varid'>ns</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Rendered</span> <span class='hs-varop'><$></span> <span class='hs-varid'>addNewOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>addReversedInputs</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-122"></a>
|
||||||
|
<a name="line-123"></a><a name="addReversedInputs"></a><span class='hs-definition'>addReversedInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-124"></a><span class='hs-definition'>addReversedInputs</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>o</span> <span class='hs-varop'>&</span> <span class='hs-varid'>opInputs</span> <span class='hs-varop'><>~</span> <span class='hs-varid'>reverse</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-125"></a>
|
||||||
|
<a name="line-126"></a><a name="OpDef"></a><span class='hs-comment'>-- | Class of types that can be used as op functions.</span>
|
||||||
|
<a name="line-127"></a><a name="OpDef"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>BuildOp</span> <span class='hs-varid'>f</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-128"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Sizes of list results (having number_attr)</span>
|
||||||
|
<a name="line-129"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-130"></a> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Accumulator for inputs to the op.</span>
|
||||||
|
<a name="line-131"></a> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-132"></a>
|
||||||
|
<a name="line-133"></a><a name="buildOp"></a><span class='hs-comment'>-- | Starts an operation that returns a structured set of tensors</span>
|
||||||
|
<a name="line-134"></a><span class='hs-comment'>-- (singletons or tuples).</span>
|
||||||
|
<a name="line-135"></a><span class='hs-definition'>buildOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BuildOp</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-136"></a><span class='hs-definition'>buildOp</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildOp'</span> <span class='hs-conid'>[]</span> <span class='hs-varid'>o</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-137"></a>
|
||||||
|
<a name="line-138"></a><a name="buildListOp"></a><span class='hs-comment'>-- | Starts an operation that returns a list of tensors.</span>
|
||||||
|
<a name="line-139"></a><span class='hs-definition'>buildListOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BuildOp</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-comment'>-- ^ Cardinality of the corresponding list of tensors output.</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-142"></a><span class='hs-definition'>buildListOp</span> <span class='hs-varid'>counts</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildOp'</span> <span class='hs-varid'>counts</span> <span class='hs-varid'>o</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-143"></a>
|
||||||
|
<a name="line-144"></a><a name="instance%20BuildOp%20ControlNode"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-conid'>ControlNode</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-145"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlNode</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Unrendered</span> <span class='hs-varop'>$</span> <span class='hs-varid'>addReversedInputs</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-146"></a>
|
||||||
|
<a name="line-147"></a><a name="instance%20BuildOp%20(Tensor%20Value%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-conid'>Value</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-148"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-149"></a>
|
||||||
|
<a name="line-150"></a><a name="instance%20BuildOp%20(Tensor%20Ref%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-conid'>Ref</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-152"></a>
|
||||||
|
<a name="line-153"></a><a name="instance%20BuildOp%20%5bTensor%20Value%20a%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Tensor</span> <span class='hs-conid'>Value</span> <span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-154"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-155"></a>
|
||||||
|
<a name="line-156"></a><a name="instance%20BuildOp%20(t1,%20t2)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-157"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-158"></a>
|
||||||
|
<a name="line-159"></a><a name="instance%20BuildOp%20(t1,%20t2,%20t3)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t3</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-160"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-161"></a>
|
||||||
|
<a name="line-162"></a><a name="instance%20BuildOp%20(t1,%20t2,%20t3,%20t4)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t3</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t4</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-163"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>,</span> <span class='hs-varid'>t4</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-164"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-165"></a>
|
||||||
|
<a name="line-166"></a><a name="instance%20BuildOp%20(t1,%20t2,%20t3,%20t4,%20t5)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpResult</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t3</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t4</span><span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t5</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-167"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>,</span> <span class='hs-varid'>t4</span><span class='hs-layout'>,</span> <span class='hs-varid'>t5</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-168"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-169"></a>
|
||||||
|
<a name="line-170"></a><a name="instance%20BuildOp%20(t1,%20t2,%20t3,%20t4,%20t5,%20t6)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t1</span>
|
||||||
|
<a name="line-171"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span>
|
||||||
|
<a name="line-172"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t3</span>
|
||||||
|
<a name="line-173"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t4</span>
|
||||||
|
<a name="line-174"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t5</span>
|
||||||
|
<a name="line-175"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t6</span>
|
||||||
|
<a name="line-176"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-177"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>,</span> <span class='hs-varid'>t4</span><span class='hs-layout'>,</span> <span class='hs-varid'>t5</span><span class='hs-layout'>,</span> <span class='hs-varid'>t6</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-178"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||||
|
<a name="line-179"></a>
|
||||||
|
<a name="line-180"></a><a name="instance%20BuildOp%20(Build%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Build</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-181"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildResult</span>
|
||||||
|
<a name="line-182"></a>
|
||||||
|
<a name="line-183"></a><a name="instance%20BuildOp%20(Tensor%20v%20a%20-%3e%20f)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-184"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-varid'>rf</span> <span class='hs-varid'>o</span> <span class='hs-varid'>ts</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildOp'</span> <span class='hs-varid'>rf</span> <span class='hs-varid'>o</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-conop'>:</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-185"></a>
|
||||||
|
<a name="line-186"></a><a name="instance%20BuildOp%20(%5bTensor%20v%20a%5d%20-%3e%20f)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-187"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-varid'>rf</span> <span class='hs-varid'>o</span> <span class='hs-varid'>accum</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-188"></a> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildOp'</span> <span class='hs-varid'>rf</span> <span class='hs-varid'>o</span> <span class='hs-layout'>(</span><span class='hs-varid'>reverse</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span> <span class='hs-varid'>tensorOutput</span><span class='hs-layout'>)</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span> <span class='hs-varop'>++</span> <span class='hs-varid'>accum</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-189"></a>
|
||||||
|
<a name="line-190"></a><a name="eqLengthGuard"></a><span class='hs-comment'>-- | Returns true if all the integers in each tuple are identical.</span>
|
||||||
|
<a name="line-191"></a><span class='hs-comment'>-- Throws an error with a descriptive message if not.</span>
|
||||||
|
<a name="line-192"></a><span class='hs-definition'>eqLengthGuard</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>String</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>String</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span>
|
||||||
|
<a name="line-193"></a><span class='hs-definition'>eqLengthGuard</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>all</span> <span class='hs-varid'>eachOk</span>
|
||||||
|
<a name="line-194"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-195"></a> <span class='hs-varid'>eachOk</span> <span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-conid'>[]</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
|
||||||
|
<a name="line-196"></a> <span class='hs-comment'>-- The next line has (== 1) . length . nub in disguise</span>
|
||||||
|
<a name="line-197"></a> <span class='hs-varid'>eachOk</span> <span class='hs-layout'>(</span><span class='hs-varid'>numberAttrName</span><span class='hs-layout'>,</span> <span class='hs-varid'>pairs</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyword'>_</span><span class='hs-layout'>,</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span> <span class='hs-varid'>zs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>all</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>z</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>snd</span> <span class='hs-varid'>z</span> <span class='hs-varop'>==</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-varid'>zs</span> <span class='hs-varop'>||</span>
|
||||||
|
<a name="line-198"></a> <span class='hs-varid'>error</span> <span class='hs-layout'>(</span><span class='hs-str'>"number_attr "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>numberAttrName</span> <span class='hs-varop'>++</span>
|
||||||
|
<a name="line-199"></a> <span class='hs-str'>" contains tensors with different length "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>pairs</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,98 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/ControlFlow.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE GADTs #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
|
||||||
|
<a name="line-19"></a>
|
||||||
|
<a name="line-20"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>ControlFlow</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-layout'>(</span> <span class='hs-comment'>-- * Dependencies</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-varid'>withControlDependencies</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>group</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-comment'>-- * Operations</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>identity</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>noOp</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>named</span>
|
||||||
|
<a name="line-28"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-29"></a>
|
||||||
|
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
|
||||||
|
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.~</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-33"></a>
|
||||||
|
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>BuildOp</span>
|
||||||
|
<a name="line-35"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Nodes</span>
|
||||||
|
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-38"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-39"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
|
||||||
|
<a name="line-40"></a>
|
||||||
|
<a name="line-41"></a><a name="withControlDependencies"></a><span class='hs-comment'>-- | Modify a 'Build' action, such that all new ops rendered in it will depend</span>
|
||||||
|
<a name="line-42"></a><span class='hs-comment'>-- on the nodes in the first argument.</span>
|
||||||
|
<a name="line-43"></a><span class='hs-definition'>withControlDependencies</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-44"></a><span class='hs-definition'>withControlDependencies</span> <span class='hs-varid'>deps</span> <span class='hs-varid'>act</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-45"></a> <span class='hs-varid'>nodes</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>deps</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-varid'>withNodeDependencies</span> <span class='hs-varid'>nodes</span> <span class='hs-varid'>act</span>
|
||||||
|
<a name="line-47"></a>
|
||||||
|
<a name="line-48"></a><span class='hs-comment'>-- TODO(judahjacobson): Reimplement withDependencies.</span>
|
||||||
|
<a name="line-49"></a>
|
||||||
|
<a name="line-50"></a><a name="group"></a><span class='hs-comment'>-- | Create an op that groups multiple operations.</span>
|
||||||
|
<a name="line-51"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-52"></a><span class='hs-comment'>-- When this op finishes, all ops in the input @n@ have finished. This op has</span>
|
||||||
|
<a name="line-53"></a><span class='hs-comment'>-- no output.</span>
|
||||||
|
<a name="line-54"></a><span class='hs-definition'>group</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-conid'>ControlNode</span>
|
||||||
|
<a name="line-55"></a><span class='hs-definition'>group</span> <span class='hs-varid'>deps</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-56"></a> <span class='hs-varid'>nodes</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>deps</span>
|
||||||
|
<a name="line-57"></a> <span class='hs-comment'>-- TODO: slicker way</span>
|
||||||
|
<a name="line-58"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>buildOp</span> <span class='hs-varop'>$</span> <span class='hs-varid'>opDef</span> <span class='hs-str'>"NoOp"</span> <span class='hs-varop'>&</span> <span class='hs-varid'>opControlInputs</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>nodes</span>
|
||||||
|
<a name="line-59"></a>
|
||||||
|
<a name="line-60"></a>
|
||||||
|
<a name="line-61"></a><a name="identity"></a><span class='hs-comment'>-- | Returns a 'Tensor' with the same shape and contents as the input.</span>
|
||||||
|
<a name="line-62"></a><span class='hs-definition'>identity</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-63"></a><span class='hs-definition'>identity</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>namedIdentity</span> <span class='hs-varid'>implicitName</span>
|
||||||
|
<a name="line-64"></a>
|
||||||
|
<a name="line-65"></a><a name="named"></a><span class='hs-comment'>-- | Returns a 'Tensor' with a given name and the same shape and contents as</span>
|
||||||
|
<a name="line-66"></a><span class='hs-comment'>-- the input.</span>
|
||||||
|
<a name="line-67"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-68"></a><span class='hs-comment'>-- TODO(judahjacobson): This breaks when used with uninitialize @Tensor Ref@s,</span>
|
||||||
|
<a name="line-69"></a><span class='hs-comment'>-- since @RefIdentity@ doesn't have SetAllowsUninitializedInput(). Look into</span>
|
||||||
|
<a name="line-70"></a><span class='hs-comment'>-- whether we can change that op.</span>
|
||||||
|
<a name="line-71"></a><span class='hs-definition'>named</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-72"></a><span class='hs-definition'>named</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>namedIdentity</span> <span class='hs-varop'>.</span> <span class='hs-varid'>explicitName</span>
|
||||||
|
<a name="line-73"></a>
|
||||||
|
<a name="line-74"></a><a name="namedIdentity"></a><span class='hs-comment'>-- | An internal version of "identity" that allows setting the name</span>
|
||||||
|
<a name="line-75"></a><span class='hs-comment'>-- of the output Tensor.</span>
|
||||||
|
<a name="line-76"></a><span class='hs-definition'>namedIdentity</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varid'>v</span> <span class='hs-varop'>.</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-77"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>PendingNodeName</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-78"></a><span class='hs-definition'>namedIdentity</span> <span class='hs-varid'>n</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>t</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>tensorKind</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-79"></a> <span class='hs-conid'>ValueKind</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>buildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>opDefWithName</span> <span class='hs-varid'>n</span> <span class='hs-str'>"Identity"</span> <span class='hs-varop'>&</span> <span class='hs-varid'>setTypeAttr</span><span class='hs-layout'>)</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-conid'>RefKind</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>buildOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>opDefWithName</span> <span class='hs-varid'>n</span> <span class='hs-str'>"RefIdentity"</span> <span class='hs-varop'>&</span> <span class='hs-varid'>setTypeAttr</span><span class='hs-layout'>)</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-varid'>setTypeAttr</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>opAttr</span> <span class='hs-str'>"T"</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>tensorType</span> <span class='hs-layout'>(</span><span class='hs-varid'>undefined</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-83"></a>
|
||||||
|
<a name="line-84"></a>
|
||||||
|
<a name="line-85"></a><a name="noOp"></a><span class='hs-comment'>-- | Does nothing. Only useful as a placeholder for control edges.</span>
|
||||||
|
<a name="line-86"></a><span class='hs-definition'>noOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ControlNode</span>
|
||||||
|
<a name="line-87"></a><span class='hs-definition'>noOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildOp</span> <span class='hs-varop'>$</span> <span class='hs-varid'>opDef</span> <span class='hs-str'>"NoOp"</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
254
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Internal-FFI.html
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Internal/FFI.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE DeriveDataTypeable #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-17"></a>
|
||||||
|
<a name="line-18"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span>
|
||||||
|
<a name="line-19"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>TensorFlowException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-20"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withSession</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>extendGraph</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>run</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorData</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>setSessionConfig</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>setSessionTarget</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>getAllOpList</span>
|
||||||
|
<a name="line-28"></a> <span class='hs-comment'>-- * Internal helper.</span>
|
||||||
|
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>useProtoAsVoidPtrLen</span>
|
||||||
|
<a name="line-30"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-32"></a>
|
||||||
|
<a name="line-33"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Concurrent</span><span class='hs-varop'>.</span><span class='hs-conid'>Async</span> <span class='hs-layout'>(</span><span class='hs-conid'>Async</span><span class='hs-layout'>,</span> <span class='hs-varid'>async</span><span class='hs-layout'>,</span> <span class='hs-varid'>cancel</span><span class='hs-layout'>,</span> <span class='hs-varid'>waitCatch</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Concurrent</span><span class='hs-varop'>.</span><span class='hs-conid'>MVar</span> <span class='hs-layout'>(</span><span class='hs-conid'>MVar</span><span class='hs-layout'>,</span> <span class='hs-varid'>modifyMVarMasked_</span><span class='hs-layout'>,</span> <span class='hs-varid'>newMVar</span><span class='hs-layout'>,</span> <span class='hs-varid'>takeMVar</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-35"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-layout'>,</span> <span class='hs-varid'>throwIO</span><span class='hs-layout'>,</span> <span class='hs-varid'>bracket</span><span class='hs-layout'>,</span> <span class='hs-varid'>finally</span><span class='hs-layout'>,</span> <span class='hs-varid'>mask_</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>when</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Int</span> <span class='hs-layout'>(</span><span class='hs-conid'>Int64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-38"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Typeable</span> <span class='hs-layout'>(</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-39"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Word</span> <span class='hs-layout'>(</span><span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-40"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span><span class='hs-layout'>,</span> <span class='hs-conid'>FunPtr</span><span class='hs-layout'>,</span> <span class='hs-varid'>nullPtr</span><span class='hs-layout'>,</span> <span class='hs-varid'>castPtr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-41"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>CString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-42"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>ForeignPtr</span> <span class='hs-layout'>(</span><span class='hs-varid'>newForeignPtr</span><span class='hs-layout'>,</span> <span class='hs-varid'>withForeignPtr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Alloc</span> <span class='hs-layout'>(</span><span class='hs-varid'>free</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-44"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Marshal</span><span class='hs-varop'>.</span><span class='hs-conid'>Array</span> <span class='hs-layout'>(</span><span class='hs-varid'>withArrayLen</span><span class='hs-layout'>,</span> <span class='hs-varid'>peekArray</span><span class='hs-layout'>,</span> <span class='hs-varid'>mallocArray</span><span class='hs-layout'>,</span> <span class='hs-varid'>copyArray</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafePerformIO</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>B</span>
|
||||||
|
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>T</span>
|
||||||
|
<a name="line-48"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Encoding</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>T</span>
|
||||||
|
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Encoding</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>T</span>
|
||||||
|
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>S</span>
|
||||||
|
<a name="line-51"></a>
|
||||||
|
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ProtoLens</span> <span class='hs-layout'>(</span><span class='hs-conid'>Message</span><span class='hs-layout'>,</span> <span class='hs-varid'>encodeMessage</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Graph</span> <span class='hs-layout'>(</span><span class='hs-conid'>GraphDef</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-54"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>DataType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Protobuf</span><span class='hs-varop'>.</span><span class='hs-conid'>Config</span> <span class='hs-layout'>(</span><span class='hs-conid'>ConfigProto</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-56"></a>
|
||||||
|
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Raw</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Raw</span>
|
||||||
|
<a name="line-58"></a>
|
||||||
|
<a name="line-59"></a><a name="TensorFlowException"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TensorFlowException</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorFlowException</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Code</span> <span class='hs-conid'>T</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-60"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span> <span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Typeable</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-61"></a>
|
||||||
|
<a name="line-62"></a><a name="instance%20Exception%20TensorFlowException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Exception</span> <span class='hs-conid'>TensorFlowException</span>
|
||||||
|
<a name="line-63"></a>
|
||||||
|
<a name="line-64"></a><a name="TensorData"></a><span class='hs-comment'>-- | All of the data needed to represent a tensor.</span>
|
||||||
|
<a name="line-65"></a><a name="TensorData"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorData</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>tensorDataDimensions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-67"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tensorDataType</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tensorDataBytes</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-69"></a> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-70"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span> <span class='hs-conid'>Eq</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-71"></a>
|
||||||
|
<a name="line-72"></a><a name="withSession"></a><span class='hs-comment'>-- | Runs the given action after creating a session with options</span>
|
||||||
|
<a name="line-73"></a><span class='hs-comment'>-- populated by the given optionSetter.</span>
|
||||||
|
<a name="line-74"></a><span class='hs-definition'>withSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-75"></a> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-76"></a> <span class='hs-comment'>-- ^ The action can spawn concurrent tasks which will</span>
|
||||||
|
<a name="line-77"></a> <span class='hs-comment'>-- be canceled before withSession returns.</span>
|
||||||
|
<a name="line-78"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-79"></a><span class='hs-definition'>withSession</span> <span class='hs-varid'>optionSetter</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-varid'>drain</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>newMVar</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>cleanup</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-comment'>-- Closes the session to nudge the pending run calls to fail and exit.</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-varid'>finally</span> <span class='hs-layout'>(</span><span class='hs-varid'>checkStatus</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>closeSession</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-84"></a> <span class='hs-varid'>runners</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>takeMVar</span> <span class='hs-varid'>drain</span>
|
||||||
|
<a name="line-85"></a> <span class='hs-comment'>-- Collects all runners before deleting the session.</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-varid'>mapM_</span> <span class='hs-varid'>shutDownRunner</span> <span class='hs-varid'>runners</span>
|
||||||
|
<a name="line-87"></a> <span class='hs-varid'>checkStatus</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteSession</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-88"></a> <span class='hs-varid'>bracket</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>newSessionOptions</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteSessionOptions</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>options</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-varid'>optionSetter</span> <span class='hs-varid'>options</span>
|
||||||
|
<a name="line-90"></a> <span class='hs-varid'>bracket</span>
|
||||||
|
<a name="line-91"></a> <span class='hs-layout'>(</span><span class='hs-varid'>checkStatus</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>newSession</span> <span class='hs-varid'>options</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-92"></a> <span class='hs-varid'>cleanup</span>
|
||||||
|
<a name="line-93"></a> <span class='hs-layout'>(</span><span class='hs-varid'>action</span> <span class='hs-layout'>(</span><span class='hs-varid'>asyncCollector</span> <span class='hs-varid'>drain</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-94"></a>
|
||||||
|
<a name="line-95"></a><a name="asyncCollector"></a><span class='hs-definition'>asyncCollector</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MVar</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Async</span> <span class='hs-conid'>()</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-96"></a><span class='hs-definition'>asyncCollector</span> <span class='hs-varid'>drain</span> <span class='hs-varid'>runner</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>modifyMVarMasked_</span> <span class='hs-varid'>drain</span> <span class='hs-varid'>launchAndRecord</span>
|
||||||
|
<a name="line-97"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-98"></a> <span class='hs-varid'>launchAndRecord</span> <span class='hs-varid'>restRunners</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conop'>:</span> <span class='hs-varid'>restRunners</span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>async</span> <span class='hs-varid'>runner</span>
|
||||||
|
<a name="line-99"></a>
|
||||||
|
<a name="line-100"></a><a name="shutDownRunner"></a><span class='hs-definition'>shutDownRunner</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Async</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-101"></a><span class='hs-definition'>shutDownRunner</span> <span class='hs-varid'>r</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-102"></a> <span class='hs-varid'>cancel</span> <span class='hs-varid'>r</span>
|
||||||
|
<a name="line-103"></a> <span class='hs-comment'>-- TODO(gnezdo): manage exceptions better than print.</span>
|
||||||
|
<a name="line-104"></a> <span class='hs-varid'>either</span> <span class='hs-varid'>print</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>=<<</span> <span class='hs-varid'>waitCatch</span> <span class='hs-varid'>r</span>
|
||||||
|
<a name="line-105"></a>
|
||||||
|
<a name="line-106"></a><a name="extendGraph"></a><span class='hs-definition'>extendGraph</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>GraphDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-107"></a><span class='hs-definition'>extendGraph</span> <span class='hs-varid'>session</span> <span class='hs-varid'>pb</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-108"></a> <span class='hs-varid'>useProtoAsVoidPtrLen</span> <span class='hs-varid'>pb</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-varid'>len</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-109"></a> <span class='hs-varid'>checkStatus</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>extendGraph</span> <span class='hs-varid'>session</span> <span class='hs-varid'>ptr</span> <span class='hs-varid'>len</span>
|
||||||
|
<a name="line-110"></a>
|
||||||
|
<a name="line-111"></a>
|
||||||
|
<a name="line-112"></a><a name="run"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span>
|
||||||
|
<a name="line-113"></a> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-layout'>,</span> <span class='hs-conid'>TensorData</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Feeds.</span>
|
||||||
|
<a name="line-114"></a> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Fetches.</span>
|
||||||
|
<a name="line-115"></a> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-keyglyph'>]</span> <span class='hs-comment'>-- ^ Targets.</span>
|
||||||
|
<a name="line-116"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TensorData</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-117"></a><span class='hs-definition'>run</span> <span class='hs-varid'>session</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>fetches</span> <span class='hs-varid'>targets</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-118"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>nullTensor</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>nullPtr</span>
|
||||||
|
<a name="line-119"></a> <span class='hs-comment'>-- Use mask to avoid leaking input tensors before they are passed to 'run'</span>
|
||||||
|
<a name="line-120"></a> <span class='hs-comment'>-- and output tensors before they are passed to 'createTensorData'.</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-varid'>mask_</span> <span class='hs-varop'>$</span>
|
||||||
|
<a name="line-122"></a> <span class='hs-comment'>-- Feeds</span>
|
||||||
|
<a name="line-123"></a> <span class='hs-varid'>withStringArrayLen</span> <span class='hs-layout'>(</span><span class='hs-varid'>fst</span> <span class='hs-varop'><$></span> <span class='hs-varid'>feeds</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>feedsLen</span> <span class='hs-varid'>feedNames</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-124"></a> <span class='hs-varid'>mapM</span> <span class='hs-layout'>(</span><span class='hs-varid'>createRawTensor</span> <span class='hs-varop'>.</span> <span class='hs-varid'>snd</span><span class='hs-layout'>)</span> <span class='hs-varid'>feeds</span> <span class='hs-varop'>>>=</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>feedTensors</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-125"></a> <span class='hs-varid'>withArrayLen</span> <span class='hs-varid'>feedTensors</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-varid'>cFeedTensors</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-126"></a> <span class='hs-comment'>-- Fetches.</span>
|
||||||
|
<a name="line-127"></a> <span class='hs-varid'>withStringArrayLen</span> <span class='hs-varid'>fetches</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>fetchesLen</span> <span class='hs-varid'>fetchNames</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-128"></a> <span class='hs-comment'>-- tensorOuts is an array of null Tensor pointers that will be filled</span>
|
||||||
|
<a name="line-129"></a> <span class='hs-comment'>-- by the call to Raw.run.</span>
|
||||||
|
<a name="line-130"></a> <span class='hs-varid'>withArrayLen</span> <span class='hs-layout'>(</span><span class='hs-varid'>replicate</span> <span class='hs-varid'>fetchesLen</span> <span class='hs-varid'>nullTensor</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-varid'>tensorOuts</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-131"></a> <span class='hs-comment'>-- Targets.</span>
|
||||||
|
<a name="line-132"></a> <span class='hs-varid'>withStringArrayLen</span> <span class='hs-varid'>targets</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>targetsLen</span> <span class='hs-varid'>ctargets</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-133"></a> <span class='hs-varid'>checkStatus</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>run</span>
|
||||||
|
<a name="line-134"></a> <span class='hs-varid'>session</span>
|
||||||
|
<a name="line-135"></a> <span class='hs-varid'>nullPtr</span>
|
||||||
|
<a name="line-136"></a> <span class='hs-varid'>feedNames</span> <span class='hs-varid'>cFeedTensors</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>feedsLen</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-137"></a> <span class='hs-varid'>fetchNames</span> <span class='hs-varid'>tensorOuts</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>fetchesLen</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-138"></a> <span class='hs-varid'>ctargets</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>targetsLen</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-varid'>nullPtr</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-varid'>outTensors</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>peekArray</span> <span class='hs-varid'>fetchesLen</span> <span class='hs-varid'>tensorOuts</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-varid'>mapM</span> <span class='hs-varid'>createTensorData</span> <span class='hs-varid'>outTensors</span>
|
||||||
|
<a name="line-142"></a>
|
||||||
|
<a name="line-143"></a>
|
||||||
|
<a name="line-144"></a><span class='hs-comment'>-- Internal.</span>
|
||||||
|
<a name="line-145"></a>
|
||||||
|
<a name="line-146"></a>
|
||||||
|
<a name="line-147"></a><a name="withStringList"></a><span class='hs-comment'>-- | Use a list of ByteString as a list of CString.</span>
|
||||||
|
<a name="line-148"></a><span class='hs-definition'>withStringList</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>CString</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-149"></a><span class='hs-definition'>withStringList</span> <span class='hs-varid'>strings</span> <span class='hs-varid'>fn</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>go</span> <span class='hs-varid'>strings</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-150"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-varid'>go</span> <span class='hs-conid'>[]</span> <span class='hs-varid'>cs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fn</span> <span class='hs-layout'>(</span><span class='hs-varid'>reverse</span> <span class='hs-varid'>cs</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-152"></a> <span class='hs-comment'>-- TODO(fmayle): Is it worth using unsafeAsCString here?</span>
|
||||||
|
<a name="line-153"></a> <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-conop'>:</span><span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-varid'>cs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>useAsCString</span> <span class='hs-varid'>x</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>c</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>go</span> <span class='hs-varid'>xs</span> <span class='hs-layout'>(</span><span class='hs-varid'>c</span><span class='hs-conop'>:</span><span class='hs-varid'>cs</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-154"></a>
|
||||||
|
<a name="line-155"></a>
|
||||||
|
<a name="line-156"></a><a name="withStringArrayLen"></a><span class='hs-comment'>-- | Use a list of ByteString as an array of CString.</span>
|
||||||
|
<a name="line-157"></a><span class='hs-definition'>withStringArrayLen</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-158"></a><span class='hs-definition'>withStringArrayLen</span> <span class='hs-varid'>xs</span> <span class='hs-varid'>fn</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>withStringList</span> <span class='hs-varid'>xs</span> <span class='hs-layout'>(</span><span class='hs-varop'>`withArrayLen`</span> <span class='hs-varid'>fn</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-159"></a>
|
||||||
|
<a name="line-160"></a>
|
||||||
|
<a name="line-161"></a><a name="createRawTensor"></a><span class='hs-comment'>-- | Create a Raw.Tensor from a TensorData.</span>
|
||||||
|
<a name="line-162"></a><span class='hs-definition'>createRawTensor</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorData</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-163"></a><span class='hs-definition'>createRawTensor</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorData</span> <span class='hs-varid'>dims</span> <span class='hs-varid'>dt</span> <span class='hs-varid'>byteVec</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-164"></a> <span class='hs-varid'>withArrayLen</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>dims</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>cdimsLen</span> <span class='hs-varid'>cdims</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-165"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>len</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>length</span> <span class='hs-varid'>byteVec</span>
|
||||||
|
<a name="line-166"></a> <span class='hs-varid'>dest</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>mallocArray</span> <span class='hs-varid'>len</span>
|
||||||
|
<a name="line-167"></a> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeWith</span> <span class='hs-varid'>byteVec</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>copyArray</span> <span class='hs-varid'>dest</span> <span class='hs-varid'>x</span> <span class='hs-varid'>len</span>
|
||||||
|
<a name="line-168"></a> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>newTensor</span> <span class='hs-layout'>(</span><span class='hs-varid'>toEnum</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>dt</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-169"></a> <span class='hs-varid'>cdims</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>cdimsLen</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-170"></a> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>dest</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-171"></a> <span class='hs-varid'>tensorDeallocFunPtr</span> <span class='hs-varid'>nullPtr</span>
|
||||||
|
<a name="line-172"></a>
|
||||||
|
<a name="line-173"></a><a name="tensorDeallocFunPtr"></a><span class='hs-comment'>{-# NOINLINE tensorDeallocFunPtr #-}</span>
|
||||||
|
<a name="line-174"></a><span class='hs-definition'>tensorDeallocFunPtr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FunPtr</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorDeallocFn</span>
|
||||||
|
<a name="line-175"></a><span class='hs-definition'>tensorDeallocFunPtr</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafePerformIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>wrapTensorDealloc</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>free</span> <span class='hs-varid'>x</span>
|
||||||
|
<a name="line-176"></a>
|
||||||
|
<a name="line-177"></a><a name="createTensorData"></a><span class='hs-comment'>-- | Create a TensorData from a Raw.Tensor.</span>
|
||||||
|
<a name="line-178"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-179"></a><span class='hs-comment'>-- Takes ownership of the Raw.Tensor.</span>
|
||||||
|
<a name="line-180"></a><span class='hs-definition'>createTensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>TensorData</span>
|
||||||
|
<a name="line-181"></a><span class='hs-definition'>createTensorData</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-182"></a> <span class='hs-comment'>-- Read dimensions.</span>
|
||||||
|
<a name="line-183"></a> <span class='hs-varid'>numDims</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>numDims</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-184"></a> <span class='hs-varid'>dims</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>mapM</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>dim</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>[</span><span class='hs-num'>0</span><span class='hs-keyglyph'>..</span><span class='hs-varid'>numDims</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-185"></a> <span class='hs-comment'>-- Read type.</span>
|
||||||
|
<a name="line-186"></a> <span class='hs-varid'>dtype</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>toEnum</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorType</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-187"></a> <span class='hs-comment'>-- Read data.</span>
|
||||||
|
<a name="line-188"></a> <span class='hs-varid'>len</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorByteSize</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-189"></a> <span class='hs-varid'>bytes</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>castPtr</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorData</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-190"></a> <span class='hs-comment'>-- TODO(fmayle): Don't copy the data.</span>
|
||||||
|
<a name="line-191"></a> <span class='hs-varid'>v</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'><$></span> <span class='hs-varid'>peekArray</span> <span class='hs-varid'>len</span> <span class='hs-varid'>bytes</span>
|
||||||
|
<a name="line-192"></a> <span class='hs-comment'>-- Free tensor.</span>
|
||||||
|
<a name="line-193"></a> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteTensor</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-194"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>TensorData</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>dims</span><span class='hs-layout'>)</span> <span class='hs-varid'>dtype</span> <span class='hs-varid'>v</span>
|
||||||
|
<a name="line-195"></a>
|
||||||
|
<a name="line-196"></a><a name="checkStatus"></a><span class='hs-comment'>-- | Runs the given action which does FFI calls updating a provided</span>
|
||||||
|
<a name="line-197"></a><span class='hs-comment'>-- status object. If the status is not OK it is thrown as</span>
|
||||||
|
<a name="line-198"></a><span class='hs-comment'>-- TensorFlowException.</span>
|
||||||
|
<a name="line-199"></a><span class='hs-definition'>checkStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-200"></a><span class='hs-definition'>checkStatus</span> <span class='hs-varid'>fn</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-201"></a> <span class='hs-varid'>bracket</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>newStatus</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteStatus</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>status</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-202"></a> <span class='hs-varid'>result</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>fn</span> <span class='hs-varid'>status</span>
|
||||||
|
<a name="line-203"></a> <span class='hs-varid'>code</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>getCode</span> <span class='hs-varid'>status</span>
|
||||||
|
<a name="line-204"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>code</span> <span class='hs-varop'>/=</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>TF_OK</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-205"></a> <span class='hs-varid'>msg</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>T</span><span class='hs-varop'>.</span><span class='hs-varid'>decodeUtf8With</span> <span class='hs-conid'>T</span><span class='hs-varop'>.</span><span class='hs-varid'>lenientDecode</span> <span class='hs-varop'><$></span>
|
||||||
|
<a name="line-206"></a> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>message</span> <span class='hs-varid'>status</span> <span class='hs-varop'>>>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>packCString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-207"></a> <span class='hs-varid'>throwIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>TensorFlowException</span> <span class='hs-varid'>code</span> <span class='hs-varid'>msg</span>
|
||||||
|
<a name="line-208"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
|
||||||
|
<a name="line-209"></a>
|
||||||
|
<a name="line-210"></a><a name="setSessionConfig"></a><span class='hs-definition'>setSessionConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ConfigProto</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-211"></a><span class='hs-definition'>setSessionConfig</span> <span class='hs-varid'>pb</span> <span class='hs-varid'>opt</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-212"></a> <span class='hs-varid'>useProtoAsVoidPtrLen</span> <span class='hs-varid'>pb</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-varid'>len</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-213"></a> <span class='hs-varid'>checkStatus</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>setConfig</span> <span class='hs-varid'>opt</span> <span class='hs-varid'>ptr</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-214"></a>
|
||||||
|
<a name="line-215"></a><a name="setSessionTarget"></a><span class='hs-definition'>setSessionTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-216"></a><span class='hs-definition'>setSessionTarget</span> <span class='hs-varid'>target</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>useAsCString</span> <span class='hs-varid'>target</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>setTarget</span>
|
||||||
|
<a name="line-217"></a>
|
||||||
|
<a name="line-218"></a><a name="useProtoAsVoidPtrLen"></a><span class='hs-comment'>-- | Serializes the given msg and provides it as (ptr,len) argument</span>
|
||||||
|
<a name="line-219"></a><span class='hs-comment'>-- to the given action.</span>
|
||||||
|
<a name="line-220"></a><span class='hs-definition'>useProtoAsVoidPtrLen</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Message</span> <span class='hs-varid'>msg</span><span class='hs-layout'>,</span> <span class='hs-conid'>Num</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span>
|
||||||
|
<a name="line-221"></a> <span class='hs-varid'>msg</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-222"></a><span class='hs-definition'>useProtoAsVoidPtrLen</span> <span class='hs-varid'>msg</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>useAsCStringLen</span> <span class='hs-layout'>(</span><span class='hs-varid'>encodeMessage</span> <span class='hs-varid'>msg</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
|
||||||
|
<a name="line-223"></a> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>bytes</span><span class='hs-layout'>,</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>bytes</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-224"></a>
|
||||||
|
<a name="line-225"></a><a name="getAllOpList"></a><span class='hs-comment'>-- | Returns the serialized OpList of all OpDefs defined in this</span>
|
||||||
|
<a name="line-226"></a><span class='hs-comment'>-- address space.</span>
|
||||||
|
<a name="line-227"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-228"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-229"></a> <span class='hs-varid'>foreignPtr</span> <span class='hs-keyglyph'><-</span>
|
||||||
|
<a name="line-230"></a> <span class='hs-varid'>mask_</span> <span class='hs-layout'>(</span><span class='hs-varid'>newForeignPtr</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteBuffer</span> <span class='hs-varop'>=<<</span> <span class='hs-varid'>checkCall</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-231"></a> <span class='hs-comment'>-- Makes a copy because it is more reliable than eviscerating</span>
|
||||||
|
<a name="line-232"></a> <span class='hs-comment'>-- Buffer to steal its memory (including custom deallocator).</span>
|
||||||
|
<a name="line-233"></a> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>foreignPtr</span> <span class='hs-varop'>$</span>
|
||||||
|
<a name="line-234"></a> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>packCStringLen</span> <span class='hs-varop'>=<<</span> <span class='hs-conid'>(,)</span>
|
||||||
|
<a name="line-235"></a> <span class='hs-varop'><$></span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>getBufferData</span> <span class='hs-varid'>ptr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-236"></a> <span class='hs-varop'><*></span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>getBufferLength</span> <span class='hs-varid'>ptr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-237"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-238"></a> <span class='hs-varid'>checkCall</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-239"></a> <span class='hs-varid'>p</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>getAllOpList</span>
|
||||||
|
<a name="line-240"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>p</span> <span class='hs-varop'>==</span> <span class='hs-varid'>nullPtr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>throwIO</span> <span class='hs-varid'>exception</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-241"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>p</span>
|
||||||
|
<a name="line-242"></a> <span class='hs-varid'>exception</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorFlowException</span>
|
||||||
|
<a name="line-243"></a> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>TF_UNKNOWN</span> <span class='hs-str'>"GetAllOpList failure, check logs"</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
514
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Internal-Raw.html
Normal file
|
@ -0,0 +1,514 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>.stack-work/dist/x86_64-linux-dkd1ce2ff9c9560b648268df668d177711/Cabal-1.22.5.0/build/TensorFlow/Internal/Raw.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- GENERATED by C->Haskell Compiler, version 0.28.1 Switcheroo, 1 April 2016 (Haskell)</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>-- Edit the ORIGNAL .chs file instead!</span>
|
||||||
|
<a name="line-3"></a>
|
||||||
|
<a name="line-4"></a>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>{-# LINE 1 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-14"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-19"></a>
|
||||||
|
<a name="line-20"></a><span class='hs-comment'>{-# LANGUAGE ForeignFunctionInterface #-}</span>
|
||||||
|
<a name="line-21"></a>
|
||||||
|
<a name="line-22"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Raw</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>C2HSImp</span>
|
||||||
|
<a name="line-24"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>C2HSImp</span>
|
||||||
|
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>C2HSImp</span>
|
||||||
|
<a name="line-26"></a>
|
||||||
|
<a name="line-27"></a>
|
||||||
|
<a name="line-28"></a>
|
||||||
|
<a name="line-29"></a>
|
||||||
|
<a name="line-30"></a>
|
||||||
|
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span>
|
||||||
|
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>C</span>
|
||||||
|
<a name="line-33"></a>
|
||||||
|
<a name="line-34"></a><a name="DataType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>DataType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FLOAT</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_DOUBLE</span>
|
||||||
|
<a name="line-36"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INT32</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UINT8</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INT16</span>
|
||||||
|
<a name="line-39"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INT8</span>
|
||||||
|
<a name="line-40"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_STRING</span>
|
||||||
|
<a name="line-41"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_COMPLEX64</span>
|
||||||
|
<a name="line-42"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_COMPLEX</span>
|
||||||
|
<a name="line-43"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INT64</span>
|
||||||
|
<a name="line-44"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_BOOL</span>
|
||||||
|
<a name="line-45"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_QINT8</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_QUINT8</span>
|
||||||
|
<a name="line-47"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_QINT32</span>
|
||||||
|
<a name="line-48"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_BFLOAT16</span>
|
||||||
|
<a name="line-49"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_QINT16</span>
|
||||||
|
<a name="line-50"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_QUINT16</span>
|
||||||
|
<a name="line-51"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UINT16</span>
|
||||||
|
<a name="line-52"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_COMPLEX128</span>
|
||||||
|
<a name="line-53"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_HALF</span>
|
||||||
|
<a name="line-54"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_RESOURCE</span>
|
||||||
|
<a name="line-55"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Eq</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-56"></a><a name="instance%20Enum%20DataType"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Enum</span> <span class='hs-conid'>DataType</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-57"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_FLOAT</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DOUBLE</span>
|
||||||
|
<a name="line-58"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_DOUBLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT32</span>
|
||||||
|
<a name="line-59"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT8</span>
|
||||||
|
<a name="line-60"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT16</span>
|
||||||
|
<a name="line-61"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT8</span>
|
||||||
|
<a name="line-62"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_STRING</span>
|
||||||
|
<a name="line-63"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_STRING</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX64</span>
|
||||||
|
<a name="line-64"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_COMPLEX64</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT64</span>
|
||||||
|
<a name="line-65"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_COMPLEX</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT64</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INT64</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BOOL</span>
|
||||||
|
<a name="line-67"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_BOOL</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT8</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_QINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT8</span>
|
||||||
|
<a name="line-69"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_QUINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT32</span>
|
||||||
|
<a name="line-70"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_QINT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BFLOAT16</span>
|
||||||
|
<a name="line-71"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_BFLOAT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT16</span>
|
||||||
|
<a name="line-72"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_QINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT16</span>
|
||||||
|
<a name="line-73"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_QUINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT16</span>
|
||||||
|
<a name="line-74"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX128</span>
|
||||||
|
<a name="line-75"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_COMPLEX128</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_HALF</span>
|
||||||
|
<a name="line-76"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_HALF</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_RESOURCE</span>
|
||||||
|
<a name="line-77"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"DataType.succ: TF_RESOURCE has no successor"</span>
|
||||||
|
<a name="line-78"></a>
|
||||||
|
<a name="line-79"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_DOUBLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FLOAT</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DOUBLE</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT32</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT8</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT16</span>
|
||||||
|
<a name="line-84"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_STRING</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT8</span>
|
||||||
|
<a name="line-85"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_COMPLEX64</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_STRING</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_COMPLEX</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_STRING</span>
|
||||||
|
<a name="line-87"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INT64</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX64</span>
|
||||||
|
<a name="line-88"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_BOOL</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT64</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_QINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BOOL</span>
|
||||||
|
<a name="line-90"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_QUINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT8</span>
|
||||||
|
<a name="line-91"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_QINT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT8</span>
|
||||||
|
<a name="line-92"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_BFLOAT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT32</span>
|
||||||
|
<a name="line-93"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_QINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BFLOAT16</span>
|
||||||
|
<a name="line-94"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_QUINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT16</span>
|
||||||
|
<a name="line-95"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT16</span>
|
||||||
|
<a name="line-96"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_COMPLEX128</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT16</span>
|
||||||
|
<a name="line-97"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_HALF</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX128</span>
|
||||||
|
<a name="line-98"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_HALF</span>
|
||||||
|
<a name="line-99"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_FLOAT</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"DataType.pred: TF_FLOAT has no predecessor"</span>
|
||||||
|
<a name="line-100"></a>
|
||||||
|
<a name="line-101"></a> <span class='hs-varid'>enumFromTo</span> <span class='hs-varid'>from</span> <span class='hs-varid'>to</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>go</span> <span class='hs-varid'>from</span>
|
||||||
|
<a name="line-102"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-103"></a> <span class='hs-varid'>end</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>to</span>
|
||||||
|
<a name="line-104"></a> <span class='hs-varid'>go</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>compare</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromEnum</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span> <span class='hs-varid'>end</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-105"></a> <span class='hs-conid'>LT</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>v</span> <span class='hs-conop'>:</span> <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-varid'>succ</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-106"></a> <span class='hs-conid'>EQ</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>v</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-107"></a> <span class='hs-conid'>GT</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-108"></a>
|
||||||
|
<a name="line-109"></a> <span class='hs-varid'>enumFrom</span> <span class='hs-varid'>from</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>enumFromTo</span> <span class='hs-varid'>from</span> <span class='hs-conid'>TF_RESOURCE</span>
|
||||||
|
<a name="line-110"></a>
|
||||||
|
<a name="line-111"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_FLOAT</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>1</span>
|
||||||
|
<a name="line-112"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_DOUBLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>2</span>
|
||||||
|
<a name="line-113"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>3</span>
|
||||||
|
<a name="line-114"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>4</span>
|
||||||
|
<a name="line-115"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>5</span>
|
||||||
|
<a name="line-116"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>6</span>
|
||||||
|
<a name="line-117"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_STRING</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>7</span>
|
||||||
|
<a name="line-118"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_COMPLEX64</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>8</span>
|
||||||
|
<a name="line-119"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_COMPLEX</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>8</span>
|
||||||
|
<a name="line-120"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INT64</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>9</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_BOOL</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>10</span>
|
||||||
|
<a name="line-122"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_QINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>11</span>
|
||||||
|
<a name="line-123"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_QUINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>12</span>
|
||||||
|
<a name="line-124"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_QINT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>13</span>
|
||||||
|
<a name="line-125"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_BFLOAT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>14</span>
|
||||||
|
<a name="line-126"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_QINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>15</span>
|
||||||
|
<a name="line-127"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_QUINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>16</span>
|
||||||
|
<a name="line-128"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>17</span>
|
||||||
|
<a name="line-129"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_COMPLEX128</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>18</span>
|
||||||
|
<a name="line-130"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_HALF</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>19</span>
|
||||||
|
<a name="line-131"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>20</span>
|
||||||
|
<a name="line-132"></a>
|
||||||
|
<a name="line-133"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>1</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FLOAT</span>
|
||||||
|
<a name="line-134"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>2</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DOUBLE</span>
|
||||||
|
<a name="line-135"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>3</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT32</span>
|
||||||
|
<a name="line-136"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>4</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT8</span>
|
||||||
|
<a name="line-137"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>5</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT16</span>
|
||||||
|
<a name="line-138"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>6</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT8</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>7</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_STRING</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX64</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>9</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INT64</span>
|
||||||
|
<a name="line-142"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>10</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BOOL</span>
|
||||||
|
<a name="line-143"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>11</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT8</span>
|
||||||
|
<a name="line-144"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>12</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT8</span>
|
||||||
|
<a name="line-145"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>13</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT32</span>
|
||||||
|
<a name="line-146"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>14</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_BFLOAT16</span>
|
||||||
|
<a name="line-147"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>15</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QINT16</span>
|
||||||
|
<a name="line-148"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_QUINT16</span>
|
||||||
|
<a name="line-149"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>17</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UINT16</span>
|
||||||
|
<a name="line-150"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>18</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_COMPLEX128</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>19</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_HALF</span>
|
||||||
|
<a name="line-152"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>20</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_RESOURCE</span>
|
||||||
|
<a name="line-153"></a> <span class='hs-varid'>toEnum</span> <span class='hs-varid'>unmatched</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-layout'>(</span><span class='hs-str'>"DataType.toEnum: Cannot match "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>unmatched</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-154"></a>
|
||||||
|
<a name="line-155"></a><span class='hs-comment'>{-# LINE 24 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-156"></a>
|
||||||
|
<a name="line-157"></a><a name="Code"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Code</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OK</span>
|
||||||
|
<a name="line-158"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_CANCELLED</span>
|
||||||
|
<a name="line-159"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UNKNOWN</span>
|
||||||
|
<a name="line-160"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span>
|
||||||
|
<a name="line-161"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span>
|
||||||
|
<a name="line-162"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_NOT_FOUND</span>
|
||||||
|
<a name="line-163"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span>
|
||||||
|
<a name="line-164"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span>
|
||||||
|
<a name="line-165"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span>
|
||||||
|
<a name="line-166"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span>
|
||||||
|
<a name="line-167"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_ABORTED</span>
|
||||||
|
<a name="line-168"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span>
|
||||||
|
<a name="line-169"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span>
|
||||||
|
<a name="line-170"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_INTERNAL</span>
|
||||||
|
<a name="line-171"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UNAVAILABLE</span>
|
||||||
|
<a name="line-172"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_DATA_LOSS</span>
|
||||||
|
<a name="line-173"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span>
|
||||||
|
<a name="line-174"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span><span class='hs-conid'>Eq</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-175"></a><a name="instance%20Enum%20Code"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Enum</span> <span class='hs-conid'>Code</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-176"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_OK</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_CANCELLED</span>
|
||||||
|
<a name="line-177"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_CANCELLED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNKNOWN</span>
|
||||||
|
<a name="line-178"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UNKNOWN</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span>
|
||||||
|
<a name="line-179"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span>
|
||||||
|
<a name="line-180"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_NOT_FOUND</span>
|
||||||
|
<a name="line-181"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_NOT_FOUND</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span>
|
||||||
|
<a name="line-182"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span>
|
||||||
|
<a name="line-183"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span>
|
||||||
|
<a name="line-184"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span>
|
||||||
|
<a name="line-185"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ABORTED</span>
|
||||||
|
<a name="line-186"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_ABORTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span>
|
||||||
|
<a name="line-187"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span>
|
||||||
|
<a name="line-188"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INTERNAL</span>
|
||||||
|
<a name="line-189"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_INTERNAL</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNAVAILABLE</span>
|
||||||
|
<a name="line-190"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UNAVAILABLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DATA_LOSS</span>
|
||||||
|
<a name="line-191"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_DATA_LOSS</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span>
|
||||||
|
<a name="line-192"></a> <span class='hs-varid'>succ</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"Code.succ: TF_UNAUTHENTICATED has no successor"</span>
|
||||||
|
<a name="line-193"></a>
|
||||||
|
<a name="line-194"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_CANCELLED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OK</span>
|
||||||
|
<a name="line-195"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UNKNOWN</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_CANCELLED</span>
|
||||||
|
<a name="line-196"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNKNOWN</span>
|
||||||
|
<a name="line-197"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span>
|
||||||
|
<a name="line-198"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_NOT_FOUND</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span>
|
||||||
|
<a name="line-199"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_NOT_FOUND</span>
|
||||||
|
<a name="line-200"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span>
|
||||||
|
<a name="line-201"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span>
|
||||||
|
<a name="line-202"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span>
|
||||||
|
<a name="line-203"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_ABORTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span>
|
||||||
|
<a name="line-204"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ABORTED</span>
|
||||||
|
<a name="line-205"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span>
|
||||||
|
<a name="line-206"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_INTERNAL</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span>
|
||||||
|
<a name="line-207"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UNAVAILABLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INTERNAL</span>
|
||||||
|
<a name="line-208"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_DATA_LOSS</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNAVAILABLE</span>
|
||||||
|
<a name="line-209"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DATA_LOSS</span>
|
||||||
|
<a name="line-210"></a> <span class='hs-varid'>pred</span> <span class='hs-conid'>TF_OK</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"Code.pred: TF_OK has no predecessor"</span>
|
||||||
|
<a name="line-211"></a>
|
||||||
|
<a name="line-212"></a> <span class='hs-varid'>enumFromTo</span> <span class='hs-varid'>from</span> <span class='hs-varid'>to</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>go</span> <span class='hs-varid'>from</span>
|
||||||
|
<a name="line-213"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-214"></a> <span class='hs-varid'>end</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>to</span>
|
||||||
|
<a name="line-215"></a> <span class='hs-varid'>go</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>compare</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromEnum</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span> <span class='hs-varid'>end</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-216"></a> <span class='hs-conid'>LT</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>v</span> <span class='hs-conop'>:</span> <span class='hs-varid'>go</span> <span class='hs-layout'>(</span><span class='hs-varid'>succ</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-217"></a> <span class='hs-conid'>EQ</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>v</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-218"></a> <span class='hs-conid'>GT</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-219"></a>
|
||||||
|
<a name="line-220"></a> <span class='hs-varid'>enumFrom</span> <span class='hs-varid'>from</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>enumFromTo</span> <span class='hs-varid'>from</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span>
|
||||||
|
<a name="line-221"></a>
|
||||||
|
<a name="line-222"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_OK</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>0</span>
|
||||||
|
<a name="line-223"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_CANCELLED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>1</span>
|
||||||
|
<a name="line-224"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UNKNOWN</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>2</span>
|
||||||
|
<a name="line-225"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>3</span>
|
||||||
|
<a name="line-226"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>4</span>
|
||||||
|
<a name="line-227"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_NOT_FOUND</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>5</span>
|
||||||
|
<a name="line-228"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>6</span>
|
||||||
|
<a name="line-229"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>7</span>
|
||||||
|
<a name="line-230"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>8</span>
|
||||||
|
<a name="line-231"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>9</span>
|
||||||
|
<a name="line-232"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_ABORTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>10</span>
|
||||||
|
<a name="line-233"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>11</span>
|
||||||
|
<a name="line-234"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>12</span>
|
||||||
|
<a name="line-235"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_INTERNAL</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>13</span>
|
||||||
|
<a name="line-236"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UNAVAILABLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>14</span>
|
||||||
|
<a name="line-237"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_DATA_LOSS</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>15</span>
|
||||||
|
<a name="line-238"></a> <span class='hs-varid'>fromEnum</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>16</span>
|
||||||
|
<a name="line-239"></a>
|
||||||
|
<a name="line-240"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>0</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OK</span>
|
||||||
|
<a name="line-241"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>1</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_CANCELLED</span>
|
||||||
|
<a name="line-242"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>2</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNKNOWN</span>
|
||||||
|
<a name="line-243"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>3</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INVALID_ARGUMENT</span>
|
||||||
|
<a name="line-244"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>4</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DEADLINE_EXCEEDED</span>
|
||||||
|
<a name="line-245"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>5</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_NOT_FOUND</span>
|
||||||
|
<a name="line-246"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>6</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ALREADY_EXISTS</span>
|
||||||
|
<a name="line-247"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>7</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_PERMISSION_DENIED</span>
|
||||||
|
<a name="line-248"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>8</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_RESOURCE_EXHAUSTED</span>
|
||||||
|
<a name="line-249"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>9</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_FAILED_PRECONDITION</span>
|
||||||
|
<a name="line-250"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>10</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_ABORTED</span>
|
||||||
|
<a name="line-251"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>11</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_OUT_OF_RANGE</span>
|
||||||
|
<a name="line-252"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>12</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNIMPLEMENTED</span>
|
||||||
|
<a name="line-253"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>13</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_INTERNAL</span>
|
||||||
|
<a name="line-254"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>14</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNAVAILABLE</span>
|
||||||
|
<a name="line-255"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>15</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_DATA_LOSS</span>
|
||||||
|
<a name="line-256"></a> <span class='hs-varid'>toEnum</span> <span class='hs-num'>16</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TF_UNAUTHENTICATED</span>
|
||||||
|
<a name="line-257"></a> <span class='hs-varid'>toEnum</span> <span class='hs-varid'>unmatched</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-layout'>(</span><span class='hs-str'>"Code.toEnum: Cannot match "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>unmatched</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-258"></a>
|
||||||
|
<a name="line-259"></a><span class='hs-comment'>{-# LINE 25 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-260"></a>
|
||||||
|
<a name="line-261"></a>
|
||||||
|
<a name="line-262"></a>
|
||||||
|
<a name="line-263"></a><a name="Status"></a><span class='hs-comment'>-- Status.</span>
|
||||||
|
<a name="line-264"></a><a name="Status"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Status</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-265"></a><span class='hs-comment'>{-# LINE 29 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-266"></a>
|
||||||
|
<a name="line-267"></a>
|
||||||
|
<a name="line-268"></a><a name="newStatus"></a><span class='hs-definition'>newStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Status</span>
|
||||||
|
<a name="line-269"></a><span class='hs-definition'>newStatus</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewStatus</span>
|
||||||
|
<a name="line-270"></a><span class='hs-comment'>{-# LINE 32 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-271"></a>
|
||||||
|
<a name="line-272"></a>
|
||||||
|
<a name="line-273"></a><a name="deleteStatus"></a><span class='hs-definition'>deleteStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-274"></a><span class='hs-definition'>deleteStatus</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteStatus</span>
|
||||||
|
<a name="line-275"></a><span class='hs-comment'>{-# LINE 35 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-276"></a>
|
||||||
|
<a name="line-277"></a>
|
||||||
|
<a name="line-278"></a><a name="setStatus"></a><span class='hs-definition'>setStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Code</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-279"></a><span class='hs-definition'>setStatus</span> <span class='hs-varid'>s</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFSetStatus</span> <span class='hs-varid'>s</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-280"></a>
|
||||||
|
<a name="line-281"></a><a name="getCode"></a><span class='hs-definition'>getCode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Code</span>
|
||||||
|
<a name="line-282"></a><span class='hs-definition'>getCode</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toEnum</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'><$></span> <span class='hs-varid'>tFGetCode</span> <span class='hs-varid'>s</span>
|
||||||
|
<a name="line-283"></a>
|
||||||
|
<a name="line-284"></a><a name="message"></a><span class='hs-definition'>message</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CString</span>
|
||||||
|
<a name="line-285"></a><span class='hs-definition'>message</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFMessage</span>
|
||||||
|
<a name="line-286"></a><span class='hs-comment'>{-# LINE 44 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-287"></a>
|
||||||
|
<a name="line-288"></a>
|
||||||
|
<a name="line-289"></a>
|
||||||
|
<a name="line-290"></a><a name="Buffer"></a><span class='hs-comment'>-- Buffer.</span>
|
||||||
|
<a name="line-291"></a><a name="Buffer"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Buffer</span>
|
||||||
|
<a name="line-292"></a><a name="BufferPtr"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>BufferPtr</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Buffer</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-293"></a><span class='hs-comment'>{-# LINE 49 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-294"></a>
|
||||||
|
<a name="line-295"></a>
|
||||||
|
<a name="line-296"></a><a name="getBufferData"></a><span class='hs-definition'>getBufferData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BufferPtr</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-297"></a><span class='hs-definition'>getBufferData</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span> <span class='hs-layout'>{</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-varid'>peekByteOff</span> <span class='hs-varid'>ptr</span> <span class='hs-num'>0</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-298"></a><span class='hs-comment'>{-# LINE 52 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-299"></a>
|
||||||
|
<a name="line-300"></a>
|
||||||
|
<a name="line-301"></a><a name="getBufferLength"></a><span class='hs-definition'>getBufferLength</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BufferPtr</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CULong</span>
|
||||||
|
<a name="line-302"></a><span class='hs-definition'>getBufferLength</span> <span class='hs-keyglyph'>=</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span> <span class='hs-layout'>{</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-varid'>peekByteOff</span> <span class='hs-varid'>ptr</span> <span class='hs-num'>8</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-303"></a><span class='hs-comment'>{-# LINE 55 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-304"></a>
|
||||||
|
<a name="line-305"></a>
|
||||||
|
<a name="line-306"></a><a name="Tensor"></a><span class='hs-comment'>-- Tensor.</span>
|
||||||
|
<a name="line-307"></a><a name="Tensor"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Tensor</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-308"></a><span class='hs-comment'>{-# LINE 58 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-309"></a>
|
||||||
|
<a name="line-310"></a>
|
||||||
|
<a name="line-311"></a><a name="instance%20Storable%20Tensor"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Storable</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-312"></a> <span class='hs-varid'>sizeOf</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>sizeOf</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-313"></a> <span class='hs-varid'>alignment</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>alignment</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-314"></a> <span class='hs-varid'>peek</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-conid'>Tensor</span> <span class='hs-layout'>(</span><span class='hs-varid'>peek</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-315"></a> <span class='hs-varid'>poke</span> <span class='hs-varid'>p</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>poke</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-316"></a>
|
||||||
|
<a name="line-317"></a><a name="newTensor"></a><span class='hs-definition'>newTensor</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-318"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CLong</span> <span class='hs-comment'>-- dimensions array</span>
|
||||||
|
<a name="line-319"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-comment'>-- num dimensions</span>
|
||||||
|
<a name="line-320"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-comment'>-- data</span>
|
||||||
|
<a name="line-321"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-comment'>-- data len</span>
|
||||||
|
<a name="line-322"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>FunPtr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- deallocator</span>
|
||||||
|
<a name="line-323"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-comment'>-- deallocator arg</span>
|
||||||
|
<a name="line-324"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-325"></a><span class='hs-definition'>newTensor</span> <span class='hs-varid'>dt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewTensor</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromEnum</span> <span class='hs-varid'>dt</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-326"></a>
|
||||||
|
<a name="line-327"></a><a name="deleteTensor"></a><span class='hs-definition'>deleteTensor</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-328"></a><span class='hs-definition'>deleteTensor</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteTensor</span>
|
||||||
|
<a name="line-329"></a><span class='hs-comment'>{-# LINE 77 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-330"></a>
|
||||||
|
<a name="line-331"></a>
|
||||||
|
<a name="line-332"></a><a name="tensorType"></a><span class='hs-definition'>tensorType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-333"></a><span class='hs-definition'>tensorType</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toEnum</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'><$></span> <span class='hs-varid'>tFTensorType</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-334"></a>
|
||||||
|
<a name="line-335"></a><a name="numDims"></a><span class='hs-definition'>numDims</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span>
|
||||||
|
<a name="line-336"></a><span class='hs-definition'>numDims</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNumDims</span>
|
||||||
|
<a name="line-337"></a><span class='hs-comment'>{-# LINE 83 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-338"></a>
|
||||||
|
<a name="line-339"></a>
|
||||||
|
<a name="line-340"></a><a name="dim"></a><span class='hs-definition'>dim</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CLong</span>
|
||||||
|
<a name="line-341"></a><span class='hs-definition'>dim</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDim</span>
|
||||||
|
<a name="line-342"></a><span class='hs-comment'>{-# LINE 86 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-343"></a>
|
||||||
|
<a name="line-344"></a>
|
||||||
|
<a name="line-345"></a><a name="tensorByteSize"></a><span class='hs-definition'>tensorByteSize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CULong</span>
|
||||||
|
<a name="line-346"></a><span class='hs-definition'>tensorByteSize</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFTensorByteSize</span>
|
||||||
|
<a name="line-347"></a><span class='hs-comment'>{-# LINE 89 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-348"></a>
|
||||||
|
<a name="line-349"></a>
|
||||||
|
<a name="line-350"></a><a name="tensorData"></a><span class='hs-definition'>tensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-351"></a><span class='hs-definition'>tensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFTensorData</span>
|
||||||
|
<a name="line-352"></a><span class='hs-comment'>{-# LINE 92 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-353"></a>
|
||||||
|
<a name="line-354"></a>
|
||||||
|
<a name="line-355"></a>
|
||||||
|
<a name="line-356"></a><a name="SessionOptions"></a><span class='hs-comment'>-- Session Options.</span>
|
||||||
|
<a name="line-357"></a><a name="SessionOptions"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-358"></a><span class='hs-comment'>{-# LINE 96 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-359"></a>
|
||||||
|
<a name="line-360"></a>
|
||||||
|
<a name="line-361"></a><a name="newSessionOptions"></a><span class='hs-definition'>newSessionOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>SessionOptions</span>
|
||||||
|
<a name="line-362"></a><span class='hs-definition'>newSessionOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewSessionOptions</span>
|
||||||
|
<a name="line-363"></a><span class='hs-comment'>{-# LINE 99 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-364"></a>
|
||||||
|
<a name="line-365"></a>
|
||||||
|
<a name="line-366"></a><a name="setTarget"></a><span class='hs-definition'>setTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-367"></a><span class='hs-definition'>setTarget</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFSetTarget</span>
|
||||||
|
<a name="line-368"></a><span class='hs-comment'>{-# LINE 102 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-369"></a>
|
||||||
|
<a name="line-370"></a>
|
||||||
|
<a name="line-371"></a><a name="setConfig"></a><span class='hs-definition'>setConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-372"></a><span class='hs-definition'>setConfig</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFSetConfig</span>
|
||||||
|
<a name="line-373"></a><span class='hs-comment'>{-# LINE 105 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-374"></a>
|
||||||
|
<a name="line-375"></a>
|
||||||
|
<a name="line-376"></a><a name="deleteSessionOptions"></a><span class='hs-definition'>deleteSessionOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-377"></a><span class='hs-definition'>deleteSessionOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteSessionOptions</span>
|
||||||
|
<a name="line-378"></a><span class='hs-comment'>{-# LINE 108 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-379"></a>
|
||||||
|
<a name="line-380"></a>
|
||||||
|
<a name="line-381"></a>
|
||||||
|
<a name="line-382"></a><a name="Session"></a><span class='hs-comment'>-- Session.</span>
|
||||||
|
<a name="line-383"></a><a name="Session"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Session</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Session</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-384"></a><span class='hs-comment'>{-# LINE 112 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-385"></a>
|
||||||
|
<a name="line-386"></a>
|
||||||
|
<a name="line-387"></a><a name="newSession"></a><span class='hs-definition'>newSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Session</span>
|
||||||
|
<a name="line-388"></a><span class='hs-definition'>newSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewSession</span>
|
||||||
|
<a name="line-389"></a><span class='hs-comment'>{-# LINE 115 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-390"></a>
|
||||||
|
<a name="line-391"></a>
|
||||||
|
<a name="line-392"></a><a name="closeSession"></a><span class='hs-definition'>closeSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-393"></a><span class='hs-definition'>closeSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFCloseSession</span>
|
||||||
|
<a name="line-394"></a><span class='hs-comment'>{-# LINE 118 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-395"></a>
|
||||||
|
<a name="line-396"></a>
|
||||||
|
<a name="line-397"></a><a name="deleteSession"></a><span class='hs-definition'>deleteSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-398"></a><span class='hs-definition'>deleteSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteSession</span>
|
||||||
|
<a name="line-399"></a><span class='hs-comment'>{-# LINE 121 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-400"></a>
|
||||||
|
<a name="line-401"></a>
|
||||||
|
<a name="line-402"></a><a name="extendGraph"></a><span class='hs-definition'>extendGraph</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-403"></a><span class='hs-definition'>extendGraph</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFExtendGraph</span>
|
||||||
|
<a name="line-404"></a><span class='hs-comment'>{-# LINE 124 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-405"></a>
|
||||||
|
<a name="line-406"></a>
|
||||||
|
<a name="line-407"></a><a name="run"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span>
|
||||||
|
<a name="line-408"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BufferPtr</span> <span class='hs-comment'>-- RunOptions proto.</span>
|
||||||
|
<a name="line-409"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-comment'>-- Input (names, tensors, count).</span>
|
||||||
|
<a name="line-410"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>Tensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-comment'>-- Output (names, tensors, count).</span>
|
||||||
|
<a name="line-411"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-comment'>-- Target nodes (names, count).</span>
|
||||||
|
<a name="line-412"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BufferPtr</span> <span class='hs-comment'>-- RunMetadata proto.</span>
|
||||||
|
<a name="line-413"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span>
|
||||||
|
<a name="line-414"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-415"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFRun</span>
|
||||||
|
<a name="line-416"></a><span class='hs-comment'>{-# LINE 134 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-417"></a>
|
||||||
|
<a name="line-418"></a>
|
||||||
|
<a name="line-419"></a><a name="TensorDeallocFn"></a><span class='hs-comment'>-- FFI helpers.</span>
|
||||||
|
<a name="line-420"></a><a name="TensorDeallocFn"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>TensorDeallocFn</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-421"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-str'>"wrapper"</span>
|
||||||
|
<a name="line-422"></a> <span class='hs-varid'>wrapTensorDealloc</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorDeallocFn</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>FunPtr</span> <span class='hs-conid'>TensorDeallocFn</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-423"></a>
|
||||||
|
<a name="line-424"></a>
|
||||||
|
<a name="line-425"></a><a name="getAllOpList"></a><span class='hs-comment'>-- | Get the OpList of all OpDefs defined in this address space.</span>
|
||||||
|
<a name="line-426"></a><span class='hs-comment'>-- Returns a BufferPtr, ownership of which is transferred to the caller</span>
|
||||||
|
<a name="line-427"></a><span class='hs-comment'>-- (and can be freed using deleteBuffer).</span>
|
||||||
|
<a name="line-428"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-429"></a><span class='hs-comment'>-- The data in the buffer will be the serialized OpList proto for ops registered</span>
|
||||||
|
<a name="line-430"></a><span class='hs-comment'>-- in this address space.</span>
|
||||||
|
<a name="line-431"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>BufferPtr</span>
|
||||||
|
<a name="line-432"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFGetAllOpList</span>
|
||||||
|
<a name="line-433"></a><span class='hs-comment'>{-# LINE 149 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||||
|
<a name="line-434"></a>
|
||||||
|
<a name="line-435"></a>
|
||||||
|
<a name="line-436"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-str'>"&TF_DeleteBuffer"</span>
|
||||||
|
<a name="line-437"></a> <span class='hs-varid'>deleteBuffer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FunPtr</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufferPtr</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-438"></a>
|
||||||
|
<a name="line-439"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_NewStatus"</span>
|
||||||
|
<a name="line-440"></a> <span class='hs-varid'>tFNewStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-441"></a>
|
||||||
|
<a name="line-442"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_DeleteStatus"</span>
|
||||||
|
<a name="line-443"></a> <span class='hs-varid'>tFDeleteStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-444"></a>
|
||||||
|
<a name="line-445"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_SetStatus"</span>
|
||||||
|
<a name="line-446"></a> <span class='hs-varid'>tFSetStatus</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-447"></a>
|
||||||
|
<a name="line-448"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_GetCode"</span>
|
||||||
|
<a name="line-449"></a> <span class='hs-varid'>tFGetCode</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-450"></a>
|
||||||
|
<a name="line-451"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_Message"</span>
|
||||||
|
<a name="line-452"></a> <span class='hs-varid'>tFMessage</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-453"></a>
|
||||||
|
<a name="line-454"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_NewTensor"</span>
|
||||||
|
<a name="line-455"></a> <span class='hs-varid'>tFNewTensor</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CLong</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>FunPtr</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-456"></a>
|
||||||
|
<a name="line-457"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_DeleteTensor"</span>
|
||||||
|
<a name="line-458"></a> <span class='hs-varid'>tFDeleteTensor</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-459"></a>
|
||||||
|
<a name="line-460"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_TensorType"</span>
|
||||||
|
<a name="line-461"></a> <span class='hs-varid'>tFTensorType</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-462"></a>
|
||||||
|
<a name="line-463"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_NumDims"</span>
|
||||||
|
<a name="line-464"></a> <span class='hs-varid'>tFNumDims</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-465"></a>
|
||||||
|
<a name="line-466"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_Dim"</span>
|
||||||
|
<a name="line-467"></a> <span class='hs-varid'>tFDim</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CLong</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-468"></a>
|
||||||
|
<a name="line-469"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_TensorByteSize"</span>
|
||||||
|
<a name="line-470"></a> <span class='hs-varid'>tFTensorByteSize</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-471"></a>
|
||||||
|
<a name="line-472"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_TensorData"</span>
|
||||||
|
<a name="line-473"></a> <span class='hs-varid'>tFTensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-474"></a>
|
||||||
|
<a name="line-475"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_NewSessionOptions"</span>
|
||||||
|
<a name="line-476"></a> <span class='hs-varid'>tFNewSessionOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-477"></a>
|
||||||
|
<a name="line-478"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_SetTarget"</span>
|
||||||
|
<a name="line-479"></a> <span class='hs-varid'>tFSetTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-480"></a>
|
||||||
|
<a name="line-481"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_SetConfig"</span>
|
||||||
|
<a name="line-482"></a> <span class='hs-varid'>tFSetConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-483"></a>
|
||||||
|
<a name="line-484"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_DeleteSessionOptions"</span>
|
||||||
|
<a name="line-485"></a> <span class='hs-varid'>tFDeleteSessionOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-486"></a>
|
||||||
|
<a name="line-487"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_NewSession"</span>
|
||||||
|
<a name="line-488"></a> <span class='hs-varid'>tFNewSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>SessionOptions</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-489"></a>
|
||||||
|
<a name="line-490"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_CloseSession"</span>
|
||||||
|
<a name="line-491"></a> <span class='hs-varid'>tFCloseSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-492"></a>
|
||||||
|
<a name="line-493"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_DeleteSession"</span>
|
||||||
|
<a name="line-494"></a> <span class='hs-varid'>tFDeleteSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-495"></a>
|
||||||
|
<a name="line-496"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_ExtendGraph"</span>
|
||||||
|
<a name="line-497"></a> <span class='hs-varid'>tFExtendGraph</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CULong</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-498"></a>
|
||||||
|
<a name="line-499"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_Run"</span>
|
||||||
|
<a name="line-500"></a> <span class='hs-varid'>tFRun</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Session</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>BufferPtr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>C2HSImp</span><span class='hs-varop'>.</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>BufferPtr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Status</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-501"></a>
|
||||||
|
<a name="line-502"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>safe</span> <span class='hs-str'>"TensorFlow/Internal/Raw.chs.h TF_GetAllOpList"</span>
|
||||||
|
<a name="line-503"></a> <span class='hs-varid'>tFGetAllOpList</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>BufferPtr</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Internal/VarInt.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE BangPatterns #-}</span>
|
||||||
|
<a name="line-16"></a>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-|
|
||||||
|
<a name="line-18"></a>Module : TensorFlow.Internal.VarInt
|
||||||
|
<a name="line-19"></a>Description : Encoders and decoders for varint types.
|
||||||
|
<a name="line-20"></a>
|
||||||
|
<a name="line-21"></a>Originally taken from internal proto-lens code.
|
||||||
|
<a name="line-22"></a>-}</span>
|
||||||
|
<a name="line-23"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>VarInt</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>(</span> <span class='hs-varid'>getVarInt</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>putVarInt</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-27"></a>
|
||||||
|
<a name="line-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Attoparsec</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Parse</span>
|
||||||
|
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Bits</span>
|
||||||
|
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Builder</span>
|
||||||
|
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'><></span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Word</span> <span class='hs-layout'>(</span><span class='hs-conid'>Word64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-33"></a>
|
||||||
|
<a name="line-34"></a><a name="getVarInt"></a><span class='hs-comment'>-- | Decode an unsigned varint.</span>
|
||||||
|
<a name="line-35"></a><span class='hs-definition'>getVarInt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Parser</span> <span class='hs-conid'>Word64</span>
|
||||||
|
<a name="line-36"></a><span class='hs-definition'>getVarInt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>loop</span> <span class='hs-num'>1</span> <span class='hs-num'>0</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-varid'>loop</span> <span class='hs-varop'>!</span><span class='hs-varid'>s</span> <span class='hs-varop'>!</span><span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-39"></a> <span class='hs-varid'>b</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>anyWord8</span>
|
||||||
|
<a name="line-40"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>n'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-varop'>+</span> <span class='hs-varid'>s</span> <span class='hs-varop'>*</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varop'>.&.</span> <span class='hs-num'>127</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-41"></a> <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-varop'>.&.</span> <span class='hs-num'>128</span><span class='hs-layout'>)</span> <span class='hs-varop'>==</span> <span class='hs-num'>0</span>
|
||||||
|
<a name="line-42"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-varid'>n'</span>
|
||||||
|
<a name="line-43"></a> <span class='hs-keyword'>else</span> <span class='hs-varid'>loop</span> <span class='hs-layout'>(</span><span class='hs-num'>128</span><span class='hs-varop'>*</span><span class='hs-varid'>s</span><span class='hs-layout'>)</span> <span class='hs-varid'>n'</span>
|
||||||
|
<a name="line-44"></a>
|
||||||
|
<a name="line-45"></a><a name="putVarInt"></a><span class='hs-comment'>-- | Encode a Word64.</span>
|
||||||
|
<a name="line-46"></a><span class='hs-definition'>putVarInt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word64</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Builder</span>
|
||||||
|
<a name="line-47"></a><span class='hs-definition'>putVarInt</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-48"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>n</span> <span class='hs-varop'><</span> <span class='hs-num'>128</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>word8</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-49"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>word8</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>n</span> <span class='hs-varop'>.&.</span> <span class='hs-num'>127</span> <span class='hs-varop'>.|.</span> <span class='hs-num'>128</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a> <span class='hs-varop'><></span> <span class='hs-varid'>putVarInt</span> <span class='hs-layout'>(</span><span class='hs-varid'>n</span> <span class='hs-varop'>`shiftR`</span> <span class='hs-num'>7</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
152
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Nodes.html
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Nodes.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE MultiParamTypeClasses #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
|
||||||
|
<a name="line-19"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
|
||||||
|
<a name="line-20"></a><span class='hs-comment'>{-# LANGUAGE TypeFamilies #-}</span>
|
||||||
|
<a name="line-21"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Nodes</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-22"></a>
|
||||||
|
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftA2</span><span class='hs-layout'>,</span> <span class='hs-varid'>liftA3</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-24"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'><></span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-26"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-27"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>IsString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>^.</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Map</span>
|
||||||
|
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
|
||||||
|
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>V</span>
|
||||||
|
<a name="line-33"></a>
|
||||||
|
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-35"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
|
||||||
|
<a name="line-38"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>FFI</span>
|
||||||
|
<a name="line-39"></a>
|
||||||
|
<a name="line-40"></a><a name="Fetchable"></a><span class='hs-comment'>-- | Types that contain ops which can be run.</span>
|
||||||
|
<a name="line-41"></a><a name="Fetchable"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-42"></a> <span class='hs-varid'>getNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span> <span class='hs-conid'>NodeName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-43"></a>
|
||||||
|
<a name="line-44"></a><a name="Fetchable"></a><span class='hs-comment'>-- | Types that tensor representations (e.g. 'Tensor', 'ControlNode') can be</span>
|
||||||
|
<a name="line-45"></a><a name="Fetchable"></a><span class='hs-comment'>-- fetched into.</span>
|
||||||
|
<a name="line-46"></a><a name="Fetchable"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-47"></a><a name="Fetchable"></a><span class='hs-comment'>-- Includes collections of tensors (e.g. tuples).</span>
|
||||||
|
<a name="line-48"></a><a name="Fetchable"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-49"></a> <span class='hs-varid'>getFetch</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetch</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a>
|
||||||
|
<a name="line-51"></a><a name="Fetch"></a><span class='hs-comment'>-- | Fetch action. Keeps track of what needs to be fetched and how to decode</span>
|
||||||
|
<a name="line-52"></a><a name="Fetch"></a><span class='hs-comment'>-- the fetched data.</span>
|
||||||
|
<a name="line-53"></a><a name="Fetch"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Fetch</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Fetch</span>
|
||||||
|
<a name="line-54"></a> <span class='hs-layout'>{</span> <span class='hs-comment'>-- | Nodes to fetch</span>
|
||||||
|
<a name="line-55"></a> <span class='hs-varid'>fetches</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Set</span> <span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-56"></a> <span class='hs-comment'>-- | Function to create an 'a' from the fetched data.</span>
|
||||||
|
<a name="line-57"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>fetchRestore</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Map</span> <span class='hs-conid'>Text</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-58"></a> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-59"></a>
|
||||||
|
<a name="line-60"></a><a name="instance%20Functor%20Fetch"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Functor</span> <span class='hs-conid'>Fetch</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-61"></a> <span class='hs-varid'>fmap</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetch</span> <span class='hs-varid'>fetch</span> <span class='hs-varid'>restore</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Fetch</span> <span class='hs-varid'>fetch</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varop'>.</span> <span class='hs-varid'>restore</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-62"></a>
|
||||||
|
<a name="line-63"></a><a name="instance%20Applicative%20Fetch"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Applicative</span> <span class='hs-conid'>Fetch</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-64"></a> <span class='hs-varid'>pure</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Fetch</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>empty</span> <span class='hs-layout'>(</span><span class='hs-varid'>const</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-65"></a> <span class='hs-conid'>Fetch</span> <span class='hs-varid'>fetch</span> <span class='hs-varid'>restore</span> <span class='hs-varop'><*></span> <span class='hs-conid'>Fetch</span> <span class='hs-varid'>fetch'</span> <span class='hs-varid'>restore'</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-conid'>Fetch</span> <span class='hs-layout'>(</span><span class='hs-varid'>fetch</span> <span class='hs-varop'><></span> <span class='hs-varid'>fetch'</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>restore</span> <span class='hs-varop'><*></span> <span class='hs-varid'>restore'</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-67"></a>
|
||||||
|
<a name="line-68"></a><a name="nodesUnion"></a><span class='hs-definition'>nodesUnion</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Monoid</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-conid'>Traversable</span> <span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-conid'>Applicative</span> <span class='hs-varid'>f</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-layout'>(</span><span class='hs-varid'>f</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-69"></a><span class='hs-definition'>nodesUnion</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varid'>foldMap</span> <span class='hs-varid'>id</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>sequenceA</span>
|
||||||
|
<a name="line-70"></a>
|
||||||
|
<a name="line-71"></a><a name="instance%20Nodes%20(t1,%20t2)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Nodes</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Nodes</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-72"></a> <span class='hs-varid'>getNodes</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nodesUnion</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>getNodes</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>y</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-73"></a>
|
||||||
|
<a name="line-74"></a><a name="instance%20Nodes%20(t1,%20t2,%20t3)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Nodes</span> <span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t3</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Nodes</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-75"></a> <span class='hs-varid'>getNodes</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>,</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nodesUnion</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>getNodes</span> <span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>y</span><span class='hs-layout'>,</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>z</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-76"></a>
|
||||||
|
<a name="line-77"></a><a name="instance%20Fetchable%20(t1,%20t2)%20(a1,%20a2)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t1</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t2</span> <span class='hs-varid'>a2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-78"></a> <span class='hs-varid'>getFetch</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftA2</span> <span class='hs-conid'>(,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>x</span> <span class='hs-varop'><*></span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>y</span>
|
||||||
|
<a name="line-79"></a>
|
||||||
|
<a name="line-80"></a><a name="instance%20Fetchable%20(t1,%20t2,%20t3)%20(a1,%20a2,%20a3)"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t1</span> <span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t2</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t3</span> <span class='hs-varid'>a3</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-layout'>(</span><span class='hs-varid'>t1</span><span class='hs-layout'>,</span> <span class='hs-varid'>t2</span><span class='hs-layout'>,</span> <span class='hs-varid'>t3</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>a1</span><span class='hs-layout'>,</span> <span class='hs-varid'>a2</span><span class='hs-layout'>,</span> <span class='hs-varid'>a3</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-varid'>getFetch</span> <span class='hs-layout'>(</span><span class='hs-varid'>x</span><span class='hs-layout'>,</span> <span class='hs-varid'>y</span><span class='hs-layout'>,</span> <span class='hs-varid'>z</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-varid'>liftA3</span> <span class='hs-conid'>(,,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>x</span> <span class='hs-varop'><*></span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>y</span> <span class='hs-varop'><*></span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>z</span>
|
||||||
|
<a name="line-84"></a>
|
||||||
|
<a name="line-85"></a><a name="instance%20Nodes%20%5bt%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Nodes</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>t</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-varid'>getNodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nodesUnion</span> <span class='hs-varop'>.</span> <span class='hs-varid'>map</span> <span class='hs-varid'>getNodes</span>
|
||||||
|
<a name="line-87"></a>
|
||||||
|
<a name="line-88"></a><a name="instance%20Fetchable%20%5bt%5d%20%5ba%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>t</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>sequenceA</span> <span class='hs-varop'><$></span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>ts</span>
|
||||||
|
<a name="line-90"></a>
|
||||||
|
<a name="line-91"></a><a name="instance%20Nodes%20ControlNode"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Nodes</span> <span class='hs-conid'>ControlNode</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-92"></a> <span class='hs-varid'>getNodes</span> <span class='hs-layout'>(</span><span class='hs-conid'>ControlNode</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>singleton</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-93"></a>
|
||||||
|
<a name="line-94"></a><a name="instance%20Fetchable%20ControlNode%20a"></a><span class='hs-comment'>-- We use the constraint @(a ~ ())@ to help with type inference. For example,</span>
|
||||||
|
<a name="line-95"></a><a name="instance%20Fetchable%20ControlNode%20a"></a><span class='hs-comment'>-- if @t :: ControlNode@, then this constraint ensures that @run t :: Session</span>
|
||||||
|
<a name="line-96"></a><a name="instance%20Fetchable%20ControlNode%20a"></a><span class='hs-comment'>-- ()@. If we used @instance Fetchable ControlNode ()@ instead, then that</span>
|
||||||
|
<a name="line-97"></a><a name="instance%20Fetchable%20ControlNode%20a"></a><span class='hs-comment'>-- expression would be ambiguous without explicitly specifying the return type.</span>
|
||||||
|
<a name="line-98"></a><a name="instance%20Fetchable%20ControlNode%20a"></a><span class='hs-keyword'>instance</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>~</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-conid'>ControlNode</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-99"></a> <span class='hs-varid'>getFetch</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>pure</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-100"></a>
|
||||||
|
<a name="line-101"></a><a name="instance%20Nodes%20(Tensor%20v%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Nodes</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-102"></a> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>singleton</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getOrAddOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-varop'>.</span> <span class='hs-varid'>outputOp</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-103"></a>
|
||||||
|
<a name="line-104"></a><a name="fetchTensorList"></a><span class='hs-definition'>fetchTensorList</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-105"></a><span class='hs-definition'>fetchTensorList</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>fetchTensorVector</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-106"></a>
|
||||||
|
<a name="line-107"></a><a name="fetchTensorVector"></a><span class='hs-definition'>fetchTensorVector</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varid'>v</span> <span class='hs-varop'>.</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-108"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span><span class='hs-layout'>,</span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-109"></a><span class='hs-definition'>fetchTensorVector</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-110"></a> <span class='hs-varid'>outputName</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>renderOutput</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-111"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Fetch</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>singleton</span> <span class='hs-varid'>outputName</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>tensors</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-112"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>tensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensors</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.!</span> <span class='hs-varid'>outputName</span>
|
||||||
|
<a name="line-113"></a> <span class='hs-varid'>shape</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Shape</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorDataDimensions</span> <span class='hs-varid'>tensorData</span>
|
||||||
|
<a name="line-114"></a> <span class='hs-varid'>vec</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>decodeTensorData</span> <span class='hs-varop'>$</span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>tensorData</span>
|
||||||
|
<a name="line-115"></a>
|
||||||
|
<a name="line-116"></a> <span class='hs-varid'>expectedType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorType</span> <span class='hs-layout'>(</span><span class='hs-varid'>undefined</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-117"></a> <span class='hs-varid'>actualType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorDataType</span> <span class='hs-varid'>tensorData</span>
|
||||||
|
<a name="line-118"></a> <span class='hs-varid'>badTypeError</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Bad tensor type: expected "</span>
|
||||||
|
<a name="line-119"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>expectedType</span>
|
||||||
|
<a name="line-120"></a> <span class='hs-varop'>++</span> <span class='hs-str'>", got "</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>actualType</span>
|
||||||
|
<a name="line-122"></a> <span class='hs-keyword'>in</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>expectedType</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>actualType</span>
|
||||||
|
<a name="line-123"></a> <span class='hs-keyword'>then</span> <span class='hs-varid'>badTypeError</span>
|
||||||
|
<a name="line-124"></a> <span class='hs-keyword'>else</span> <span class='hs-layout'>(</span><span class='hs-varid'>shape</span><span class='hs-layout'>,</span> <span class='hs-varid'>vec</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-125"></a>
|
||||||
|
<a name="line-126"></a><a name="instance%20Fetchable%20(Tensor%20v%20a)%20(V.Vector%20a')"></a><span class='hs-comment'>-- The constraint "a ~ a'" means that the input/output of fetch can constrain</span>
|
||||||
|
<a name="line-127"></a><a name="instance%20Fetchable%20(Tensor%20v%20a)%20(V.Vector%20a')"></a><span class='hs-comment'>-- the TensorType of each other.</span>
|
||||||
|
<a name="line-128"></a><a name="instance%20Fetchable%20(Tensor%20v%20a)%20(V.Vector%20a')"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>~</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-129"></a> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-varid'>snd</span> <span class='hs-varop'><$></span> <span class='hs-varid'>fetchTensorVector</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-130"></a>
|
||||||
|
<a name="line-131"></a><a name="Scalar"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Scalar</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Scalar</span> <span class='hs-layout'>{</span><span class='hs-varid'>unScalar</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span><span class='hs-layout'>}</span>
|
||||||
|
<a name="line-132"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span><span class='hs-layout'>,</span> <span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Num</span><span class='hs-layout'>,</span> <span class='hs-conid'>Fractional</span><span class='hs-layout'>,</span> <span class='hs-conid'>Floating</span><span class='hs-layout'>,</span> <span class='hs-conid'>Real</span><span class='hs-layout'>,</span> <span class='hs-conid'>RealFloat</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-133"></a> <span class='hs-conid'>RealFrac</span><span class='hs-layout'>,</span> <span class='hs-conid'>IsString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-134"></a>
|
||||||
|
<a name="line-135"></a><a name="instance%20Fetchable%20(Tensor%20v%20a)%20(Scalar%20a')"></a><span class='hs-keyword'>instance</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>~</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Fetchable</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>Scalar</span> <span class='hs-varid'>a'</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-136"></a> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-conid'>Scalar</span> <span class='hs-varop'>.</span> <span class='hs-varid'>headFromSingleton</span> <span class='hs-varop'>.</span> <span class='hs-varid'>snd</span><span class='hs-layout'>)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>fetchTensorList</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-137"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-138"></a> <span class='hs-varid'>headFromSingleton</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>x</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-varid'>headFromSingleton</span> <span class='hs-varid'>xs</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Unable to extract singleton from tensor of length "</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>length</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
57
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Orphans.html
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Orphans.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE StandaloneDeriving #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# OPTIONS_GHC -fno-warn-orphans #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>-- Orphan instances for certain proto messages/enums, used internally.</span>
|
||||||
|
<a name="line-19"></a><span class='hs-comment'>-- TODO(judahjacobson): consider making proto-lens generate some or all of</span>
|
||||||
|
<a name="line-20"></a><span class='hs-comment'>-- these automatically; or, alternately, make new Haskell datatypes.</span>
|
||||||
|
<a name="line-21"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Orphans</span><span class='hs-conid'>()</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-22"></a>
|
||||||
|
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>AttrValue</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>AttrValue</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>AttrValue'ListValue</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>NameAttrList</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-29"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>NodeDef</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>ResourceHandle</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>ResourceHandle</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-33"></a> <span class='hs-layout'>(</span><span class='hs-conid'>TensorProto</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorShape</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-layout'>(</span><span class='hs-conid'>TensorShapeProto</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>TensorShapeProto'Dim</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>DataType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-37"></a>
|
||||||
|
<a name="line-38"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>AttrValue</span>
|
||||||
|
<a name="line-39"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>AttrValue'ListValue</span>
|
||||||
|
<a name="line-40"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-41"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>NameAttrList</span>
|
||||||
|
<a name="line-42"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>NodeDef</span>
|
||||||
|
<a name="line-43"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>ResourceHandle</span>
|
||||||
|
<a name="line-44"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>TensorProto</span>
|
||||||
|
<a name="line-45"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>TensorShapeProto</span>
|
||||||
|
<a name="line-46"></a><span class='hs-keyword'>deriving</span> <span class='hs-keyword'>instance</span> <span class='hs-conid'>Ord</span> <span class='hs-conid'>TensorShapeProto'Dim</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
167
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Output.html
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Output.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-18"></a>
|
||||||
|
<a name="line-19"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-20"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>ControlNode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Device</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-comment'>-- * Ops</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>NodeName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Op</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opUnrendered</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpDef</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opName</span>
|
||||||
|
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opType</span>
|
||||||
|
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opAttr</span>
|
||||||
|
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opInputs</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opControlInputs</span>
|
||||||
|
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OutputIx</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Output</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>output</span>
|
||||||
|
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputIndex</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputOp</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>PendingNodeName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-39"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-40"></a>
|
||||||
|
<a name="line-41"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Map</span>
|
||||||
|
<a name="line-42"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ProtoLens</span><span class='hs-varop'>.</span><span class='hs-conid'>TextFormat</span> <span class='hs-layout'>(</span><span class='hs-varid'>showMessage</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>IsString</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-44"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-conid'>Lens'</span><span class='hs-layout'>,</span> <span class='hs-conid'>Traversal'</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.~</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>^.</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span><span class='hs-varop'>.</span><span class='hs-conid'>Unchecked</span> <span class='hs-layout'>(</span><span class='hs-varid'>lens</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-48"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>AttrValue</span> <span class='hs-layout'>(</span><span class='hs-conid'>AttrValue</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>NodeDef</span> <span class='hs-layout'>(</span><span class='hs-conid'>NodeDef</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Default</span> <span class='hs-layout'>(</span><span class='hs-varid'>def</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>Attribute</span><span class='hs-layout'>,</span> <span class='hs-varid'>attrLens</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Orphans</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-53"></a>
|
||||||
|
<a name="line-54"></a><a name="ControlNode"></a><span class='hs-comment'>-- | A type of graph node which has no outputs. These nodes are</span>
|
||||||
|
<a name="line-55"></a><a name="ControlNode"></a><span class='hs-comment'>-- valuable for causing side effects when they are run.</span>
|
||||||
|
<a name="line-56"></a><a name="ControlNode"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>ControlNode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ControlNode</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unControlNode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Op</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-57"></a>
|
||||||
|
<a name="line-58"></a><a name="OpType"></a><span class='hs-comment'>-- | The type of op of a node in the graph. This corresponds to the proto field</span>
|
||||||
|
<a name="line-59"></a><a name="OpType"></a><span class='hs-comment'>-- NodeDef.op.</span>
|
||||||
|
<a name="line-60"></a><a name="OpType"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>OpType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpType</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unOpType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-61"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-62"></a>
|
||||||
|
<a name="line-63"></a><a name="instance%20IsString%20OpType"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>IsString</span> <span class='hs-conid'>OpType</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-64"></a> <span class='hs-varid'>fromString</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpType</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span>
|
||||||
|
<a name="line-65"></a>
|
||||||
|
<a name="line-66"></a><a name="Output"></a><span class='hs-comment'>-- | An output of a TensorFlow node.</span>
|
||||||
|
<a name="line-67"></a><a name="Output"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Output</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Output</span> <span class='hs-varop'>!</span><span class='hs-conid'>OutputIx</span> <span class='hs-varop'>!</span><span class='hs-conid'>Op</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-69"></a>
|
||||||
|
<a name="line-70"></a><a name="output"></a><span class='hs-definition'>output</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OutputIx</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Op</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-71"></a><span class='hs-definition'>output</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-72"></a>
|
||||||
|
<a name="line-73"></a><a name="outputOp"></a><span class='hs-definition'>outputOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>Output</span> <span class='hs-conid'>Op</span>
|
||||||
|
<a name="line-74"></a><span class='hs-definition'>outputOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-varid'>i</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Output</span> <span class='hs-varid'>i</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-75"></a>
|
||||||
|
<a name="line-76"></a><a name="outputIndex"></a><span class='hs-definition'>outputIndex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>Output</span> <span class='hs-conid'>OutputIx</span>
|
||||||
|
<a name="line-77"></a><span class='hs-definition'>outputIndex</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-varid'>i</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>i</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Output</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-varid'>i</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Output</span> <span class='hs-varid'>i</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-78"></a>
|
||||||
|
<a name="line-79"></a><a name="OutputIx"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>OutputIx</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OutputIx</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unOutputIx</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Num</span><span class='hs-layout'>,</span> <span class='hs-conid'>Enum</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-81"></a>
|
||||||
|
<a name="line-82"></a><a name="Device"></a><span class='hs-comment'>-- | A device that a node can be assigned to.</span>
|
||||||
|
<a name="line-83"></a><a name="Device"></a><span class='hs-comment'>-- There's a naming convention where the device names</span>
|
||||||
|
<a name="line-84"></a><a name="Device"></a><span class='hs-comment'>-- are constructed from job and replica names.</span>
|
||||||
|
<a name="line-85"></a><a name="Device"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Device</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Device</span> <span class='hs-layout'>{</span><span class='hs-varid'>deviceName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span><span class='hs-layout'>}</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>IsString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-87"></a>
|
||||||
|
<a name="line-88"></a><a name="instance%20Show%20Device"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>Device</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>Device</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>show</span> <span class='hs-varid'>d</span>
|
||||||
|
<a name="line-90"></a>
|
||||||
|
<a name="line-91"></a><a name="Op"></a><span class='hs-comment'>-- | The representation of a node in a TensorFlow graph.</span>
|
||||||
|
<a name="line-92"></a><a name="Op"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Op</span>
|
||||||
|
<a name="line-93"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Rendered</span> <span class='hs-varop'>!</span><span class='hs-conid'>NodeDef</span> <span class='hs-comment'>-- ^ Properties are fixed, including the</span>
|
||||||
|
<a name="line-94"></a> <span class='hs-comment'>-- device, name, and scope.</span>
|
||||||
|
<a name="line-95"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Unrendered</span> <span class='hs-varop'>!</span><span class='hs-conid'>OpDef</span> <span class='hs-comment'>-- ^ Properties are not fixed, and may change depending</span>
|
||||||
|
<a name="line-96"></a> <span class='hs-comment'>-- on which context this op is rendered in.</span>
|
||||||
|
<a name="line-97"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-98"></a>
|
||||||
|
<a name="line-99"></a><a name="instance%20Show%20Op"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>Op</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-100"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rendered</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Rendered "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>showMessage</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-101"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-conid'>Unrendered</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Unrendered "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>opName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-102"></a>
|
||||||
|
<a name="line-103"></a><a name="opUnrendered"></a><span class='hs-comment'>-- | Traverse on the 'Unrendered' of an 'Op'.</span>
|
||||||
|
<a name="line-104"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-105"></a><span class='hs-comment'>-- Same implementation as _Left.</span>
|
||||||
|
<a name="line-106"></a><span class='hs-definition'>opUnrendered</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Traversal'</span> <span class='hs-conid'>Op</span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-107"></a><span class='hs-definition'>opUnrendered</span> <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-conid'>Unrendered</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Unrendered</span> <span class='hs-varop'><$></span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-108"></a><span class='hs-definition'>opUnrendered</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rendered</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pure</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rendered</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-109"></a>
|
||||||
|
<a name="line-110"></a><a name="OpDef"></a><span class='hs-comment'>-- | Op definition. This corresponds somewhat to the 'NodeDef' proto.</span>
|
||||||
|
<a name="line-111"></a><a name="OpDef"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpDef</span>
|
||||||
|
<a name="line-112"></a> <span class='hs-layout'>{</span> <span class='hs-sel'>_opName</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-conid'>PendingNodeName</span>
|
||||||
|
<a name="line-113"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opType</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-conid'>OpType</span>
|
||||||
|
<a name="line-114"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opAttrs</span> <span class='hs-keyglyph'>::</span> <span class='hs-varop'>!</span><span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span> <span class='hs-conid'>Text</span> <span class='hs-conid'>AttrValue</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-115"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-116"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_opControlInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-117"></a> <span class='hs-layout'>}</span> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-118"></a>
|
||||||
|
<a name="line-119"></a><a name="PendingNodeName"></a><span class='hs-comment'>-- | The name specified for an unrendered Op. If an Op has an</span>
|
||||||
|
<a name="line-120"></a><a name="PendingNodeName"></a><span class='hs-comment'>-- ImplicitName, it will be assigned based on the opType plus a</span>
|
||||||
|
<a name="line-121"></a><a name="PendingNodeName"></a><span class='hs-comment'>-- unique identifier. Does not contain the "scope" prefix.</span>
|
||||||
|
<a name="line-122"></a><a name="PendingNodeName"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>PendingNodeName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ExplicitName</span> <span class='hs-varop'>!</span><span class='hs-conid'>Text</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ImplicitName</span>
|
||||||
|
<a name="line-123"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-124"></a>
|
||||||
|
<a name="line-125"></a><a name="NodeName"></a><span class='hs-comment'>-- | The name of a node in the graph. This corresponds to the proto field</span>
|
||||||
|
<a name="line-126"></a><a name="NodeName"></a><span class='hs-comment'>-- NodeDef.name. Includes the scope prefix (if any) and a unique identifier</span>
|
||||||
|
<a name="line-127"></a><a name="NodeName"></a><span class='hs-comment'>-- (if the node was implicitly named).</span>
|
||||||
|
<a name="line-128"></a><a name="NodeName"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>NodeName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>NodeName</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unNodeName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-129"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Ord</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-130"></a>
|
||||||
|
<a name="line-131"></a><a name="opName"></a><span class='hs-definition'>opName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>OpDef</span> <span class='hs-conid'>PendingNodeName</span>
|
||||||
|
<a name="line-132"></a><span class='hs-definition'>opName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_opName</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>o</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span> <span class='hs-layout'>{</span><span class='hs-sel'>_opName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-133"></a>
|
||||||
|
<a name="line-134"></a><a name="opType"></a><span class='hs-definition'>opType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>OpDef</span> <span class='hs-conid'>OpType</span>
|
||||||
|
<a name="line-135"></a><span class='hs-definition'>opType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_opType</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>o</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span> <span class='hs-layout'>{</span> <span class='hs-sel'>_opType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-136"></a>
|
||||||
|
<a name="line-137"></a><a name="opAttr"></a><span class='hs-definition'>opAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Attribute</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>OpDef</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-138"></a><span class='hs-definition'>opAttr</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_opAttrs</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>o</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span> <span class='hs-layout'>{</span><span class='hs-sel'>_opAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>lens</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>findWithDefault</span> <span class='hs-varid'>def</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>flip</span> <span class='hs-layout'>(</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>insert</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>attrLens</span>
|
||||||
|
<a name="line-141"></a>
|
||||||
|
<a name="line-142"></a><a name="opInputs"></a><span class='hs-definition'>opInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Output</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-143"></a><span class='hs-definition'>opInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_opInputs</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>o</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span> <span class='hs-layout'>{</span><span class='hs-sel'>_opInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-144"></a>
|
||||||
|
<a name="line-145"></a><a name="opControlInputs"></a><span class='hs-definition'>opControlInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-146"></a><span class='hs-definition'>opControlInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_opControlInputs</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>o</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span> <span class='hs-layout'>{</span><span class='hs-sel'>_opControlInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-147"></a>
|
||||||
|
<a name="line-148"></a><a name="instance%20IsString%20Output"></a><span class='hs-comment'>-- TODO(gnezdo): IsString instance is weird and we should move that</span>
|
||||||
|
<a name="line-149"></a><a name="instance%20IsString%20Output"></a><span class='hs-comment'>-- code into a Build function</span>
|
||||||
|
<a name="line-150"></a><a name="instance%20IsString%20Output"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>IsString</span> <span class='hs-conid'>Output</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-varid'>fromString</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>break</span> <span class='hs-layout'>(</span><span class='hs-varop'>==</span><span class='hs-chr'>':'</span><span class='hs-layout'>)</span> <span class='hs-varid'>s</span> <span class='hs-keyword'>of</span>
|
||||||
|
<a name="line-152"></a> <span class='hs-layout'>(</span><span class='hs-varid'>n</span><span class='hs-layout'>,</span> <span class='hs-chr'>':'</span><span class='hs-conop'>:</span><span class='hs-varid'>ixStr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-153"></a> <span class='hs-keyglyph'>|</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-varid'>ix</span><span class='hs-layout'>,</span> <span class='hs-str'>""</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>read</span> <span class='hs-varid'>ixStr</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Output</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromInteger</span> <span class='hs-varid'>ix</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>assigned</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-154"></a> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Output</span> <span class='hs-num'>0</span> <span class='hs-varop'>$</span> <span class='hs-varid'>assigned</span> <span class='hs-varid'>s</span>
|
||||||
|
<a name="line-155"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>assigned</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Rendered</span> <span class='hs-varop'>$</span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>name</span> <span class='hs-varop'>.~</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-varid'>n</span>
|
||||||
|
<a name="line-156"></a>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
213
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Session.html
Normal file
|
@ -0,0 +1,213 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Session.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE GeneralizedNewtypeDeriving #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE TupleSections #-}</span>
|
||||||
|
<a name="line-19"></a>
|
||||||
|
<a name="line-20"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span> <span class='hs-layout'>(</span>
|
||||||
|
<a name="line-21"></a> <span class='hs-conid'>Session</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-22"></a> <span class='hs-comment'>-- * Opaque value created via 'sessionConfig' and 'sessionTarget'.</span>
|
||||||
|
<a name="line-23"></a> <span class='hs-conid'>SessionOption</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-24"></a> <span class='hs-varid'>sessionConfig</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-25"></a> <span class='hs-varid'>sessionTarget</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-26"></a> <span class='hs-varid'>runSession</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-27"></a> <span class='hs-varid'>runSessionWithOptions</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-28"></a> <span class='hs-varid'>build</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-29"></a> <span class='hs-varid'>buildAnd</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-30"></a> <span class='hs-varid'>buildWithSummary</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-varid'>extend</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-32"></a> <span class='hs-varid'>addGraphDef</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-33"></a> <span class='hs-varid'>run</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-34"></a> <span class='hs-varid'>runWithFeeds</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-varid'>run_</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-36"></a> <span class='hs-varid'>runWithFeeds_</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-varid'>asyncProdNodes</span><span class='hs-layout'>,</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-39"></a>
|
||||||
|
<a name="line-40"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>forever</span><span class='hs-layout'>,</span> <span class='hs-varid'>unless</span><span class='hs-layout'>,</span> <span class='hs-varid'>void</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-41"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span> <span class='hs-layout'>(</span><span class='hs-conid'>MonadIO</span><span class='hs-layout'>,</span> <span class='hs-varid'>liftIO</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-42"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Class</span> <span class='hs-layout'>(</span><span class='hs-varid'>lift</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span><span class='hs-varop'>.</span><span class='hs-conid'>Trans</span><span class='hs-varop'>.</span><span class='hs-conid'>Reader</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-varid'>ask</span><span class='hs-layout'>,</span> <span class='hs-varid'>asks</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-44"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-layout'>(</span><span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Functor</span><span class='hs-varop'>.</span><span class='hs-conid'>Identity</span> <span class='hs-layout'>(</span><span class='hs-varid'>runIdentity</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-conid'>Strict</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Map</span>
|
||||||
|
<a name="line-47"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
|
||||||
|
<a name="line-48"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Encoding</span> <span class='hs-layout'>(</span><span class='hs-varid'>encodeUtf8</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ProtoLens</span> <span class='hs-layout'>(</span><span class='hs-varid'>def</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.~</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Graph</span> <span class='hs-layout'>(</span><span class='hs-varid'>node</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Protobuf</span><span class='hs-varop'>.</span><span class='hs-conid'>Config</span> <span class='hs-layout'>(</span><span class='hs-conid'>ConfigProto</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-54"></a>
|
||||||
|
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span>
|
||||||
|
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>FFI</span>
|
||||||
|
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Raw</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Raw</span>
|
||||||
|
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Nodes</span>
|
||||||
|
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span> <span class='hs-layout'>(</span><span class='hs-conid'>NodeName</span><span class='hs-layout'>,</span> <span class='hs-varid'>unNodeName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-61"></a>
|
||||||
|
<a name="line-62"></a><a name="SessionState"></a><span class='hs-comment'>-- Common state threaded through the session.</span>
|
||||||
|
<a name="line-63"></a><a name="SessionState"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>SessionState</span>
|
||||||
|
<a name="line-64"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SessionState</span> <span class='hs-layout'>{</span>
|
||||||
|
<a name="line-65"></a> <span class='hs-varid'>rawSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>asyncCollector</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-67"></a> <span class='hs-comment'>-- ^ Starts the given action concurrently.</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-69"></a>
|
||||||
|
<a name="line-70"></a><a name="Session"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-71"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Session</span> <span class='hs-layout'>(</span><span class='hs-conid'>ReaderT</span> <span class='hs-conid'>SessionState</span> <span class='hs-layout'>(</span><span class='hs-conid'>BuildT</span> <span class='hs-conid'>IO</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-72"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Functor</span><span class='hs-layout'>,</span> <span class='hs-conid'>Applicative</span><span class='hs-layout'>,</span> <span class='hs-conid'>Monad</span><span class='hs-layout'>,</span> <span class='hs-conid'>MonadIO</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-73"></a>
|
||||||
|
<a name="line-74"></a><a name="runSession"></a><span class='hs-comment'>-- | Run 'Session' actions in a new TensorFlow session.</span>
|
||||||
|
<a name="line-75"></a><span class='hs-definition'>runSession</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-76"></a><span class='hs-definition'>runSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runSessionWithOptions</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-77"></a>
|
||||||
|
<a name="line-78"></a><a name="SessionOption"></a><span class='hs-comment'>-- | Setting of an option for the session (see 'runSessionWithOptions').</span>
|
||||||
|
<a name="line-79"></a><a name="SessionOption"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>SessionOption</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-conid'>SessionOption</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unSesssionOption</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-conid'>SessionOptions</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-81"></a>
|
||||||
|
<a name="line-82"></a><a name="sessionTarget"></a><span class='hs-comment'>-- | Target can be: "local", ip:port, host:port.</span>
|
||||||
|
<a name="line-83"></a><span class='hs-comment'>-- The set of supported factories depends on the linked in libraries.</span>
|
||||||
|
<a name="line-84"></a><span class='hs-comment'>-- REQUIRES "//learning/brain/public:tensorflow_remote" dependency for the binary.</span>
|
||||||
|
<a name="line-85"></a><span class='hs-definition'>sessionTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteString</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>SessionOption</span>
|
||||||
|
<a name="line-86"></a><span class='hs-definition'>sessionTarget</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SessionOption</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>setSessionTarget</span>
|
||||||
|
<a name="line-87"></a>
|
||||||
|
<a name="line-88"></a><a name="sessionConfig"></a><span class='hs-comment'>-- | Uses the specified config for the created session.</span>
|
||||||
|
<a name="line-89"></a><span class='hs-definition'>sessionConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ConfigProto</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>SessionOption</span>
|
||||||
|
<a name="line-90"></a><span class='hs-definition'>sessionConfig</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SessionOption</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>setSessionConfig</span>
|
||||||
|
<a name="line-91"></a>
|
||||||
|
<a name="line-92"></a><a name="runSessionWithOptions"></a><span class='hs-comment'>-- | Run 'Session' actions in a new TensorFlow session created with</span>
|
||||||
|
<a name="line-93"></a><span class='hs-comment'>-- the given option setter actions ('sessionTarget', 'sessionConfig').</span>
|
||||||
|
<a name="line-94"></a><span class='hs-definition'>runSessionWithOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SessionOption</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-95"></a><span class='hs-definition'>runSessionWithOptions</span> <span class='hs-varid'>options</span> <span class='hs-layout'>(</span><span class='hs-conid'>Session</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-96"></a> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>withSession</span> <span class='hs-varid'>applyOptions</span> <span class='hs-varop'>$</span>
|
||||||
|
<a name="line-97"></a> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>as</span> <span class='hs-varid'>rs</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>evalBuildT</span> <span class='hs-layout'>(</span><span class='hs-varid'>runReaderT</span> <span class='hs-varid'>m</span> <span class='hs-layout'>(</span><span class='hs-conid'>SessionState</span> <span class='hs-varid'>rs</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-98"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>applyOptions</span> <span class='hs-varid'>opt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapM_</span> <span class='hs-layout'>(</span><span class='hs-varop'>`unSesssionOption`</span> <span class='hs-varid'>opt</span><span class='hs-layout'>)</span> <span class='hs-varid'>options</span>
|
||||||
|
<a name="line-99"></a>
|
||||||
|
<a name="line-100"></a><a name="build"></a><span class='hs-comment'>-- | Lift a 'Build' action into a 'Session', including any explicit op</span>
|
||||||
|
<a name="line-101"></a><span class='hs-comment'>-- renderings.</span>
|
||||||
|
<a name="line-102"></a><span class='hs-definition'>build</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-103"></a><span class='hs-definition'>build</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Session</span> <span class='hs-varop'>.</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>.</span> <span class='hs-varid'>hoistBuildT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runIdentity</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-104"></a>
|
||||||
|
<a name="line-105"></a><a name="buildWithSummary"></a><span class='hs-comment'>-- | Lift a 'Build' action into a 'Session', including any explicit op</span>
|
||||||
|
<a name="line-106"></a><span class='hs-comment'>-- renderings. Returns the merged summary ops which can be used for</span>
|
||||||
|
<a name="line-107"></a><span class='hs-comment'>-- logging, see 'TensorFlow.Logging.build' for a convenient wrapper.</span>
|
||||||
|
<a name="line-108"></a><span class='hs-definition'>buildWithSummary</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>SummaryTensor</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-109"></a><span class='hs-definition'>buildWithSummary</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Session</span> <span class='hs-varop'>$</span> <span class='hs-varid'>lift</span> <span class='hs-varop'>$</span> <span class='hs-conid'>(,)</span> <span class='hs-varop'><$></span> <span class='hs-varid'>v</span> <span class='hs-varop'><*></span> <span class='hs-varid'>collectAllSummaries</span>
|
||||||
|
<a name="line-110"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BuildT</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-111"></a> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>hoistBuildT</span> <span class='hs-layout'>(</span><span class='hs-varid'>return</span> <span class='hs-varop'>.</span> <span class='hs-varid'>runIdentity</span><span class='hs-layout'>)</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-112"></a>
|
||||||
|
<a name="line-113"></a><a name="extend"></a><span class='hs-comment'>-- | Add all pending rendered nodes to the TensorFlow graph and runs</span>
|
||||||
|
<a name="line-114"></a><span class='hs-comment'>-- any pending initializers.</span>
|
||||||
|
<a name="line-115"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-116"></a><span class='hs-comment'>-- Note that run, runWithFeeds, etc. will all call this function implicitly.</span>
|
||||||
|
<a name="line-117"></a><span class='hs-definition'>extend</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Session</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-118"></a><span class='hs-definition'>extend</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-119"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>withSessionWhen</span> <span class='hs-varid'>vs</span> <span class='hs-varid'>action</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-120"></a> <span class='hs-varid'>unless</span> <span class='hs-layout'>(</span><span class='hs-varid'>null</span> <span class='hs-varid'>vs</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Session</span> <span class='hs-layout'>(</span><span class='hs-varid'>asks</span> <span class='hs-varid'>rawSession</span><span class='hs-layout'>)</span> <span class='hs-varop'>>>=</span> <span class='hs-varid'>action</span>
|
||||||
|
<a name="line-121"></a> <span class='hs-varid'>nodesToExtend</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varid'>flushNodeBuffer</span>
|
||||||
|
<a name="line-122"></a> <span class='hs-varid'>withSessionWhen</span> <span class='hs-varid'>nodesToExtend</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>session</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-123"></a> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>extendGraph</span> <span class='hs-varid'>session</span>
|
||||||
|
<a name="line-124"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>node</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>nodesToExtend</span>
|
||||||
|
<a name="line-125"></a> <span class='hs-comment'>-- Now that all the nodes are created, run the initializers.</span>
|
||||||
|
<a name="line-126"></a> <span class='hs-varid'>initializers</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varid'>flushInitializers</span>
|
||||||
|
<a name="line-127"></a> <span class='hs-varid'>withSessionWhen</span> <span class='hs-varid'>initializers</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>session</span> <span class='hs-keyglyph'>-></span>
|
||||||
|
<a name="line-128"></a> <span class='hs-varid'>void</span> <span class='hs-varop'>$</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>run</span> <span class='hs-varid'>session</span> <span class='hs-conid'>[]</span> <span class='hs-conid'>[]</span> <span class='hs-layout'>(</span><span class='hs-varid'>toNodeNames</span> <span class='hs-varid'>initializers</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-129"></a>
|
||||||
|
<a name="line-130"></a><a name="buildAnd"></a><span class='hs-comment'>-- | Helper combinator for doing something with the result of a 'Build' action.</span>
|
||||||
|
<a name="line-131"></a><span class='hs-comment'>-- Example usage:</span>
|
||||||
|
<a name="line-132"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-133"></a><span class='hs-comment'>-- > buildAnd run :: Fetchable t a => Build t -> Session a</span>
|
||||||
|
<a name="line-134"></a><span class='hs-definition'>buildAnd</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-135"></a><span class='hs-definition'>buildAnd</span> <span class='hs-varid'>f</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>build</span> <span class='hs-varid'>m</span> <span class='hs-varop'>>>=</span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-136"></a>
|
||||||
|
<a name="line-137"></a><a name="run"></a><span class='hs-comment'>-- | Run a subgraph 't', rendering any dependent nodes that aren't already</span>
|
||||||
|
<a name="line-138"></a><span class='hs-comment'>-- rendered, and fetch the corresponding values for 'a'.</span>
|
||||||
|
<a name="line-139"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-140"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runWithFeeds</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-141"></a>
|
||||||
|
<a name="line-142"></a><a name="runWithFeeds"></a><span class='hs-comment'>-- | Run a subgraph 't', rendering any dependent nodes that aren't already</span>
|
||||||
|
<a name="line-143"></a><span class='hs-comment'>-- rendered, feed the given input values, and fetch the corresponding result</span>
|
||||||
|
<a name="line-144"></a><span class='hs-comment'>-- values for 'a'.</span>
|
||||||
|
<a name="line-145"></a><span class='hs-definition'>runWithFeeds</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Fetchable</span> <span class='hs-varid'>t</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Feed</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-146"></a><span class='hs-definition'>runWithFeeds</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-147"></a> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-148"></a> <span class='hs-comment'>-- Note that this call to "fetch" shouldn't affect the following "extend"</span>
|
||||||
|
<a name="line-149"></a> <span class='hs-comment'>-- call, since all nodes in t and its inputs/deps will be rendered by the</span>
|
||||||
|
<a name="line-150"></a> <span class='hs-comment'>-- above call to getNodes.</span>
|
||||||
|
<a name="line-151"></a> <span class='hs-varid'>fetch</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getFetch</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-152"></a> <span class='hs-varid'>runFetchWithFeeds</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>ns</span> <span class='hs-varid'>fetch</span>
|
||||||
|
<a name="line-153"></a>
|
||||||
|
<a name="line-154"></a><a name="runFetchWithFeeds"></a><span class='hs-definition'>runFetchWithFeeds</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Feed</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Set</span> <span class='hs-conid'>NodeName</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Fetch</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-155"></a><span class='hs-definition'>runFetchWithFeeds</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>target</span> <span class='hs-layout'>(</span><span class='hs-conid'>Fetch</span> <span class='hs-varid'>fetch</span> <span class='hs-varid'>restore</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-156"></a> <span class='hs-varid'>extend</span>
|
||||||
|
<a name="line-157"></a> <span class='hs-varid'>feeds'</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fixFeeds</span> <span class='hs-varid'>feeds</span>
|
||||||
|
<a name="line-158"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>fetchNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>encodeUtf8</span> <span class='hs-varop'><$></span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varid'>fetch</span>
|
||||||
|
<a name="line-159"></a> <span class='hs-varid'>targetNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toNodeNames</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varid'>target</span>
|
||||||
|
<a name="line-160"></a> <span class='hs-varid'>session</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Session</span> <span class='hs-layout'>(</span><span class='hs-varid'>asks</span> <span class='hs-varid'>rawSession</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-161"></a> <span class='hs-varid'>runResult</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>run</span> <span class='hs-varid'>session</span>
|
||||||
|
<a name="line-162"></a> <span class='hs-varid'>feeds'</span>
|
||||||
|
<a name="line-163"></a> <span class='hs-varid'>fetchNames</span>
|
||||||
|
<a name="line-164"></a> <span class='hs-varid'>targetNames</span>
|
||||||
|
<a name="line-165"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>resultTensorsMap</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Map</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>zip</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varid'>fetch</span><span class='hs-layout'>)</span> <span class='hs-varid'>runResult</span>
|
||||||
|
<a name="line-166"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>restore</span> <span class='hs-varid'>resultTensorsMap</span>
|
||||||
|
<a name="line-167"></a>
|
||||||
|
<a name="line-168"></a><a name="toNodeNames"></a><span class='hs-definition'>toNodeNames</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>NodeName</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>ByteString</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-169"></a><span class='hs-definition'>toNodeNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-varid'>encodeUtf8</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unNodeName</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-170"></a>
|
||||||
|
<a name="line-171"></a><a name="run_"></a><span class='hs-comment'>-- | Run a subgraph 't', rendering and extending any dependent nodes that aren't</span>
|
||||||
|
<a name="line-172"></a><span class='hs-comment'>-- already rendered. This behaves like 'run' except that it doesn't do any</span>
|
||||||
|
<a name="line-173"></a><span class='hs-comment'>-- fetches.</span>
|
||||||
|
<a name="line-174"></a><span class='hs-definition'>run_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-175"></a><span class='hs-definition'>run_</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runWithFeeds_</span> <span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-176"></a>
|
||||||
|
<a name="line-177"></a><a name="runWithFeeds_"></a><span class='hs-comment'>-- | Run a subgraph 't', rendering any dependent nodes that aren't already</span>
|
||||||
|
<a name="line-178"></a><span class='hs-comment'>-- rendered, feed the given input values, and fetch the corresponding result</span>
|
||||||
|
<a name="line-179"></a><span class='hs-comment'>-- values for 'a'. This behaves like 'runWithFeeds' except that it doesn't do</span>
|
||||||
|
<a name="line-180"></a><span class='hs-comment'>-- any fetches.</span>
|
||||||
|
<a name="line-181"></a><span class='hs-definition'>runWithFeeds_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Feed</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-182"></a><span class='hs-definition'>runWithFeeds_</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-183"></a> <span class='hs-varid'>ns</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-varop'>$</span> <span class='hs-varid'>getNodes</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-184"></a> <span class='hs-varid'>runFetchWithFeeds</span> <span class='hs-varid'>feeds</span> <span class='hs-varid'>ns</span> <span class='hs-layout'>(</span><span class='hs-varid'>pure</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-185"></a>
|
||||||
|
<a name="line-186"></a><a name="fixFeeds"></a><span class='hs-definition'>fixFeeds</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Feed</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Build</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>ByteString</span><span class='hs-layout'>,</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-187"></a><span class='hs-definition'>fixFeeds</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapM</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Feed</span> <span class='hs-varid'>o</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-layout'>,</span><span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>encodeUtf8</span> <span class='hs-varop'><$></span> <span class='hs-varid'>renderOutput</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-188"></a>
|
||||||
|
<a name="line-189"></a><a name="asyncProdNodes"></a><span class='hs-comment'>-- | Starts a concurrent thread which evaluates the given Nodes</span>
|
||||||
|
<a name="line-190"></a><span class='hs-comment'>-- forever until runSession exits or an exception occurs. Graph</span>
|
||||||
|
<a name="line-191"></a><span class='hs-comment'>-- extension happens synchronously, but the resultant run proceeds as</span>
|
||||||
|
<a name="line-192"></a><span class='hs-comment'>-- a separate thread.</span>
|
||||||
|
<a name="line-193"></a><span class='hs-definition'>asyncProdNodes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Nodes</span> <span class='hs-varid'>t</span>
|
||||||
|
<a name="line-194"></a> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-comment'>-- ^ Node to evaluate concurrently.</span>
|
||||||
|
<a name="line-195"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-196"></a><span class='hs-definition'>asyncProdNodes</span> <span class='hs-varid'>nodes</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||||
|
<a name="line-197"></a> <span class='hs-varid'>target</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>build</span> <span class='hs-layout'>(</span><span class='hs-varid'>getNodes</span> <span class='hs-varid'>nodes</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-198"></a> <span class='hs-varid'>extend</span>
|
||||||
|
<a name="line-199"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>targetNames</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toNodeNames</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varid'>target</span>
|
||||||
|
<a name="line-200"></a> <span class='hs-varid'>state</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>Session</span> <span class='hs-varid'>ask</span>
|
||||||
|
<a name="line-201"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>loop</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>forever</span> <span class='hs-layout'>(</span><span class='hs-varid'>void</span> <span class='hs-layout'>(</span><span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>run</span> <span class='hs-layout'>(</span><span class='hs-varid'>rawSession</span> <span class='hs-varid'>state</span><span class='hs-layout'>)</span> <span class='hs-conid'>[]</span> <span class='hs-conid'>[]</span> <span class='hs-varid'>targetNames</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-202"></a> <span class='hs-varid'>liftIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>asyncCollector</span> <span class='hs-varid'>state</span> <span class='hs-varid'>loop</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
96
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Tensor.html
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Tensor.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE GADTs #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
|
||||||
|
<a name="line-19"></a>
|
||||||
|
<a name="line-20"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-21"></a>
|
||||||
|
<a name="line-22"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>IsString</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-23"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Text</span>
|
||||||
|
<a name="line-24"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-conid'>Lens'</span><span class='hs-layout'>,</span> <span class='hs-conid'>Traversal'</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span><span class='hs-varop'>.</span><span class='hs-conid'>Unchecked</span> <span class='hs-layout'>(</span><span class='hs-varid'>lens</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-26"></a>
|
||||||
|
<a name="line-27"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Output</span> <span class='hs-layout'>(</span><span class='hs-conid'>Output</span><span class='hs-layout'>,</span> <span class='hs-varid'>outputOp</span><span class='hs-layout'>,</span> <span class='hs-varid'>opUnrendered</span><span class='hs-layout'>,</span> <span class='hs-varid'>opAttr</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorData</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-conid'>Attribute</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>FFI</span>
|
||||||
|
<a name="line-30"></a>
|
||||||
|
<a name="line-31"></a><a name="Tensor"></a><span class='hs-comment'>-- | A named output of a TensorFlow operation.</span>
|
||||||
|
<a name="line-32"></a><a name="Tensor"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-33"></a><a name="Tensor"></a><span class='hs-comment'>-- The type parameter @a@ is the type of the elements in the 'Tensor'. The</span>
|
||||||
|
<a name="line-34"></a><a name="Tensor"></a><span class='hs-comment'>-- parameter @v@ is either 'Value' or 'Ref', depending on whether the graph is</span>
|
||||||
|
<a name="line-35"></a><a name="Tensor"></a><span class='hs-comment'>-- treating this op output as an immutable 'Value' or a stateful 'Ref' (e.g., a</span>
|
||||||
|
<a name="line-36"></a><a name="Tensor"></a><span class='hs-comment'>-- variable). Note that a @Tensor Ref@ can be casted into a @Tensor Value@ via</span>
|
||||||
|
<a name="line-37"></a><a name="Tensor"></a><span class='hs-comment'>-- 'value'.</span>
|
||||||
|
<a name="line-38"></a><a name="Tensor"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Tensor</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorKind</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span> <span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-39"></a>
|
||||||
|
<a name="line-40"></a><a name="Value"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Value</span>
|
||||||
|
<a name="line-41"></a><a name="Ref"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Ref</span>
|
||||||
|
<a name="line-42"></a>
|
||||||
|
<a name="line-43"></a><a name="TensorKind"></a><span class='hs-comment'>-- | This class provides a runtime switch on whether a 'Tensor' should be</span>
|
||||||
|
<a name="line-44"></a><a name="TensorKind"></a><span class='hs-comment'>-- treated as a 'Value' or as a 'Ref'.</span>
|
||||||
|
<a name="line-45"></a><a name="TensorKind"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TensorKind</span> <span class='hs-varid'>v</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-conid'>ValueKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorKind</span> <span class='hs-conid'>Value</span>
|
||||||
|
<a name="line-47"></a> <span class='hs-conid'>RefKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorKind</span> <span class='hs-conid'>Ref</span>
|
||||||
|
<a name="line-48"></a>
|
||||||
|
<a name="line-49"></a><a name="tensorKind"></a><span class='hs-definition'>tensorKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorKind</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a><span class='hs-definition'>tensorKind</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-51"></a>
|
||||||
|
<a name="line-52"></a><a name="tensorOutput"></a><span class='hs-definition'>tensorOutput</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-conid'>Output</span>
|
||||||
|
<a name="line-53"></a><span class='hs-definition'>tensorOutput</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-54"></a>
|
||||||
|
<a name="line-55"></a><a name="tensorAttr"></a><span class='hs-comment'>-- TODO: Come up with a better API for handling attributes.</span>
|
||||||
|
<a name="line-56"></a><span class='hs-comment'>-- | Lens for the attributes of a tensor.</span>
|
||||||
|
<a name="line-57"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-58"></a><span class='hs-comment'>-- Only valid if the tensor has not yet been rendered. If the tensor has been</span>
|
||||||
|
<a name="line-59"></a><span class='hs-comment'>-- rendered, the traversal will be over nothing (nothing can be read or</span>
|
||||||
|
<a name="line-60"></a><span class='hs-comment'>-- written).</span>
|
||||||
|
<a name="line-61"></a><span class='hs-definition'>tensorAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Attribute</span> <span class='hs-varid'>attr</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Traversal'</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varid'>attr</span>
|
||||||
|
<a name="line-62"></a><span class='hs-definition'>tensorAttr</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorOutput</span> <span class='hs-varop'>.</span> <span class='hs-varid'>outputOp</span> <span class='hs-varop'>.</span> <span class='hs-varid'>opUnrendered</span> <span class='hs-varop'>.</span> <span class='hs-varid'>opAttr</span> <span class='hs-varid'>x</span>
|
||||||
|
<a name="line-63"></a>
|
||||||
|
<a name="line-64"></a><a name="value"></a><span class='hs-comment'>-- | Cast a 'Tensor *' into a 'Tensor Value'. Common usage is to cast a</span>
|
||||||
|
<a name="line-65"></a><span class='hs-comment'>-- Ref into Value. This behaves like a no-op.</span>
|
||||||
|
<a name="line-66"></a><span class='hs-definition'>value</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-conid'>Value</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-67"></a><span class='hs-definition'>value</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Tensor</span> <span class='hs-conid'>ValueKind</span> <span class='hs-varid'>o</span>
|
||||||
|
<a name="line-68"></a>
|
||||||
|
<a name="line-69"></a><a name="Feed"></a><span class='hs-comment'>-- | A pair of a 'Tensor' and some data that should be fed into that 'Tensor'</span>
|
||||||
|
<a name="line-70"></a><a name="Feed"></a><span class='hs-comment'>-- when running the graph.</span>
|
||||||
|
<a name="line-71"></a><a name="Feed"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Feed</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Feed</span> <span class='hs-conid'>Output</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span>
|
||||||
|
<a name="line-72"></a>
|
||||||
|
<a name="line-73"></a><a name="feed"></a><span class='hs-comment'>-- | Create a 'Feed' for feeding the given data into a 'Tensor' when running</span>
|
||||||
|
<a name="line-74"></a><span class='hs-comment'>-- the graph.</span>
|
||||||
|
<a name="line-75"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-76"></a><span class='hs-comment'>-- Note that if a 'Tensor' is rendered, its identity may change; so feeding the</span>
|
||||||
|
<a name="line-77"></a><span class='hs-comment'>-- rendered 'Tensor' may be different than feeding the original 'Tensor'.</span>
|
||||||
|
<a name="line-78"></a><span class='hs-definition'>feed</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Feed</span>
|
||||||
|
<a name="line-79"></a><span class='hs-definition'>feed</span> <span class='hs-layout'>(</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorData</span> <span class='hs-varid'>td</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Feed</span> <span class='hs-varid'>o</span> <span class='hs-varid'>td</span>
|
||||||
|
<a name="line-80"></a>
|
||||||
|
<a name="line-81"></a><a name="tensorFromName"></a><span class='hs-comment'>-- | Create a 'Tensor' for a given name. This can be used to reference nodes</span>
|
||||||
|
<a name="line-82"></a><span class='hs-comment'>-- in a 'GraphDef' that was loaded via 'addGraphDef'.</span>
|
||||||
|
<a name="line-83"></a><span class='hs-comment'>-- TODO(judahjacobson): add more safety checks here.</span>
|
||||||
|
<a name="line-84"></a><span class='hs-definition'>tensorFromName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorKind</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-85"></a><span class='hs-definition'>tensorFromName</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromString</span> <span class='hs-varop'>.</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
393
docs/haddock/tensorflow-0.1.0.0/src/TensorFlow-Types.html
Normal file
|
@ -0,0 +1,393 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
|
||||||
|
<title>src/TensorFlow/Types.hs</title>
|
||||||
|
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<pre><a name="line-1"></a><span class='hs-comment'>-- Copyright 2016 TensorFlow authors.</span>
|
||||||
|
<a name="line-2"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-3"></a><span class='hs-comment'>-- Licensed under the Apache License, Version 2.0 (the "License");</span>
|
||||||
|
<a name="line-4"></a><span class='hs-comment'>-- you may not use this file except in compliance with the License.</span>
|
||||||
|
<a name="line-5"></a><span class='hs-comment'>-- You may obtain a copy of the License at</span>
|
||||||
|
<a name="line-6"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-7"></a><span class='hs-comment'>-- <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></span>
|
||||||
|
<a name="line-8"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-9"></a><span class='hs-comment'>-- Unless required by applicable law or agreed to in writing, software</span>
|
||||||
|
<a name="line-10"></a><span class='hs-comment'>-- distributed under the License is distributed on an "AS IS" BASIS,</span>
|
||||||
|
<a name="line-11"></a><span class='hs-comment'>-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
|
||||||
|
<a name="line-12"></a><span class='hs-comment'>-- See the License for the specific language governing permissions and</span>
|
||||||
|
<a name="line-13"></a><span class='hs-comment'>-- limitations under the License.</span>
|
||||||
|
<a name="line-14"></a>
|
||||||
|
<a name="line-15"></a><span class='hs-comment'>{-# LANGUAGE ConstraintKinds #-}</span>
|
||||||
|
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE DataKinds #-}</span>
|
||||||
|
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE FlexibleContexts #-}</span>
|
||||||
|
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
|
||||||
|
<a name="line-19"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||||
|
<a name="line-20"></a><span class='hs-comment'>{-# LANGUAGE RankNTypes #-}</span>
|
||||||
|
<a name="line-21"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
|
||||||
|
<a name="line-22"></a><span class='hs-comment'>{-# LANGUAGE TypeFamilies #-}</span>
|
||||||
|
<a name="line-23"></a><span class='hs-comment'>{-# LANGUAGE TypeOperators #-}</span>
|
||||||
|
<a name="line-24"></a><span class='hs-comment'>-- We use UndecidableInstances for type families with recursive definitions</span>
|
||||||
|
<a name="line-25"></a><span class='hs-comment'>-- like "\\". Those instances will terminate since each equation unwraps one</span>
|
||||||
|
<a name="line-26"></a><span class='hs-comment'>-- cons cell of a type-level list.</span>
|
||||||
|
<a name="line-27"></a><span class='hs-comment'>{-# LANGUAGE UndecidableInstances #-}</span>
|
||||||
|
<a name="line-28"></a>
|
||||||
|
<a name="line-29"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
|
||||||
|
<a name="line-30"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>TensorType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorData</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Shape</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>protoShape</span>
|
||||||
|
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Attribute</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-35"></a> <span class='hs-comment'>-- * Type constraints</span>
|
||||||
|
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OneOf</span>
|
||||||
|
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-keyword'>type</span> <span class='hs-layout'>(</span><span class='hs-varop'>/=</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-38"></a> <span class='hs-comment'>-- ** Implementation of constraints</span>
|
||||||
|
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TypeError</span>
|
||||||
|
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ExcludedCase</span>
|
||||||
|
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorTypes</span>
|
||||||
|
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>NoneOf</span>
|
||||||
|
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-keyword'>type</span> <span class='hs-layout'>(</span><span class='hs-varop'>\\</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-44"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Delete</span>
|
||||||
|
<a name="line-45"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>AllTensorTypes</span>
|
||||||
|
<a name="line-46"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-47"></a>
|
||||||
|
<a name="line-48"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Complex</span> <span class='hs-layout'>(</span><span class='hs-conid'>Complex</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-49"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Default</span> <span class='hs-layout'>(</span><span class='hs-varid'>def</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-50"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Int</span> <span class='hs-layout'>(</span><span class='hs-conid'>Int8</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int16</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int32</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-51"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Monoid</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varop'><></span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-52"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Word</span> <span class='hs-layout'>(</span><span class='hs-conid'>Word8</span><span class='hs-layout'>,</span> <span class='hs-conid'>Word16</span><span class='hs-layout'>,</span> <span class='hs-conid'>Word64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Foreign</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span> <span class='hs-layout'>(</span><span class='hs-conid'>Storable</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-54"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>Exts</span> <span class='hs-layout'>(</span><span class='hs-conid'>Constraint</span><span class='hs-layout'>,</span> <span class='hs-conid'>IsList</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span> <span class='hs-layout'>(</span><span class='hs-conid'>Lens'</span><span class='hs-layout'>,</span> <span class='hs-varid'>view</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>&</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'>.~</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-56"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Lens</span><span class='hs-varop'>.</span><span class='hs-conid'>Family2</span><span class='hs-varop'>.</span><span class='hs-conid'>Unchecked</span> <span class='hs-layout'>(</span><span class='hs-varid'>iso</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-57"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Attoparsec</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Atto</span>
|
||||||
|
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-layout'>(</span><span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-59"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>B</span>
|
||||||
|
<a name="line-60"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span> <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-61"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Builder</span>
|
||||||
|
<a name="line-62"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>L</span>
|
||||||
|
<a name="line-63"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>V</span>
|
||||||
|
<a name="line-64"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span><span class='hs-varop'>.</span><span class='hs-conid'>Storable</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>S</span>
|
||||||
|
<a name="line-65"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>AttrValue</span>
|
||||||
|
<a name="line-66"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>AttrValue</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-67"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>AttrValue'ListValue</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-68"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-69"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-70"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>i</span>
|
||||||
|
<a name="line-71"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>s</span>
|
||||||
|
<a name="line-72"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>list</span>
|
||||||
|
<a name="line-73"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>type'</span>
|
||||||
|
<a name="line-74"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>shape</span>
|
||||||
|
<a name="line-75"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tensor</span>
|
||||||
|
<a name="line-76"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-77"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensor</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Tensor</span>
|
||||||
|
<a name="line-78"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>TensorProto</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-79"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>floatVal</span>
|
||||||
|
<a name="line-80"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>doubleVal</span>
|
||||||
|
<a name="line-81"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>intVal</span>
|
||||||
|
<a name="line-82"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>stringVal</span>
|
||||||
|
<a name="line-83"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>int64Val</span>
|
||||||
|
<a name="line-84"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>stringVal</span>
|
||||||
|
<a name="line-85"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>boolVal</span>
|
||||||
|
<a name="line-86"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-87"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorShape</span>
|
||||||
|
<a name="line-88"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>TensorShapeProto</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-89"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>dim</span>
|
||||||
|
<a name="line-90"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>size</span>
|
||||||
|
<a name="line-91"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-92"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Proto</span><span class='hs-varop'>.</span><span class='hs-conid'>Tensorflow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span><span class='hs-varop'>.</span><span class='hs-conid'>Framework</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>DataType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-93"></a>
|
||||||
|
<a name="line-94"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>VarInt</span> <span class='hs-layout'>(</span><span class='hs-varid'>getVarInt</span><span class='hs-layout'>,</span> <span class='hs-varid'>putVarInt</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-95"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>FFI</span>
|
||||||
|
<a name="line-96"></a>
|
||||||
|
<a name="line-97"></a><a name="TensorData"></a><span class='hs-comment'>-- | Data about a tensor that is encoded for the TensorFlow APIs.</span>
|
||||||
|
<a name="line-98"></a><a name="TensorData"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorData</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unTensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span> <span class='hs-layout'>}</span>
|
||||||
|
<a name="line-99"></a>
|
||||||
|
<a name="line-100"></a><a name="TensorData"></a><span class='hs-comment'>-- | The class of scalar types supported by tensorflow.</span>
|
||||||
|
<a name="line-101"></a><a name="TensorData"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-102"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-103"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>DataType</span>
|
||||||
|
<a name="line-104"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>TensorProto</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-105"></a> <span class='hs-comment'>-- | Decode the bytes of a TensorData into a Vector.</span>
|
||||||
|
<a name="line-106"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-107"></a> <span class='hs-comment'>-- | Encode a Vector into a TensorData.</span>
|
||||||
|
<a name="line-108"></a> <span class='hs-comment'>--</span>
|
||||||
|
<a name="line-109"></a> <span class='hs-comment'>-- The values should be in row major order, e.g.,</span>
|
||||||
|
<a name="line-110"></a> <span class='hs-comment'>--</span>
|
||||||
|
<a name="line-111"></a> <span class='hs-comment'>-- element 0: index (0, ..., 0)</span>
|
||||||
|
<a name="line-112"></a> <span class='hs-comment'>-- element 1: index (0, ..., 1)</span>
|
||||||
|
<a name="line-113"></a> <span class='hs-comment'>-- ...</span>
|
||||||
|
<a name="line-114"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Shape</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-115"></a>
|
||||||
|
<a name="line-116"></a><span class='hs-comment'>-- All types, besides ByteString, are encoded as simple arrays and we can use</span>
|
||||||
|
<a name="line-117"></a><span class='hs-comment'>-- Vector.Storable to encode/decode by type casting pointers.</span>
|
||||||
|
<a name="line-118"></a>
|
||||||
|
<a name="line-119"></a><a name="simpleDecode"></a><span class='hs-comment'>-- TODO(fmayle): Assert that the data type matches the return type.</span>
|
||||||
|
<a name="line-120"></a><span class='hs-definition'>simpleDecode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Storable</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-121"></a><span class='hs-definition'>simpleDecode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>convert</span> <span class='hs-varop'>.</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeCast</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorDataBytes</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unTensorData</span>
|
||||||
|
<a name="line-122"></a>
|
||||||
|
<a name="line-123"></a><a name="simpleEncode"></a><span class='hs-definition'>simpleEncode</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>Storable</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-124"></a> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Shape</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>TensorData</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-125"></a><span class='hs-definition'>simpleEncode</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-126"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorData</span> <span class='hs-varop'>.</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span> <span class='hs-varid'>xs</span> <span class='hs-varid'>dt</span> <span class='hs-varop'>.</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeCast</span> <span class='hs-varop'>.</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>convert</span>
|
||||||
|
<a name="line-127"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-128"></a> <span class='hs-varid'>dt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorType</span> <span class='hs-layout'>(</span><span class='hs-varid'>undefined</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-129"></a>
|
||||||
|
<a name="line-130"></a><a name="instance%20TensorType%20Float"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Float</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-131"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_FLOAT</span>
|
||||||
|
<a name="line-132"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_FLOAT_REF</span>
|
||||||
|
<a name="line-133"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>floatVal</span>
|
||||||
|
<a name="line-134"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-135"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-136"></a>
|
||||||
|
<a name="line-137"></a><a name="instance%20TensorType%20Double"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Double</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-138"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_DOUBLE</span>
|
||||||
|
<a name="line-139"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_DOUBLE_REF</span>
|
||||||
|
<a name="line-140"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>doubleVal</span>
|
||||||
|
<a name="line-141"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-142"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-143"></a>
|
||||||
|
<a name="line-144"></a><a name="instance%20TensorType%20Int32"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Int32</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-145"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT32</span>
|
||||||
|
<a name="line-146"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT32_REF</span>
|
||||||
|
<a name="line-147"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>intVal</span>
|
||||||
|
<a name="line-148"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-149"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-150"></a>
|
||||||
|
<a name="line-151"></a><a name="instance%20TensorType%20Int64"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Int64</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-152"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT64</span>
|
||||||
|
<a name="line-153"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT64_REF</span>
|
||||||
|
<a name="line-154"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>int64Val</span>
|
||||||
|
<a name="line-155"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-156"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-157"></a>
|
||||||
|
<a name="line-158"></a><a name="integral"></a><span class='hs-definition'>integral</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>Lens'</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int32</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-159"></a><span class='hs-definition'>integral</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>iso</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fmap</span> <span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-160"></a>
|
||||||
|
<a name="line-161"></a><a name="instance%20TensorType%20Word8"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Word8</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-162"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_UINT8</span>
|
||||||
|
<a name="line-163"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_UINT8_REF</span>
|
||||||
|
<a name="line-164"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>intVal</span> <span class='hs-varop'>.</span> <span class='hs-varid'>integral</span>
|
||||||
|
<a name="line-165"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-166"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-167"></a>
|
||||||
|
<a name="line-168"></a><a name="instance%20TensorType%20Word16"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Word16</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-169"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_UINT16</span>
|
||||||
|
<a name="line-170"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_UINT16_REF</span>
|
||||||
|
<a name="line-171"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>intVal</span> <span class='hs-varop'>.</span> <span class='hs-varid'>integral</span>
|
||||||
|
<a name="line-172"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-173"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-174"></a>
|
||||||
|
<a name="line-175"></a><a name="instance%20TensorType%20Int16"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Int16</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-176"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT16</span>
|
||||||
|
<a name="line-177"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT16_REF</span>
|
||||||
|
<a name="line-178"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>intVal</span> <span class='hs-varop'>.</span> <span class='hs-varid'>integral</span>
|
||||||
|
<a name="line-179"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-180"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-181"></a>
|
||||||
|
<a name="line-182"></a><a name="instance%20TensorType%20Int8"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Int8</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-183"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT8</span>
|
||||||
|
<a name="line-184"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_INT8_REF</span>
|
||||||
|
<a name="line-185"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>intVal</span> <span class='hs-varop'>.</span> <span class='hs-varid'>integral</span>
|
||||||
|
<a name="line-186"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-187"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-188"></a>
|
||||||
|
<a name="line-189"></a><a name="instance%20TensorType%20ByteString"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>ByteString</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-190"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_STRING</span>
|
||||||
|
<a name="line-191"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_STRING_REF</span>
|
||||||
|
<a name="line-192"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>stringVal</span>
|
||||||
|
<a name="line-193"></a> <span class='hs-comment'>-- Encoded data layout (described in third_party/tensorflow/c/c_api.h):</span>
|
||||||
|
<a name="line-194"></a> <span class='hs-comment'>-- table offsets for each element :: [Word64]</span>
|
||||||
|
<a name="line-195"></a> <span class='hs-comment'>-- at each element offset:</span>
|
||||||
|
<a name="line-196"></a> <span class='hs-comment'>-- string length :: VarInt64</span>
|
||||||
|
<a name="line-197"></a> <span class='hs-comment'>-- string data :: [Word8]</span>
|
||||||
|
<a name="line-198"></a> <span class='hs-comment'>-- TODO(fmayle): Benchmark these functions.</span>
|
||||||
|
<a name="line-199"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-varid'>tensorData</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-200"></a> <span class='hs-varid'>either</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>err</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Malformed TF_STRING tensor; "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>err</span><span class='hs-layout'>)</span> <span class='hs-varid'>id</span> <span class='hs-varop'>$</span>
|
||||||
|
<a name="line-201"></a> <span class='hs-keyword'>if</span> <span class='hs-varid'>expected</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>count</span>
|
||||||
|
<a name="line-202"></a> <span class='hs-keyword'>then</span> <span class='hs-conid'>Left</span> <span class='hs-varop'>$</span> <span class='hs-str'>"decodeTensorData for ByteString count mismatch "</span> <span class='hs-varop'>++</span>
|
||||||
|
<a name="line-203"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>expected</span><span class='hs-layout'>,</span> <span class='hs-varid'>count</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-204"></a> <span class='hs-keyword'>else</span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>mapM</span> <span class='hs-varid'>decodeString</span> <span class='hs-layout'>(</span><span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>convert</span> <span class='hs-varid'>offsets</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-205"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-206"></a> <span class='hs-varid'>expected</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>length</span> <span class='hs-varid'>offsets</span>
|
||||||
|
<a name="line-207"></a> <span class='hs-varid'>count</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>product</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorDataDimensions</span>
|
||||||
|
<a name="line-208"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>unTensorData</span> <span class='hs-varid'>tensorData</span>
|
||||||
|
<a name="line-209"></a> <span class='hs-varid'>bytes</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>tensorDataBytes</span> <span class='hs-varop'>$</span> <span class='hs-varid'>unTensorData</span> <span class='hs-varid'>tensorData</span>
|
||||||
|
<a name="line-210"></a> <span class='hs-varid'>offsets</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>take</span> <span class='hs-varid'>count</span> <span class='hs-varop'>$</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeCast</span> <span class='hs-varid'>bytes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-conid'>Vector</span> <span class='hs-conid'>Word64</span>
|
||||||
|
<a name="line-211"></a> <span class='hs-varid'>dataBytes</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-varop'>$</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>toList</span> <span class='hs-varop'>$</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>drop</span> <span class='hs-layout'>(</span><span class='hs-varid'>count</span> <span class='hs-varop'>*</span> <span class='hs-num'>8</span><span class='hs-layout'>)</span> <span class='hs-varid'>bytes</span>
|
||||||
|
<a name="line-212"></a> <span class='hs-varid'>decodeString</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Word64</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Either</span> <span class='hs-conid'>String</span> <span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-213"></a> <span class='hs-varid'>decodeString</span> <span class='hs-varid'>offset</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-214"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>stringDataStart</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>drop</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>offset</span><span class='hs-layout'>)</span> <span class='hs-varid'>dataBytes</span>
|
||||||
|
<a name="line-215"></a> <span class='hs-keyword'>in</span> <span class='hs-conid'>Atto</span><span class='hs-varop'>.</span><span class='hs-varid'>eitherResult</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Atto</span><span class='hs-varop'>.</span><span class='hs-varid'>parse</span> <span class='hs-varid'>stringParser</span> <span class='hs-varid'>stringDataStart</span>
|
||||||
|
<a name="line-216"></a> <span class='hs-varid'>stringParser</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Atto</span><span class='hs-varop'>.</span><span class='hs-conid'>Parser</span> <span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-217"></a> <span class='hs-varid'>stringParser</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getVarInt</span> <span class='hs-varop'>>>=</span> <span class='hs-conid'>Atto</span><span class='hs-varop'>.</span><span class='hs-varid'>take</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromIntegral</span>
|
||||||
|
<a name="line-218"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span> <span class='hs-varid'>vec</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-219"></a> <span class='hs-conid'>TensorData</span> <span class='hs-varop'>$</span> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-conid'>TensorData</span> <span class='hs-varid'>xs</span> <span class='hs-varid'>dt</span> <span class='hs-varid'>byteVector</span>
|
||||||
|
<a name="line-220"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-221"></a> <span class='hs-varid'>dt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorType</span> <span class='hs-layout'>(</span><span class='hs-varid'>undefined</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteString</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-222"></a> <span class='hs-comment'>-- Add a string to an offset table and data blob.</span>
|
||||||
|
<a name="line-223"></a> <span class='hs-varid'>addString</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span><span class='hs-layout'>,</span> <span class='hs-conid'>Builder</span><span class='hs-layout'>,</span> <span class='hs-conid'>Word64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-224"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-225"></a> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>Builder</span><span class='hs-layout'>,</span> <span class='hs-conid'>Builder</span><span class='hs-layout'>,</span> <span class='hs-conid'>Word64</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-226"></a> <span class='hs-varid'>addString</span> <span class='hs-layout'>(</span><span class='hs-varid'>table</span><span class='hs-layout'>,</span> <span class='hs-varid'>strings</span><span class='hs-layout'>,</span> <span class='hs-varid'>offset</span><span class='hs-layout'>)</span> <span class='hs-varid'>str</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-227"></a> <span class='hs-layout'>(</span> <span class='hs-varid'>table</span> <span class='hs-varop'><></span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>word64LE</span> <span class='hs-varid'>offset</span>
|
||||||
|
<a name="line-228"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>strings</span> <span class='hs-varop'><></span> <span class='hs-varid'>lengthBytes</span> <span class='hs-varop'><></span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>byteString</span> <span class='hs-varid'>str</span>
|
||||||
|
<a name="line-229"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>offset</span> <span class='hs-varop'>+</span> <span class='hs-varid'>lengthBytesLen</span> <span class='hs-varop'>+</span> <span class='hs-varid'>strLen</span>
|
||||||
|
<a name="line-230"></a> <span class='hs-layout'>)</span>
|
||||||
|
<a name="line-231"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-232"></a> <span class='hs-varid'>strLen</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>length</span> <span class='hs-varid'>str</span>
|
||||||
|
<a name="line-233"></a> <span class='hs-varid'>lengthBytes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>putVarInt</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-conid'>B</span><span class='hs-varop'>.</span><span class='hs-varid'>length</span> <span class='hs-varid'>str</span>
|
||||||
|
<a name="line-234"></a> <span class='hs-varid'>lengthBytesLen</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-235"></a> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-conid'>L</span><span class='hs-varop'>.</span><span class='hs-varid'>length</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>toLazyByteString</span> <span class='hs-varid'>lengthBytes</span>
|
||||||
|
<a name="line-236"></a> <span class='hs-comment'>-- Encode all strings.</span>
|
||||||
|
<a name="line-237"></a> <span class='hs-layout'>(</span><span class='hs-varid'>table'</span><span class='hs-layout'>,</span> <span class='hs-varid'>strings'</span><span class='hs-layout'>,</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>foldl'</span> <span class='hs-varid'>addString</span> <span class='hs-layout'>(</span><span class='hs-varid'>mempty</span><span class='hs-layout'>,</span> <span class='hs-varid'>mempty</span><span class='hs-layout'>,</span> <span class='hs-num'>0</span><span class='hs-layout'>)</span> <span class='hs-varid'>vec</span>
|
||||||
|
<a name="line-238"></a> <span class='hs-comment'>-- Concat offset table with data.</span>
|
||||||
|
<a name="line-239"></a> <span class='hs-varid'>bytes</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>table'</span> <span class='hs-varop'><></span> <span class='hs-varid'>strings'</span>
|
||||||
|
<a name="line-240"></a> <span class='hs-comment'>-- Convert to Vector Word8.</span>
|
||||||
|
<a name="line-241"></a> <span class='hs-varid'>byteVector</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>S</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-conid'>L</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varop'>$</span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>toLazyByteString</span> <span class='hs-varid'>bytes</span>
|
||||||
|
<a name="line-242"></a>
|
||||||
|
<a name="line-243"></a>
|
||||||
|
<a name="line-244"></a><a name="instance%20TensorType%20Bool"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-conid'>Bool</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-245"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_BOOL</span>
|
||||||
|
<a name="line-246"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_BOOL_REF</span>
|
||||||
|
<a name="line-247"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>boolVal</span>
|
||||||
|
<a name="line-248"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleDecode</span>
|
||||||
|
<a name="line-249"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>simpleEncode</span>
|
||||||
|
<a name="line-250"></a>
|
||||||
|
<a name="line-251"></a><a name="instance%20TensorType%20(Complex%20Float)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-layout'>(</span><span class='hs-conid'>Complex</span> <span class='hs-conid'>Float</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-252"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_COMPLEX64</span>
|
||||||
|
<a name="line-253"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_COMPLEX64</span>
|
||||||
|
<a name="line-254"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Float)"</span>
|
||||||
|
<a name="line-255"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Float)"</span>
|
||||||
|
<a name="line-256"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Float)"</span>
|
||||||
|
<a name="line-257"></a>
|
||||||
|
<a name="line-258"></a><a name="instance%20TensorType%20(Complex%20Double)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>TensorType</span> <span class='hs-layout'>(</span><span class='hs-conid'>Complex</span> <span class='hs-conid'>Double</span><span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-259"></a> <span class='hs-varid'>tensorType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_COMPLEX128</span>
|
||||||
|
<a name="line-260"></a> <span class='hs-varid'>tensorRefType</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>DT_COMPLEX128</span>
|
||||||
|
<a name="line-261"></a> <span class='hs-varid'>tensorVal</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Double)"</span>
|
||||||
|
<a name="line-262"></a> <span class='hs-varid'>decodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Double)"</span>
|
||||||
|
<a name="line-263"></a> <span class='hs-varid'>encodeTensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>error</span> <span class='hs-str'>"TODO (Complex Double)"</span>
|
||||||
|
<a name="line-264"></a>
|
||||||
|
<a name="line-265"></a><a name="Shape"></a><span class='hs-comment'>-- | Shape (dimensions) of a tensor.</span>
|
||||||
|
<a name="line-266"></a><a name="Shape"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>Shape</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Shape</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>deriving</span> <span class='hs-conid'>Show</span>
|
||||||
|
<a name="line-267"></a>
|
||||||
|
<a name="line-268"></a><a name="instance%20IsList%20Shape"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>IsList</span> <span class='hs-conid'>Shape</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-269"></a> <span class='hs-keyword'>type</span> <span class='hs-conid'>Item</span> <span class='hs-conid'>Shape</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Int64</span>
|
||||||
|
<a name="line-270"></a> <span class='hs-varid'>fromList</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Shape</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fromList</span>
|
||||||
|
<a name="line-271"></a> <span class='hs-varid'>toList</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span> <span class='hs-varid'>ss</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>toList</span> <span class='hs-varid'>ss</span>
|
||||||
|
<a name="line-272"></a>
|
||||||
|
<a name="line-273"></a><a name="protoShape"></a><span class='hs-definition'>protoShape</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>TensorShapeProto</span> <span class='hs-conid'>Shape</span>
|
||||||
|
<a name="line-274"></a><span class='hs-definition'>protoShape</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>iso</span> <span class='hs-varid'>protoToShape</span> <span class='hs-varid'>shapeToProto</span>
|
||||||
|
<a name="line-275"></a> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-276"></a> <span class='hs-varid'>protoToShape</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Shape</span> <span class='hs-varop'>.</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-varid'>view</span> <span class='hs-varid'>size</span><span class='hs-layout'>)</span> <span class='hs-varop'>.</span> <span class='hs-varid'>view</span> <span class='hs-varid'>dim</span>
|
||||||
|
<a name="line-277"></a> <span class='hs-varid'>shapeToProto</span> <span class='hs-layout'>(</span><span class='hs-conid'>Shape</span> <span class='hs-varid'>ds</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>dim</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>fmap</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>d</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>def</span> <span class='hs-varop'>&</span> <span class='hs-varid'>size</span> <span class='hs-varop'>.~</span> <span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-varid'>ds</span>
|
||||||
|
<a name="line-278"></a>
|
||||||
|
<a name="line-279"></a>
|
||||||
|
<a name="line-280"></a><a name="Attribute"></a><span class='hs-keyword'>class</span> <span class='hs-conid'>Attribute</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-281"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>AttrValue</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-282"></a>
|
||||||
|
<a name="line-283"></a><a name="instance%20Attribute%20Float"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>Float</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-284"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>f</span>
|
||||||
|
<a name="line-285"></a>
|
||||||
|
<a name="line-286"></a><a name="instance%20Attribute%20ByteString"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>ByteString</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-287"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>s</span>
|
||||||
|
<a name="line-288"></a>
|
||||||
|
<a name="line-289"></a><a name="instance%20Attribute%20Int64"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>Int64</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-290"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>i</span>
|
||||||
|
<a name="line-291"></a>
|
||||||
|
<a name="line-292"></a><a name="instance%20Attribute%20DataType"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>DataType</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-293"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>type'</span>
|
||||||
|
<a name="line-294"></a>
|
||||||
|
<a name="line-295"></a><a name="instance%20Attribute%20TensorProto"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>TensorProto</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-296"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensor</span>
|
||||||
|
<a name="line-297"></a>
|
||||||
|
<a name="line-298"></a><a name="instance%20Attribute%20Bool"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>Bool</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-299"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>b</span>
|
||||||
|
<a name="line-300"></a>
|
||||||
|
<a name="line-301"></a><a name="instance%20Attribute%20Shape"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>Shape</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-302"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>shape</span> <span class='hs-varop'>.</span> <span class='hs-varid'>protoShape</span>
|
||||||
|
<a name="line-303"></a>
|
||||||
|
<a name="line-304"></a><a name="instance%20Attribute%20AttrValue'ListValue"></a><span class='hs-comment'>-- TODO(gnezdo): support generating list(Foo) from [Foo].</span>
|
||||||
|
<a name="line-305"></a><a name="instance%20Attribute%20AttrValue'ListValue"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-conid'>AttrValue'ListValue</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-306"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>list</span>
|
||||||
|
<a name="line-307"></a>
|
||||||
|
<a name="line-308"></a><a name="instance%20Attribute%20%5bDataType%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DataType</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-309"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>list</span> <span class='hs-varop'>.</span> <span class='hs-varid'>type'</span>
|
||||||
|
<a name="line-310"></a>
|
||||||
|
<a name="line-311"></a><a name="instance%20Attribute%20%5bInt64%5d"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Attribute</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Int64</span><span class='hs-keyglyph'>]</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-312"></a> <span class='hs-varid'>attrLens</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>list</span> <span class='hs-varop'>.</span> <span class='hs-varid'>i</span>
|
||||||
|
<a name="line-313"></a>
|
||||||
|
<a name="line-314"></a><a name="OneOf"></a><span class='hs-comment'>-- | A 'Constraint' specifying the possible choices of a 'TensorType'.</span>
|
||||||
|
<a name="line-315"></a><a name="OneOf"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-316"></a><a name="OneOf"></a><span class='hs-comment'>-- We implement a 'Constraint' like @OneOf '[Double, Float] a@ by turning the</span>
|
||||||
|
<a name="line-317"></a><a name="OneOf"></a><span class='hs-comment'>-- natural representation as a conjunction, i.e.,</span>
|
||||||
|
<a name="line-318"></a><a name="OneOf"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-319"></a><a name="OneOf"></a><span class='hs-comment'>-- @</span>
|
||||||
|
<a name="line-320"></a><a name="OneOf"></a><span class='hs-comment'>-- a == Double || a == Float</span>
|
||||||
|
<a name="line-321"></a><a name="OneOf"></a><span class='hs-comment'>-- @</span>
|
||||||
|
<a name="line-322"></a><a name="OneOf"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-323"></a><a name="OneOf"></a><span class='hs-comment'>-- into a disjunction like</span>
|
||||||
|
<a name="line-324"></a><a name="OneOf"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-325"></a><a name="OneOf"></a><span class='hs-comment'>-- @</span>
|
||||||
|
<a name="line-326"></a><a name="OneOf"></a><span class='hs-comment'>-- a \/= Int32 && a \/= Int64 && a \/= ByteString && ...</span>
|
||||||
|
<a name="line-327"></a><a name="OneOf"></a><span class='hs-comment'>-- @</span>
|
||||||
|
<a name="line-328"></a><a name="OneOf"></a><span class='hs-comment'>--</span>
|
||||||
|
<a name="line-329"></a><a name="OneOf"></a><span class='hs-comment'>-- using an enumeration of all the possible 'TensorType's.</span>
|
||||||
|
<a name="line-330"></a><a name="OneOf"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>OneOf</span> <span class='hs-varid'>ts</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-331"></a> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorType</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>TensorTypes</span> <span class='hs-varid'>ts</span><span class='hs-layout'>,</span> <span class='hs-conid'>NoneOf</span> <span class='hs-layout'>(</span><span class='hs-conid'>AllTensorTypes</span> <span class='hs-varop'>\\</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-332"></a>
|
||||||
|
<a name="line-333"></a><a name="TensorTypes"></a><span class='hs-comment'>-- | A 'Constraint' checking that the input is a list of 'TensorType's.</span>
|
||||||
|
<a name="line-334"></a><a name="TensorTypes"></a><span class='hs-comment'>-- Helps improve error messages when using 'OneOf'.</span>
|
||||||
|
<a name="line-335"></a><a name="TensorTypes"></a><span class='hs-keyword'>type</span> <span class='hs-keyword'>family</span> <span class='hs-conid'>TensorTypes</span> <span class='hs-varid'>ts</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Constraint</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-336"></a> <span class='hs-conid'>TensorTypes</span> <span class='hs-chr'>'</span><span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-337"></a> <span class='hs-conid'>TensorTypes</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>TensorType</span> <span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-conid'>TensorTypes</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
|
||||||
|
<a name="line-338"></a>
|
||||||
|
<a name="line-339"></a><span class='hs-comment'>-- | A constraint checking that two types are different.</span>
|
||||||
|
<a name="line-340"></a><span class='hs-keyword'>type</span> <span class='hs-keyword'>family</span> <span class='hs-varid'>a</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Constraint</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-341"></a> <span class='hs-varid'>a</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TypeError</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>~</span> <span class='hs-conid'>ExcludedCase</span>
|
||||||
|
<a name="line-342"></a> <span class='hs-varid'>a</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-343"></a>
|
||||||
|
<a name="line-344"></a><a name="TypeError"></a><span class='hs-comment'>-- | Helper types to produce a reasonable type error message when the Constraint</span>
|
||||||
|
<a name="line-345"></a><a name="TypeError"></a><span class='hs-comment'>-- "a /= a" fails.</span>
|
||||||
|
<a name="line-346"></a><a name="TypeError"></a><span class='hs-comment'>-- TODO(judahjacobson): Use ghc-8's CustomTypeErrors for this.</span>
|
||||||
|
<a name="line-347"></a><a name="TypeError"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TypeError</span> <span class='hs-varid'>a</span>
|
||||||
|
<a name="line-348"></a><a name="ExcludedCase"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ExcludedCase</span>
|
||||||
|
<a name="line-349"></a>
|
||||||
|
<a name="line-350"></a><a name="AllTensorTypes"></a><span class='hs-comment'>-- | An enumeration of all valid 'TensorType's.</span>
|
||||||
|
<a name="line-351"></a><a name="AllTensorTypes"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>AllTensorTypes</span> <span class='hs-keyglyph'>=</span>
|
||||||
|
<a name="line-352"></a> <span class='hs-comment'>-- NOTE: This list should be kept in sync with</span>
|
||||||
|
<a name="line-353"></a> <span class='hs-comment'>-- TensorFlow.OpGen.dtTypeToHaskell.</span>
|
||||||
|
<a name="line-354"></a> <span class='hs-comment'>-- TODO: Add support for Complex Float/Double.</span>
|
||||||
|
<a name="line-355"></a> <span class='hs-chr'>'</span><span class='hs-keyglyph'>[</span> <span class='hs-conid'>Float</span>
|
||||||
|
<a name="line-356"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Double</span>
|
||||||
|
<a name="line-357"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Int8</span>
|
||||||
|
<a name="line-358"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Int16</span>
|
||||||
|
<a name="line-359"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Int32</span>
|
||||||
|
<a name="line-360"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Int64</span>
|
||||||
|
<a name="line-361"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Word8</span>
|
||||||
|
<a name="line-362"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Word16</span>
|
||||||
|
<a name="line-363"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ByteString</span>
|
||||||
|
<a name="line-364"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Bool</span>
|
||||||
|
<a name="line-365"></a> <span class='hs-keyglyph'>]</span>
|
||||||
|
<a name="line-366"></a>
|
||||||
|
<a name="line-367"></a><a name="Delete"></a><span class='hs-comment'>-- | Removes a type from the given list of types.</span>
|
||||||
|
<a name="line-368"></a><a name="Delete"></a><span class='hs-keyword'>type</span> <span class='hs-keyword'>family</span> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>as</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-369"></a> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-chr'>'</span><span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-chr'>'</span><span class='hs-conid'>[]</span>
|
||||||
|
<a name="line-370"></a> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>as</span>
|
||||||
|
<a name="line-371"></a> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-varid'>b</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>b</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-conid'>Delete</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>as</span>
|
||||||
|
<a name="line-372"></a>
|
||||||
|
<a name="line-373"></a><span class='hs-comment'>-- | Takes the difference of two lists of types.</span>
|
||||||
|
<a name="line-374"></a><span class='hs-keyword'>type</span> <span class='hs-keyword'>family</span> <span class='hs-keyword'>as</span> <span class='hs-varop'>\\</span> <span class='hs-varid'>bs</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-375"></a> <span class='hs-keyword'>as</span> <span class='hs-varop'>\\</span> <span class='hs-chr'>'</span><span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>as</span>
|
||||||
|
<a name="line-376"></a> <span class='hs-keyword'>as</span> <span class='hs-varop'>\\</span> <span class='hs-varid'>b</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-varid'>bs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Delete</span> <span class='hs-varid'>b</span> <span class='hs-keyword'>as</span> <span class='hs-varop'>\\</span> <span class='hs-varid'>bs</span>
|
||||||
|
<a name="line-377"></a>
|
||||||
|
<a name="line-378"></a><a name="NoneOf"></a><span class='hs-comment'>-- | A constraint that the type @a@ doesn't appear in the type list @ts@.</span>
|
||||||
|
<a name="line-379"></a><a name="NoneOf"></a><span class='hs-comment'>-- Assumes that @a@ and each of the elements of @ts@ are 'TensorType's.</span>
|
||||||
|
<a name="line-380"></a><a name="NoneOf"></a><span class='hs-keyword'>type</span> <span class='hs-keyword'>family</span> <span class='hs-conid'>NoneOf</span> <span class='hs-varid'>ts</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Constraint</span> <span class='hs-keyword'>where</span>
|
||||||
|
<a name="line-381"></a> <span class='hs-conid'>NoneOf</span> <span class='hs-chr'>'</span><span class='hs-conid'>[]</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>()</span>
|
||||||
|
<a name="line-382"></a> <span class='hs-conid'>NoneOf</span> <span class='hs-layout'>(</span><span class='hs-varid'>t</span> <span class='hs-chr'>'</span><span class='hs-conop'>:</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>/=</span> <span class='hs-varid'>t</span><span class='hs-layout'>,</span> <span class='hs-conid'>NoneOf</span> <span class='hs-varid'>ts</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||||
|
</pre></body>
|
||||||
|
</html>
|
5
docs/haddock/tensorflow-0.1.0.0/src/hscolour.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.hs-keyglyph, .hs-layout {color: red;}
|
||||||
|
.hs-keyword {color: blue;}
|
||||||
|
.hs-comment, .hs-comment a {color: green;}
|
||||||
|
.hs-str, .hs-chr {color: teal;}
|
||||||
|
.hs-keyword, .hs-conid, .hs-varid, .hs-conop, .hs-varop, .hs-num, .hs-cpp, .hs-sel, .hs-definition {}
|
BIN
docs/haddock/tensorflow-0.1.0.0/synopsis.png
Normal file
After Width: | Height: | Size: 11 KiB |
626
docs/haddock/tensorflow-0.1.0.0/tensorflow.txt
Normal file
|
@ -0,0 +1,626 @@
|
||||||
|
-- Hoogle documentation, generated by Haddock
|
||||||
|
-- See Hoogle, http://www.haskell.org/hoogle/
|
||||||
|
|
||||||
|
|
||||||
|
-- | TensorFlow bindings.
|
||||||
|
--
|
||||||
|
-- Please see README.md
|
||||||
|
@package tensorflow
|
||||||
|
@version 0.1.0.0
|
||||||
|
|
||||||
|
|
||||||
|
-- | Originally taken from internal proto-lens code.
|
||||||
|
module TensorFlow.Internal.VarInt
|
||||||
|
|
||||||
|
-- | Decode an unsigned varint.
|
||||||
|
getVarInt :: Parser Word64
|
||||||
|
|
||||||
|
-- | Encode a Word64.
|
||||||
|
putVarInt :: Word64 -> Builder
|
||||||
|
|
||||||
|
module TensorFlow.Internal.FFI
|
||||||
|
data TensorFlowException
|
||||||
|
TensorFlowException :: Code -> Text -> TensorFlowException
|
||||||
|
data Session
|
||||||
|
|
||||||
|
-- | Runs the given action after creating a session with options populated
|
||||||
|
-- by the given optionSetter.
|
||||||
|
withSession :: (SessionOptions -> IO ()) -> ((IO () -> IO ()) -> Session -> IO a) -> IO a
|
||||||
|
extendGraph :: Session -> GraphDef -> IO ()
|
||||||
|
run :: Session -> [(ByteString, TensorData)] -> [ByteString] -> [ByteString] -> IO [TensorData]
|
||||||
|
|
||||||
|
-- | All of the data needed to represent a tensor.
|
||||||
|
data TensorData
|
||||||
|
TensorData :: [Int64] -> !DataType -> !(Vector Word8) -> TensorData
|
||||||
|
[tensorDataDimensions] :: TensorData -> [Int64]
|
||||||
|
[tensorDataType] :: TensorData -> !DataType
|
||||||
|
[tensorDataBytes] :: TensorData -> !(Vector Word8)
|
||||||
|
setSessionConfig :: ConfigProto -> SessionOptions -> IO ()
|
||||||
|
setSessionTarget :: ByteString -> SessionOptions -> IO ()
|
||||||
|
|
||||||
|
-- | Returns the serialized OpList of all OpDefs defined in this address
|
||||||
|
-- space.
|
||||||
|
getAllOpList :: IO ByteString
|
||||||
|
|
||||||
|
-- | Serializes the given msg and provides it as (ptr,len) argument to the
|
||||||
|
-- given action.
|
||||||
|
useProtoAsVoidPtrLen :: (Message msg, Num c) => msg -> (Ptr b -> c -> IO a) -> IO a
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Internal.FFI.TensorData
|
||||||
|
instance GHC.Show.Show TensorFlow.Internal.FFI.TensorData
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Internal.FFI.TensorFlowException
|
||||||
|
instance GHC.Show.Show TensorFlow.Internal.FFI.TensorFlowException
|
||||||
|
instance GHC.Exception.Exception TensorFlow.Internal.FFI.TensorFlowException
|
||||||
|
|
||||||
|
module TensorFlow.Types
|
||||||
|
|
||||||
|
-- | The class of scalar types supported by tensorflow.
|
||||||
|
class TensorType a
|
||||||
|
tensorType :: TensorType a => a -> DataType
|
||||||
|
tensorRefType :: TensorType a => a -> DataType
|
||||||
|
tensorVal :: TensorType a => Lens' TensorProto [a]
|
||||||
|
|
||||||
|
-- | Decode the bytes of a TensorData into a Vector.
|
||||||
|
decodeTensorData :: TensorType a => TensorData a -> Vector a
|
||||||
|
|
||||||
|
-- | Encode a Vector into a TensorData.
|
||||||
|
--
|
||||||
|
-- The values should be in row major order, e.g.,
|
||||||
|
--
|
||||||
|
-- element 0: index (0, ..., 0) element 1: index (0, ..., 1) ...
|
||||||
|
encodeTensorData :: TensorType a => Shape -> Vector a -> TensorData a
|
||||||
|
|
||||||
|
-- | Data about a tensor that is encoded for the TensorFlow APIs.
|
||||||
|
newtype TensorData a
|
||||||
|
TensorData :: TensorData -> TensorData a
|
||||||
|
[unTensorData] :: TensorData a -> TensorData
|
||||||
|
|
||||||
|
-- | Shape (dimensions) of a tensor.
|
||||||
|
newtype Shape
|
||||||
|
Shape :: [Int64] -> Shape
|
||||||
|
protoShape :: Lens' TensorShapeProto Shape
|
||||||
|
class Attribute a
|
||||||
|
attrLens :: Attribute a => Lens' AttrValue a
|
||||||
|
|
||||||
|
-- | A <a>Constraint</a> specifying the possible choices of a
|
||||||
|
-- <a>TensorType</a>.
|
||||||
|
--
|
||||||
|
-- We implement a <a>Constraint</a> like <tt>OneOf '[Double, Float]
|
||||||
|
-- a</tt> by turning the natural representation as a conjunction, i.e.,
|
||||||
|
--
|
||||||
|
-- <pre>
|
||||||
|
-- a == Double || a == Float
|
||||||
|
-- </pre>
|
||||||
|
--
|
||||||
|
-- into a disjunction like
|
||||||
|
--
|
||||||
|
-- <pre>
|
||||||
|
-- a /= Int32 && a /= Int64 && a /= ByteString && ...
|
||||||
|
-- </pre>
|
||||||
|
--
|
||||||
|
-- using an enumeration of all the possible <a>TensorType</a>s.
|
||||||
|
type OneOf ts a = (TensorType a, TensorTypes ts, NoneOf (AllTensorTypes \\ ts) a)
|
||||||
|
|
||||||
|
-- | A constraint checking that two types are different.
|
||||||
|
|
||||||
|
-- | Helper types to produce a reasonable type error message when the
|
||||||
|
-- Constraint "a /= a" fails. TODO(judahjacobson): Use ghc-8's
|
||||||
|
-- CustomTypeErrors for this.
|
||||||
|
data TypeError a
|
||||||
|
data ExcludedCase
|
||||||
|
|
||||||
|
-- | A <a>Constraint</a> checking that the input is a list of
|
||||||
|
-- <a>TensorType</a>s. Helps improve error messages when using
|
||||||
|
-- <a>OneOf</a>.
|
||||||
|
|
||||||
|
-- | A constraint that the type <tt>a</tt> doesn't appear in the type list
|
||||||
|
-- <tt>ts</tt>. Assumes that <tt>a</tt> and each of the elements of
|
||||||
|
-- <tt>ts</tt> are <a>TensorType</a>s.
|
||||||
|
|
||||||
|
-- | Takes the difference of two lists of types.
|
||||||
|
|
||||||
|
-- | Removes a type from the given list of types.
|
||||||
|
|
||||||
|
-- | An enumeration of all valid <a>TensorType</a>s.
|
||||||
|
type AllTensorTypes = '[Float, Double, Int8, Int16, Int32, Int64, Word8, Word16, ByteString, Bool]
|
||||||
|
instance GHC.Show.Show TensorFlow.Types.Shape
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Types.Float
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Types.Double
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Int.Int32
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Int.Int64
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Word.Word8
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Word.Word16
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Int.Int16
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Int.Int8
|
||||||
|
instance TensorFlow.Types.TensorType Data.ByteString.Internal.ByteString
|
||||||
|
instance TensorFlow.Types.TensorType GHC.Types.Bool
|
||||||
|
instance TensorFlow.Types.TensorType (Data.Complex.Complex GHC.Types.Float)
|
||||||
|
instance TensorFlow.Types.TensorType (Data.Complex.Complex GHC.Types.Double)
|
||||||
|
instance GHC.Exts.IsList TensorFlow.Types.Shape
|
||||||
|
instance TensorFlow.Types.Attribute GHC.Types.Float
|
||||||
|
instance TensorFlow.Types.Attribute Data.ByteString.Internal.ByteString
|
||||||
|
instance TensorFlow.Types.Attribute GHC.Int.Int64
|
||||||
|
instance TensorFlow.Types.Attribute Proto.Tensorflow.Core.Framework.Types.DataType
|
||||||
|
instance TensorFlow.Types.Attribute Proto.Tensorflow.Core.Framework.Tensor.TensorProto
|
||||||
|
instance TensorFlow.Types.Attribute GHC.Types.Bool
|
||||||
|
instance TensorFlow.Types.Attribute TensorFlow.Types.Shape
|
||||||
|
instance TensorFlow.Types.Attribute Proto.Tensorflow.Core.Framework.AttrValue.AttrValue'ListValue
|
||||||
|
instance TensorFlow.Types.Attribute [Proto.Tensorflow.Core.Framework.Types.DataType]
|
||||||
|
instance TensorFlow.Types.Attribute [GHC.Int.Int64]
|
||||||
|
|
||||||
|
module TensorFlow.Output
|
||||||
|
|
||||||
|
-- | A type of graph node which has no outputs. These nodes are valuable
|
||||||
|
-- for causing side effects when they are run.
|
||||||
|
newtype ControlNode
|
||||||
|
ControlNode :: Op -> ControlNode
|
||||||
|
[unControlNode] :: ControlNode -> Op
|
||||||
|
|
||||||
|
-- | A device that a node can be assigned to. There's a naming convention
|
||||||
|
-- where the device names are constructed from job and replica names.
|
||||||
|
newtype Device
|
||||||
|
Device :: Text -> Device
|
||||||
|
[deviceName] :: Device -> Text
|
||||||
|
|
||||||
|
-- | The name of a node in the graph. This corresponds to the proto field
|
||||||
|
-- NodeDef.name. Includes the scope prefix (if any) and a unique
|
||||||
|
-- identifier (if the node was implicitly named).
|
||||||
|
newtype NodeName
|
||||||
|
NodeName :: Text -> NodeName
|
||||||
|
[unNodeName] :: NodeName -> Text
|
||||||
|
|
||||||
|
-- | The representation of a node in a TensorFlow graph.
|
||||||
|
data Op
|
||||||
|
|
||||||
|
-- | Properties are fixed, including the device, name, and scope.
|
||||||
|
Rendered :: !NodeDef -> Op
|
||||||
|
|
||||||
|
-- | Properties are not fixed, and may change depending on which context
|
||||||
|
-- this op is rendered in.
|
||||||
|
Unrendered :: !OpDef -> Op
|
||||||
|
|
||||||
|
-- | Traverse on the <a>Unrendered</a> of an <a>Op</a>.
|
||||||
|
--
|
||||||
|
-- Same implementation as _Left.
|
||||||
|
opUnrendered :: Traversal' Op OpDef
|
||||||
|
|
||||||
|
-- | Op definition. This corresponds somewhat to the <a>NodeDef</a> proto.
|
||||||
|
data OpDef
|
||||||
|
OpDef :: !PendingNodeName -> !OpType -> !(Map Text AttrValue) -> [Output] -> [NodeName] -> OpDef
|
||||||
|
[_opName] :: OpDef -> !PendingNodeName
|
||||||
|
[_opType] :: OpDef -> !OpType
|
||||||
|
[_opAttrs] :: OpDef -> !(Map Text AttrValue)
|
||||||
|
[_opInputs] :: OpDef -> [Output]
|
||||||
|
[_opControlInputs] :: OpDef -> [NodeName]
|
||||||
|
opName :: Lens' OpDef PendingNodeName
|
||||||
|
opType :: Lens' OpDef OpType
|
||||||
|
opAttr :: Attribute a => Text -> Lens' OpDef a
|
||||||
|
opInputs :: Lens' OpDef [Output]
|
||||||
|
opControlInputs :: Lens' OpDef [NodeName]
|
||||||
|
|
||||||
|
-- | The type of op of a node in the graph. This corresponds to the proto
|
||||||
|
-- field NodeDef.op.
|
||||||
|
newtype OpType
|
||||||
|
OpType :: Text -> OpType
|
||||||
|
[unOpType] :: OpType -> Text
|
||||||
|
newtype OutputIx
|
||||||
|
OutputIx :: Int -> OutputIx
|
||||||
|
[unOutputIx] :: OutputIx -> Int
|
||||||
|
|
||||||
|
-- | An output of a TensorFlow node.
|
||||||
|
data Output
|
||||||
|
Output :: !OutputIx -> !Op -> Output
|
||||||
|
output :: OutputIx -> Op -> Output
|
||||||
|
outputIndex :: Lens' Output OutputIx
|
||||||
|
outputOp :: Lens' Output Op
|
||||||
|
|
||||||
|
-- | The name specified for an unrendered Op. If an Op has an ImplicitName,
|
||||||
|
-- it will be assigned based on the opType plus a unique identifier. Does
|
||||||
|
-- not contain the "scope" prefix.
|
||||||
|
data PendingNodeName
|
||||||
|
ExplicitName :: !Text -> PendingNodeName
|
||||||
|
ImplicitName :: PendingNodeName
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.Op
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.Op
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.Output
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.Output
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.Output
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.OpDef
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.OpDef
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.NodeName
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.NodeName
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.NodeName
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.PendingNodeName
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.PendingNodeName
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.PendingNodeName
|
||||||
|
instance Data.String.IsString TensorFlow.Output.Device
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.Device
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.Device
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.OutputIx
|
||||||
|
instance GHC.Enum.Enum TensorFlow.Output.OutputIx
|
||||||
|
instance GHC.Num.Num TensorFlow.Output.OutputIx
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.OutputIx
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.OutputIx
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.OpType
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Output.OpType
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Output.OpType
|
||||||
|
instance Data.String.IsString TensorFlow.Output.OpType
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.Device
|
||||||
|
instance GHC.Show.Show TensorFlow.Output.Op
|
||||||
|
instance Data.String.IsString TensorFlow.Output.Output
|
||||||
|
|
||||||
|
module TensorFlow.Tensor
|
||||||
|
|
||||||
|
-- | A named output of a TensorFlow operation.
|
||||||
|
--
|
||||||
|
-- The type parameter <tt>a</tt> is the type of the elements in the
|
||||||
|
-- <a>Tensor</a>. The parameter <tt>v</tt> is either <a>Value</a> or
|
||||||
|
-- <a>Ref</a>, depending on whether the graph is treating this op output
|
||||||
|
-- as an immutable <a>Value</a> or a stateful <a>Ref</a> (e.g., a
|
||||||
|
-- variable). Note that a <tt>Tensor Ref</tt> can be casted into a
|
||||||
|
-- <tt>Tensor Value</tt> via <a>value</a>.
|
||||||
|
data Tensor v a
|
||||||
|
Tensor :: (TensorKind v) -> Output -> Tensor v a
|
||||||
|
data Value
|
||||||
|
data Ref
|
||||||
|
|
||||||
|
-- | This class provides a runtime switch on whether a <a>Tensor</a> should
|
||||||
|
-- be treated as a <a>Value</a> or as a <a>Ref</a>.
|
||||||
|
data TensorKind v
|
||||||
|
ValueKind :: TensorKind Value
|
||||||
|
RefKind :: TensorKind Ref
|
||||||
|
tensorKind :: Lens' (Tensor v a) (TensorKind v)
|
||||||
|
tensorOutput :: Lens' (Tensor v a) Output
|
||||||
|
|
||||||
|
-- | Lens for the attributes of a tensor.
|
||||||
|
--
|
||||||
|
-- Only valid if the tensor has not yet been rendered. If the tensor has
|
||||||
|
-- been rendered, the traversal will be over nothing (nothing can be read
|
||||||
|
-- or written).
|
||||||
|
tensorAttr :: Attribute attr => Text -> Traversal' (Tensor v a) attr
|
||||||
|
|
||||||
|
-- | Cast a 'Tensor *' into a 'Tensor Value'. Common usage is to cast a Ref
|
||||||
|
-- into Value. This behaves like a no-op.
|
||||||
|
value :: Tensor v a -> Tensor Value a
|
||||||
|
|
||||||
|
-- | A pair of a <a>Tensor</a> and some data that should be fed into that
|
||||||
|
-- <a>Tensor</a> when running the graph.
|
||||||
|
data Feed
|
||||||
|
Feed :: Output -> TensorData -> Feed
|
||||||
|
|
||||||
|
-- | Create a <a>Feed</a> for feeding the given data into a <a>Tensor</a>
|
||||||
|
-- when running the graph.
|
||||||
|
--
|
||||||
|
-- Note that if a <a>Tensor</a> is rendered, its identity may change; so
|
||||||
|
-- feeding the rendered <a>Tensor</a> may be different than feeding the
|
||||||
|
-- original <a>Tensor</a>.
|
||||||
|
feed :: Tensor v a -> TensorData a -> Feed
|
||||||
|
|
||||||
|
-- | Create a <a>Tensor</a> for a given name. This can be used to reference
|
||||||
|
-- nodes in a <tt>GraphDef</tt> that was loaded via <tt>addGraphDef</tt>.
|
||||||
|
-- TODO(judahjacobson): add more safety checks here.
|
||||||
|
tensorFromName :: TensorKind v -> Text -> Tensor v a
|
||||||
|
|
||||||
|
module TensorFlow.Build
|
||||||
|
|
||||||
|
-- | A type of graph node which has no outputs. These nodes are valuable
|
||||||
|
-- for causing side effects when they are run.
|
||||||
|
newtype ControlNode
|
||||||
|
ControlNode :: Op -> ControlNode
|
||||||
|
[unControlNode] :: ControlNode -> Op
|
||||||
|
data Unique
|
||||||
|
explicitName :: Text -> PendingNodeName
|
||||||
|
implicitName :: PendingNodeName
|
||||||
|
opDef :: OpType -> OpDef
|
||||||
|
opDefWithName :: PendingNodeName -> OpType -> OpDef
|
||||||
|
opName :: Lens' OpDef PendingNodeName
|
||||||
|
opType :: Lens' OpDef OpType
|
||||||
|
opAttr :: Attribute a => Text -> Lens' OpDef a
|
||||||
|
opInputs :: Lens' OpDef [Output]
|
||||||
|
opControlInputs :: Lens' OpDef [NodeName]
|
||||||
|
data GraphState
|
||||||
|
|
||||||
|
-- | Render a <a>Tensor</a>, fixing its name, scope, device and control
|
||||||
|
-- inputs from the <a>Build</a> context. Also renders any dependencies of
|
||||||
|
-- the <a>Tensor</a> that weren't already rendered.
|
||||||
|
--
|
||||||
|
-- This operation is idempotent; <tt>render >=> render ===
|
||||||
|
-- render</tt>. However, rendering a (previously un-rendered)
|
||||||
|
-- <a>Tensor</a> in two different contexts may result in two different
|
||||||
|
-- <a>Tensor</a>s.
|
||||||
|
render :: Tensor v a -> Build (Tensor v a)
|
||||||
|
|
||||||
|
-- | Render a <a>Tensor</a> and get its node's name.
|
||||||
|
renderNodeName :: Tensor v a -> Build NodeName
|
||||||
|
renderedNodeDefs :: Lens' GraphState (Map NodeName NodeDef)
|
||||||
|
|
||||||
|
-- | An action for building nodes in a TensorFlow graph. Used to manage
|
||||||
|
-- build state internally as part of the <tt>Session</tt> monad.
|
||||||
|
data BuildT m a
|
||||||
|
|
||||||
|
-- | An action for building nodes in a TensorFlow graph.
|
||||||
|
type Build = BuildT Identity
|
||||||
|
|
||||||
|
-- | Registers the given node to be executed before the next <a>run</a>.
|
||||||
|
addInitializer :: ControlNode -> Build ()
|
||||||
|
|
||||||
|
-- | This is Control.Monad.Morph.hoist sans the dependency.
|
||||||
|
hoistBuildT :: (forall a. m a -> n a) -> BuildT m b -> BuildT n b
|
||||||
|
evalBuildT :: Monad m => BuildT m a -> m a
|
||||||
|
runBuildT :: BuildT m a -> m (a, GraphState)
|
||||||
|
|
||||||
|
-- | Produce a GraphDef proto representation of the nodes that are rendered
|
||||||
|
-- in the given <a>Build</a> action.
|
||||||
|
asGraphDef :: Build a -> GraphDef
|
||||||
|
addGraphDef :: GraphDef -> Build ()
|
||||||
|
|
||||||
|
-- | Get all the initializers that have accumulated so far, and clear that
|
||||||
|
-- buffer.
|
||||||
|
flushInitializers :: Monad m => BuildT m [NodeName]
|
||||||
|
|
||||||
|
-- | Get all the NodeDefs that have accumulated so far, and clear that
|
||||||
|
-- buffer.
|
||||||
|
flushNodeBuffer :: Monad m => BuildT m [NodeDef]
|
||||||
|
|
||||||
|
-- | Render the given op if it hasn't been rendered already, and return its
|
||||||
|
-- name.
|
||||||
|
getOrAddOp :: Op -> Build NodeName
|
||||||
|
|
||||||
|
-- | Add a new node for a given <a>OpDef</a>. This is used for making
|
||||||
|
-- "stateful" ops which are not safe to dedup (e.g, "variable" and
|
||||||
|
-- "assign").
|
||||||
|
addNewOp :: OpDef -> Build NodeDef
|
||||||
|
|
||||||
|
-- | Render an <a>Output</a> and return a string representation for the
|
||||||
|
-- TensorFlow foreign APIs.
|
||||||
|
renderOutput :: Output -> Build Text
|
||||||
|
|
||||||
|
-- | Places all nodes rendered in the given <a>Build</a> action on the same
|
||||||
|
-- device as the given Tensor (see also <a>withDevice</a>). Make sure
|
||||||
|
-- that the action has side effects of rendering the desired tensors. A
|
||||||
|
-- pure return would not have the desired effect.
|
||||||
|
colocateWith :: Tensor v b -> Build a -> Build a
|
||||||
|
|
||||||
|
-- | Modify some part of the state, run an action, and restore the state
|
||||||
|
-- after that action is done.
|
||||||
|
withStateLens :: MonadState s m => Lens' s a -> (a -> a) -> m b -> m b
|
||||||
|
|
||||||
|
-- | Set a device for all nodes rendered in the given <a>Build</a> action
|
||||||
|
-- (unless further overridden by another use of withDevice).
|
||||||
|
withDevice :: Maybe Device -> Build a -> Build a
|
||||||
|
|
||||||
|
-- | Prepend a scope to all nodes rendered in the given <a>Build</a>
|
||||||
|
-- action.
|
||||||
|
withNameScope :: Text -> Build a -> Build a
|
||||||
|
|
||||||
|
-- | Add control inputs to all nodes rendered in the given <a>Build</a>
|
||||||
|
-- action.
|
||||||
|
withNodeDependencies :: Set NodeName -> Build a -> Build a
|
||||||
|
|
||||||
|
-- | Records the given summary action in Build for retrieval with
|
||||||
|
-- <a>collectAllSummaries</a>. The summary op is required to produce a
|
||||||
|
-- Summary protocol buffer in string form. For safety, use the
|
||||||
|
-- pre-composed functions: Logging.scalarSummary and
|
||||||
|
-- Logging.histogramSummary.
|
||||||
|
addSummary :: SummaryTensor -> Build ()
|
||||||
|
|
||||||
|
-- | Synonym for the tensors that return serialized Summary proto.
|
||||||
|
type SummaryTensor = Tensor Value ByteString
|
||||||
|
|
||||||
|
-- | Retrieves the summary ops collected thus far. Typically this only
|
||||||
|
-- happens once, but if <a>buildWithSummary</a> is used repeatedly, the
|
||||||
|
-- values accumulate.
|
||||||
|
collectAllSummaries :: Monad m => BuildT m [SummaryTensor]
|
||||||
|
instance GHC.Base.Monad m => Control.Monad.State.Class.MonadState TensorFlow.Build.GraphState (TensorFlow.Build.BuildT m)
|
||||||
|
instance Control.Monad.Trans.Class.MonadTrans TensorFlow.Build.BuildT
|
||||||
|
instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (TensorFlow.Build.BuildT m)
|
||||||
|
instance GHC.Base.Monad m => GHC.Base.Monad (TensorFlow.Build.BuildT m)
|
||||||
|
instance GHC.Base.Monad m => GHC.Base.Applicative (TensorFlow.Build.BuildT m)
|
||||||
|
instance GHC.Base.Functor m => GHC.Base.Functor (TensorFlow.Build.BuildT m)
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Build.PendingNode
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Build.PendingNode
|
||||||
|
instance Data.String.IsString TensorFlow.Build.Scope
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Build.Scope
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Build.Scope
|
||||||
|
instance GHC.Enum.Enum TensorFlow.Build.Unique
|
||||||
|
instance GHC.Classes.Ord TensorFlow.Build.Unique
|
||||||
|
instance GHC.Classes.Eq TensorFlow.Build.Unique
|
||||||
|
instance GHC.Show.Show TensorFlow.Build.Scope
|
||||||
|
|
||||||
|
module TensorFlow.BuildOp
|
||||||
|
|
||||||
|
-- | Class of types that can be used as op outputs.
|
||||||
|
class OpResult a
|
||||||
|
|
||||||
|
-- | Class of types that can be used as op functions.
|
||||||
|
class BuildOp f
|
||||||
|
|
||||||
|
-- | Starts an operation that returns a structured set of tensors
|
||||||
|
-- (singletons or tuples).
|
||||||
|
buildOp :: BuildOp f => OpDef -> f
|
||||||
|
|
||||||
|
-- | Starts an operation that returns a list of tensors.
|
||||||
|
buildListOp :: BuildOp f => [Int64] -> OpDef -> f
|
||||||
|
|
||||||
|
-- | Returns true if all the integers in each tuple are identical. Throws
|
||||||
|
-- an error with a descriptive message if not.
|
||||||
|
eqLengthGuard :: [(String, [(String, Int)])] -> Bool
|
||||||
|
instance GHC.Show.Show TensorFlow.BuildOp.ResultState
|
||||||
|
instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2) => TensorFlow.BuildOp.OpResult (a1, a2)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2, TensorFlow.BuildOp.OpResult a3) => TensorFlow.BuildOp.OpResult (a1, a2, a3)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2, TensorFlow.BuildOp.OpResult a3, TensorFlow.BuildOp.OpResult a4) => TensorFlow.BuildOp.OpResult (a1, a2, a3, a4)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2, TensorFlow.BuildOp.OpResult a3, TensorFlow.BuildOp.OpResult a4, TensorFlow.BuildOp.OpResult a5) => TensorFlow.BuildOp.OpResult (a1, a2, a3, a4, a5)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2, TensorFlow.BuildOp.OpResult a3, TensorFlow.BuildOp.OpResult a4, TensorFlow.BuildOp.OpResult a5, TensorFlow.BuildOp.OpResult a6) => TensorFlow.BuildOp.OpResult (a1, a2, a3, a4, a5, a6)
|
||||||
|
instance TensorFlow.BuildOp.OpResult (TensorFlow.Tensor.Tensor TensorFlow.Tensor.Value a)
|
||||||
|
instance TensorFlow.BuildOp.OpResult (TensorFlow.Tensor.Tensor TensorFlow.Tensor.Ref a)
|
||||||
|
instance TensorFlow.BuildOp.OpResult TensorFlow.Output.ControlNode
|
||||||
|
instance TensorFlow.BuildOp.OpResult a => TensorFlow.BuildOp.OpResult [a]
|
||||||
|
instance TensorFlow.BuildOp.BuildOp TensorFlow.Output.ControlNode
|
||||||
|
instance TensorFlow.BuildOp.BuildOp (TensorFlow.Tensor.Tensor TensorFlow.Tensor.Value a)
|
||||||
|
instance TensorFlow.BuildOp.BuildOp (TensorFlow.Tensor.Tensor TensorFlow.Tensor.Ref a)
|
||||||
|
instance TensorFlow.BuildOp.BuildOp [TensorFlow.Tensor.Tensor TensorFlow.Tensor.Value a]
|
||||||
|
instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2) => TensorFlow.BuildOp.BuildOp (t1, t2)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2, TensorFlow.BuildOp.OpResult t3) => TensorFlow.BuildOp.BuildOp (t1, t2, t3)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2, TensorFlow.BuildOp.OpResult t3, TensorFlow.BuildOp.OpResult t4) => TensorFlow.BuildOp.BuildOp (t1, t2, t3, t4)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2, TensorFlow.BuildOp.OpResult t3, TensorFlow.BuildOp.OpResult t4, TensorFlow.BuildOp.OpResult t5) => TensorFlow.BuildOp.BuildOp (t1, t2, t3, t4, t5)
|
||||||
|
instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2, TensorFlow.BuildOp.OpResult t3, TensorFlow.BuildOp.OpResult t4, TensorFlow.BuildOp.OpResult t5, TensorFlow.BuildOp.OpResult t6) => TensorFlow.BuildOp.BuildOp (t1, t2, t3, t4, t5, t6)
|
||||||
|
instance TensorFlow.BuildOp.OpResult a => TensorFlow.BuildOp.BuildOp (TensorFlow.Build.Build a)
|
||||||
|
instance TensorFlow.BuildOp.BuildOp f => TensorFlow.BuildOp.BuildOp (TensorFlow.Tensor.Tensor v a -> f)
|
||||||
|
instance TensorFlow.BuildOp.BuildOp f => TensorFlow.BuildOp.BuildOp ([TensorFlow.Tensor.Tensor v a] -> f)
|
||||||
|
|
||||||
|
module TensorFlow.Nodes
|
||||||
|
|
||||||
|
-- | Types that contain ops which can be run.
|
||||||
|
class Nodes t
|
||||||
|
getNodes :: Nodes t => t -> Build (Set NodeName)
|
||||||
|
|
||||||
|
-- | Types that tensor representations (e.g. <a>Tensor</a>,
|
||||||
|
-- <a>ControlNode</a>) can be fetched into.
|
||||||
|
--
|
||||||
|
-- Includes collections of tensors (e.g. tuples).
|
||||||
|
class Nodes t => Fetchable t a
|
||||||
|
getFetch :: Fetchable t a => t -> Build (Fetch a)
|
||||||
|
|
||||||
|
-- | Fetch action. Keeps track of what needs to be fetched and how to
|
||||||
|
-- decode the fetched data.
|
||||||
|
data Fetch a
|
||||||
|
Fetch :: Set Text -> (Map Text TensorData -> a) -> Fetch a
|
||||||
|
|
||||||
|
-- | Nodes to fetch
|
||||||
|
[fetches] :: Fetch a -> Set Text
|
||||||
|
|
||||||
|
-- | Function to create an <tt>a</tt> from the fetched data.
|
||||||
|
[fetchRestore] :: Fetch a -> Map Text TensorData -> a
|
||||||
|
nodesUnion :: (Monoid b, Traversable t, Applicative f) => t (f b) -> f b
|
||||||
|
fetchTensorList :: TensorType a => Tensor v a -> Build (Fetch (Shape, [a]))
|
||||||
|
fetchTensorVector :: TensorType a => Tensor v a -> Build (Fetch (Shape, Vector a))
|
||||||
|
newtype Scalar a
|
||||||
|
Scalar :: a -> Scalar a
|
||||||
|
[unScalar] :: Scalar a -> a
|
||||||
|
instance Data.String.IsString a => Data.String.IsString (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Real.RealFrac a => GHC.Real.RealFrac (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Float.RealFloat a => GHC.Float.RealFloat (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Real.Real a => GHC.Real.Real (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Float.Floating a => GHC.Float.Floating (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Real.Fractional a => GHC.Real.Fractional (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Num.Num a => GHC.Num.Num (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Classes.Ord a => GHC.Classes.Ord (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Classes.Eq a => GHC.Classes.Eq (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Show.Show a => GHC.Show.Show (TensorFlow.Nodes.Scalar a)
|
||||||
|
instance GHC.Base.Functor TensorFlow.Nodes.Fetch
|
||||||
|
instance GHC.Base.Applicative TensorFlow.Nodes.Fetch
|
||||||
|
instance (TensorFlow.Nodes.Nodes t1, TensorFlow.Nodes.Nodes t2) => TensorFlow.Nodes.Nodes (t1, t2)
|
||||||
|
instance (TensorFlow.Nodes.Nodes t1, TensorFlow.Nodes.Nodes t2, TensorFlow.Nodes.Nodes t3) => TensorFlow.Nodes.Nodes (t1, t2, t3)
|
||||||
|
instance (TensorFlow.Nodes.Fetchable t1 a1, TensorFlow.Nodes.Fetchable t2 a2) => TensorFlow.Nodes.Fetchable (t1, t2) (a1, a2)
|
||||||
|
instance (TensorFlow.Nodes.Fetchable t1 a1, TensorFlow.Nodes.Fetchable t2 a2, TensorFlow.Nodes.Fetchable t3 a3) => TensorFlow.Nodes.Fetchable (t1, t2, t3) (a1, a2, a3)
|
||||||
|
instance TensorFlow.Nodes.Nodes t => TensorFlow.Nodes.Nodes [t]
|
||||||
|
instance TensorFlow.Nodes.Fetchable t a => TensorFlow.Nodes.Fetchable [t] [a]
|
||||||
|
instance TensorFlow.Nodes.Nodes TensorFlow.Output.ControlNode
|
||||||
|
instance (a ~ ()) => TensorFlow.Nodes.Fetchable TensorFlow.Output.ControlNode a
|
||||||
|
instance TensorFlow.Nodes.Nodes (TensorFlow.Tensor.Tensor v a)
|
||||||
|
instance (TensorFlow.Types.TensorType a, a ~ a') => TensorFlow.Nodes.Fetchable (TensorFlow.Tensor.Tensor v a) (Data.Vector.Vector a')
|
||||||
|
instance (TensorFlow.Types.TensorType a, a ~ a') => TensorFlow.Nodes.Fetchable (TensorFlow.Tensor.Tensor v a) (TensorFlow.Nodes.Scalar a')
|
||||||
|
|
||||||
|
module TensorFlow.ControlFlow
|
||||||
|
|
||||||
|
-- | Modify a <a>Build</a> action, such that all new ops rendered in it
|
||||||
|
-- will depend on the nodes in the first argument.
|
||||||
|
withControlDependencies :: Nodes t => t -> Build a -> Build a
|
||||||
|
|
||||||
|
-- | Create an op that groups multiple operations.
|
||||||
|
--
|
||||||
|
-- When this op finishes, all ops in the input <tt>n</tt> have finished.
|
||||||
|
-- This op has no output.
|
||||||
|
group :: Nodes t => t -> Build ControlNode
|
||||||
|
|
||||||
|
-- | Returns a <a>Tensor</a> with the same shape and contents as the input.
|
||||||
|
identity :: TensorType a => Tensor v a -> Tensor v a
|
||||||
|
|
||||||
|
-- | Does nothing. Only useful as a placeholder for control edges.
|
||||||
|
noOp :: ControlNode
|
||||||
|
|
||||||
|
-- | Returns a <a>Tensor</a> with a given name and the same shape and
|
||||||
|
-- contents as the input.
|
||||||
|
--
|
||||||
|
-- TODO(judahjacobson): This breaks when used with uninitialize
|
||||||
|
-- <tt>Tensor Ref</tt>s, since <tt>RefIdentity</tt> doesn't have
|
||||||
|
-- SetAllowsUninitializedInput(). Look into whether we can change that
|
||||||
|
-- op.
|
||||||
|
named :: TensorType a => Text -> Tensor v a -> Tensor v a
|
||||||
|
|
||||||
|
module TensorFlow.Session
|
||||||
|
data Session a
|
||||||
|
|
||||||
|
-- | Setting of an option for the session (see
|
||||||
|
-- <a>runSessionWithOptions</a>).
|
||||||
|
data SessionOption
|
||||||
|
|
||||||
|
-- | Uses the specified config for the created session.
|
||||||
|
sessionConfig :: ConfigProto -> SessionOption
|
||||||
|
|
||||||
|
-- | Target can be: "local", ip:port, host:port. The set of supported
|
||||||
|
-- factories depends on the linked in libraries. REQUIRES
|
||||||
|
-- "/<i>learning</i>brain/public:tensorflow_remote" dependency for the
|
||||||
|
-- binary.
|
||||||
|
sessionTarget :: ByteString -> SessionOption
|
||||||
|
|
||||||
|
-- | Run <a>Session</a> actions in a new TensorFlow session.
|
||||||
|
runSession :: Session a -> IO a
|
||||||
|
|
||||||
|
-- | Run <a>Session</a> actions in a new TensorFlow session created with
|
||||||
|
-- the given option setter actions (<a>sessionTarget</a>,
|
||||||
|
-- <a>sessionConfig</a>).
|
||||||
|
runSessionWithOptions :: [SessionOption] -> Session a -> IO a
|
||||||
|
|
||||||
|
-- | Lift a <a>Build</a> action into a <a>Session</a>, including any
|
||||||
|
-- explicit op renderings.
|
||||||
|
build :: Build a -> Session a
|
||||||
|
|
||||||
|
-- | Helper combinator for doing something with the result of a
|
||||||
|
-- <a>Build</a> action. Example usage:
|
||||||
|
--
|
||||||
|
-- <pre>
|
||||||
|
-- buildAnd run :: Fetchable t a => Build t -> Session a
|
||||||
|
-- </pre>
|
||||||
|
buildAnd :: (a -> Session b) -> Build a -> Session b
|
||||||
|
|
||||||
|
-- | Lift a <a>Build</a> action into a <a>Session</a>, including any
|
||||||
|
-- explicit op renderings. Returns the merged summary ops which can be
|
||||||
|
-- used for logging, see <a>build</a> for a convenient wrapper.
|
||||||
|
buildWithSummary :: Build a -> Session (a, [SummaryTensor])
|
||||||
|
|
||||||
|
-- | Add all pending rendered nodes to the TensorFlow graph and runs any
|
||||||
|
-- pending initializers.
|
||||||
|
--
|
||||||
|
-- Note that run, runWithFeeds, etc. will all call this function
|
||||||
|
-- implicitly.
|
||||||
|
extend :: Session ()
|
||||||
|
addGraphDef :: GraphDef -> Build ()
|
||||||
|
|
||||||
|
-- | Run a subgraph <tt>t</tt>, rendering any dependent nodes that aren't
|
||||||
|
-- already rendered, and fetch the corresponding values for <tt>a</tt>.
|
||||||
|
run :: Fetchable t a => t -> Session a
|
||||||
|
|
||||||
|
-- | Run a subgraph <tt>t</tt>, rendering any dependent nodes that aren't
|
||||||
|
-- already rendered, feed the given input values, and fetch the
|
||||||
|
-- corresponding result values for <tt>a</tt>.
|
||||||
|
runWithFeeds :: Fetchable t a => [Feed] -> t -> Session a
|
||||||
|
|
||||||
|
-- | Run a subgraph <tt>t</tt>, rendering and extending any dependent nodes
|
||||||
|
-- that aren't already rendered. This behaves like <a>run</a> except that
|
||||||
|
-- it doesn't do any fetches.
|
||||||
|
run_ :: Nodes t => t -> Session ()
|
||||||
|
|
||||||
|
-- | Run a subgraph <tt>t</tt>, rendering any dependent nodes that aren't
|
||||||
|
-- already rendered, feed the given input values, and fetch the
|
||||||
|
-- corresponding result values for <tt>a</tt>. This behaves like
|
||||||
|
-- <a>runWithFeeds</a> except that it doesn't do any fetches.
|
||||||
|
runWithFeeds_ :: Nodes t => [Feed] -> t -> Session ()
|
||||||
|
|
||||||
|
-- | Starts a concurrent thread which evaluates the given Nodes forever
|
||||||
|
-- until runSession exits or an exception occurs. Graph extension happens
|
||||||
|
-- synchronously, but the resultant run proceeds as a separate thread.
|
||||||
|
asyncProdNodes :: Nodes t => t -> Session ()
|
||||||
|
instance Control.Monad.IO.Class.MonadIO TensorFlow.Session.Session
|
||||||
|
instance GHC.Base.Monad TensorFlow.Session.Session
|
||||||
|
instance GHC.Base.Applicative TensorFlow.Session.Session
|
||||||
|
instance GHC.Base.Functor TensorFlow.Session.Session
|
2059
docs/haddock/tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - _)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - _</p><table><tr><td class="src">_Arg</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_Arg">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_HostCast</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_HostCast">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_HostRecv</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_HostRecv">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_HostSend</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_HostSend">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_Recv</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_Recv">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_Retval</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_Retval">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">_Send</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:_Send">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - E)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - E</p><table><tr><td class="src">editDistance</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:editDistance">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">elu</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:elu">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">eluGrad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:eluGrad">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">encodeBase64</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:encodeBase64">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">encodeJpeg</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:encodeJpeg">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">encodePng</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:encodePng">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">enter</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:enter">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">equal</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:equal">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">erf</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:erf">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">erfc</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:erfc">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">exit</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:exit">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">exp</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:exp">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">expandDims</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:expandDims">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">extractGlimpse</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:extractGlimpse">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">extractImagePatches</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:extractImagePatches">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - F)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - F</p><table><tr><td class="src">fact</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fact">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fFT</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fFT">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fFT2D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fFT2D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fFT3D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fFT3D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fIFOQueue</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fIFOQueue">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fill</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fill">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fixedLengthRecordReader</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fixedLengthRecordReader">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fixedUnigramCandidateSampler</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fixedUnigramCandidateSampler">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">floor</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:floor">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fractionalAvgPool</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fractionalAvgPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fractionalAvgPoolGrad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fractionalAvgPoolGrad">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fractionalMaxPool</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fractionalMaxPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fractionalMaxPoolGrad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fractionalMaxPoolGrad">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">fusedResizeAndPadConv2D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:fusedResizeAndPadConv2D">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - G)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - G</p><table><tr><td class="src">gather</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:gather">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">gatherNd</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:gatherNd">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">getSessionHandle</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:getSessionHandle">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">getSessionTensor</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:getSessionTensor">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">greater</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:greater">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">greaterEqual</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:greaterEqual">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - H)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - H</p><table><tr><td class="src">histogramSummary</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:histogramSummary">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">hSVToRGB</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:hSVToRGB">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - I)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - I</p><table><tr><td class="src">identity</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:identity">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">identityReader</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:identityReader">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">iFFT</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:iFFT">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">iFFT2D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:iFFT2D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">iFFT3D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:iFFT3D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">igamma</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:igamma">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">igammac</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:igammac">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">imag</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:imag">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">imageSummary</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:imageSummary">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">immutableConst</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:immutableConst">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">initializeTable</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:initializeTable">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">initializeTableFromTextFile</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:initializeTableFromTextFile">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">inTopK</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:inTopK">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">inv</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:inv">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">invertPermutation</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:invertPermutation">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">invGrad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:invGrad">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">isFinite</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:isFinite">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">isInf</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:isInf">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">isNan</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:isNan">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">isVariableInitialized</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:isVariableInitialized">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - L)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - L</p><table><tr><td class="src">l2Loss</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:l2Loss">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">learnedUnigramCandidateSampler</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:learnedUnigramCandidateSampler">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">less</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:less">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lessEqual</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lessEqual">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lgamma</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lgamma">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">linSpace</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:linSpace">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">listDiff</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:listDiff">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">log</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:log">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">logicalAnd</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:logicalAnd">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">logicalNot</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:logicalNot">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">logicalOr</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:logicalOr">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">logSoftmax</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:logSoftmax">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">logUniformCandidateSampler</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:logUniformCandidateSampler">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lookupTableExport</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lookupTableExport">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lookupTableFind</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lookupTableFind">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lookupTableImport</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lookupTableImport">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lookupTableInsert</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lookupTableInsert">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lookupTableSize</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lookupTableSize">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">loopCond</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:loopCond">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lRN</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lRN">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">lRNGrad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:lRNGrad">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - N)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - N</p><table><tr><td class="src">neg</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:neg">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">negTrain</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:negTrain">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">nextIteration</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:nextIteration">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">nonMaxSuppression</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:nonMaxSuppression">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">noOp</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:noOp">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">notEqual</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:notEqual">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - O)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - O</p><table><tr><td class="src">oneHot</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:oneHot">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - P)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - P</p><table><tr><td class="src">pack</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:pack">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">pad</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:pad">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">paddingFIFOQueue</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:paddingFIFOQueue">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">parameterizedTruncatedNormal</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:parameterizedTruncatedNormal">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">parseTensor</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:parseTensor">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">placeholder</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:placeholder">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">placeholderWithDefault</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:placeholderWithDefault">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">polygamma</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:polygamma">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">pow</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:pow">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">priorityQueue</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:priorityQueue">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">prod</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:prod">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!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/html; charset=UTF-8" /><title>tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops. (Index - Q)</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
|
||||||
|
window.onload = function () {pageLoad();};
|
||||||
|
//]]>
|
||||||
|
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">tensorflow-core-ops-0.1.0.0: Haskell wrappers for Core Tensorflow Ops.</p></div><div id="content"><div id="alphabet"><ul><li><a href="doc-index-A.html">A</a></li><li><a href="doc-index-B.html">B</a></li><li><a href="doc-index-C.html">C</a></li><li><a href="doc-index-D.html">D</a></li><li><a href="doc-index-E.html">E</a></li><li><a href="doc-index-F.html">F</a></li><li><a href="doc-index-G.html">G</a></li><li><a href="doc-index-H.html">H</a></li><li><a href="doc-index-I.html">I</a></li><li><a href="doc-index-L.html">L</a></li><li><a href="doc-index-M.html">M</a></li><li><a href="doc-index-N.html">N</a></li><li><a href="doc-index-O.html">O</a></li><li><a href="doc-index-P.html">P</a></li><li><a href="doc-index-Q.html">Q</a></li><li><a href="doc-index-R.html">R</a></li><li><a href="doc-index-S.html">S</a></li><li><a href="doc-index-T.html">T</a></li><li><a href="doc-index-U.html">U</a></li><li><a href="doc-index-V.html">V</a></li><li><a href="doc-index-W.html">W</a></li><li><a href="doc-index-Z.html">Z</a></li><li><a href="doc-index-95.html">_</a></li><li><a href="doc-index-All.html">All</a></li></ul></div><div id="index"><p class="caption">Index - Q</p><table><tr><td class="src">quantizeAndDequantize</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizeAndDequantize">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">queueClose</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:queueClose">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">queueSize</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:queueSize">TensorFlow.GenOps.Core</a></td></tr></table></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.16.1</p></div></body></html>
|