Update haddocks. (#46)
This commit is contained in:
parent
455e5a83c9
commit
71bdc6f744
|
|
@ -1,4 +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>
|
||||
</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#t:-47--61-">TensorFlow.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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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">HaskellName</td><td> </td></tr><tr><td class="alt">1 (Data Constructor)</td><td class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-ParsedOp.html#v:HaskellName">TensorFlow.OpGen.ParsedOp</a></td></tr><tr><td class="alt">2 (Type/Class)</td><td class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-ParsedOp.html#t:HaskellName">TensorFlow.OpGen.ParsedOp</a></td></tr><tr><td class="src">haskellName</td><td class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-ParsedOp.html#v:haskellName">TensorFlow.OpGen.ParsedOp</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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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">quantizedAvgPool</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedAvgPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedBatchNormWithGlobalNormalization</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedBatchNormWithGlobalNormalization">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedBiasAdd</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedBiasAdd">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedConcat</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedConcat">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedConv2D</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedConv2D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedMatMul</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedMatMul">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedMaxPool</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedMaxPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizeDownAndShrinkRange</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizeDownAndShrinkRange">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedRelu</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedRelu">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedRelu6</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedRelu6">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedReluX</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedReluX">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedReshape</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizedReshape">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizeV2</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:quantizeV2">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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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">unHaskellName</td><td class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-ParsedOp.html#v:unHaskellName">TensorFlow.OpGen.ParsedOp</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:unScalar">TensorFlow.Core</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">unTFName</td><td class="module"><a href="./tensorflow-opgen-0.1.0.0/TensorFlow-OpGen-ParsedOp.html#v:unTFName">TensorFlow.OpGen.ParsedOp</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>
|
||||
|
|
@ -1,4 +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>
|
||||
</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#t:Value">TensorFlow.Core</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:value">TensorFlow.Core</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:ValueKind">TensorFlow.Core</a></td></tr><tr><td class="src">varHandleOp</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:varHandleOp">TensorFlow.GenOps.Core</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">varIsInitializedOp</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:varIsInitializedOp">TensorFlow.GenOps.Core</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>
|
||||
|
|
@ -1,4 +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>
|
||||
</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:withControlDependencies">TensorFlow.Core</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:withDevice">TensorFlow.Core</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>, <a href="./tensorflow-0.1.0.0/TensorFlow-Core.html#v:withNameScope">TensorFlow.Core</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">writeFile</td><td class="module"><a href="./tensorflow-core-ops-0.1.0.0/TensorFlow-GenOps-Core.html#v:writeFile">TensorFlow.GenOps.Core</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>
|
||||
|
|
@ -1,4 +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-nn-0.1.0.0/TensorFlow-NN.html" target="main">TensorFlow.NN</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>
|
||||
</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="./google-shim-0.1.0.0/Google-Test.html" target="main">Google.Test</a></li><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-0.1.0.0/TensorFlow-Core.html" target="main">TensorFlow.Core</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-nn-0.1.0.0/TensorFlow-NN.html" target="main">TensorFlow.NN</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-ParsedOp.html" target="main">TensorFlow.OpGen.ParsedOp</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-test-0.1.0.0/TensorFlow-Test.html" target="main">TensorFlow.Test</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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,9 +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="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 => Text -> <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</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></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</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></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 => Text -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v a -> <a href="TensorFlow-Tensor.html#t:Tensor">Tensor</a> v 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
|
||||
</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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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="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> :: Parser <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> :: Parser <a href="../base-4.8.2.0/Data-Word.html#t:Word64">Word64</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></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>
|
||||
</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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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-Core.html" target="main">TensorFlow.Core</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>
|
||||
|
|
@ -1,4 +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>
|
||||
</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 class="module"><a href="TensorFlow-Core.html">TensorFlow.Core</a></span></li><li><span id="control.n.1.5" class="module collapser" onclick="toggleSection('n.1.5')">Internal</span><ul id="section.n.1.5" 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>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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 class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Output.html#t:ResourceHandle" target="main">ResourceHandle</a> a</p></div></div></body></html>
|
||||
|
|
@ -1,4 +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>
|
||||
</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><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-Session.html#t:Options" target="main">Options</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:sessionTracer" target="main">sessionTracer</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,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>
|
||||
|
|
@ -0,0 +1,222 @@
|
|||
<?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-conid'>Tensor</span> <span class='hs-varid'>v</span> <span class='hs-varop'><$></span> <span class='hs-varid'>recordResult</span>
|
||||
<a name="line-81"></a>
|
||||
<a name="line-82"></a><a name="recordResult"></a><span class='hs-definition'>recordResult</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Result</span> <span class='hs-conid'>Output</span>
|
||||
<a name="line-83"></a><span class='hs-definition'>recordResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-84"></a> <span class='hs-varid'>o</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>ask</span>
|
||||
<a name="line-85"></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-86"></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-87"></a> <span class='hs-varid'>return</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-88"></a>
|
||||
<a name="line-89"></a><a name="instance%20OpResult%20(ResourceHandle%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>OpResult</span> <span class='hs-layout'>(</span><span class='hs-conid'>ResourceHandle</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-conid'>ResourceHandle</span> <span class='hs-varop'><$></span> <span class='hs-varid'>recordResult</span>
|
||||
<a name="line-91"></a>
|
||||
<a name="line-92"></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-93"></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-94"></a>
|
||||
<a name="line-95"></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-96"></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-97"></a>
|
||||
<a name="line-98"></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-99"></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-100"></a>
|
||||
<a name="line-101"></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-102"></a> <span class='hs-varid'>toResult</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-103"></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-104"></a> <span class='hs-keyword'>case</span> <span class='hs-varid'>ns</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-105"></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-106"></a> <span class='hs-str'>"Likely misuse of buildListOp."</span>
|
||||
<a name="line-107"></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-108"></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-109"></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-110"></a>
|
||||
<a name="line-111"></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-112"></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-113"></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-114"></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-115"></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-116"></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-117"></a>
|
||||
<a name="line-118"></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-119"></a><span class='hs-comment'>-- the same scope.</span>
|
||||
<a name="line-120"></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-121"></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-122"></a>
|
||||
<a name="line-123"></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-124"></a><span class='hs-comment'>-- identical ops.</span>
|
||||
<a name="line-125"></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-126"></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-127"></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-128"></a>
|
||||
<a name="line-129"></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-130"></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-131"></a>
|
||||
<a name="line-132"></a><a name="OpDef"></a><span class='hs-comment'>-- | Class of types that can be used as op functions.</span>
|
||||
<a name="line-133"></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-134"></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-135"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef</span>
|
||||
<a name="line-136"></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-137"></a> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>f</span>
|
||||
<a name="line-138"></a>
|
||||
<a name="line-139"></a><a name="buildOp"></a><span class='hs-comment'>-- | Starts an operation that returns a structured set of tensors</span>
|
||||
<a name="line-140"></a><span class='hs-comment'>-- (singletons or tuples).</span>
|
||||
<a name="line-141"></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-142"></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-143"></a>
|
||||
<a name="line-144"></a><a name="buildListOp"></a><span class='hs-comment'>-- | Starts an operation that returns a list of tensors.</span>
|
||||
<a name="line-145"></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-146"></a> <span class='hs-comment'>-- ^ Cardinality of the corresponding list of tensors output.</span>
|
||||
<a name="line-147"></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-148"></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-149"></a>
|
||||
<a name="line-150"></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-151"></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-152"></a>
|
||||
<a name="line-153"></a><a name="instance%20BuildOp%20(ResourceHandle%20a)"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>BuildOp</span> <span class='hs-layout'>(</span><span class='hs-conid'>ResourceHandle</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</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(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-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(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-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%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-163"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-164"></a>
|
||||
<a name="line-165"></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-166"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-167"></a>
|
||||
<a name="line-168"></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-169"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-170"></a>
|
||||
<a name="line-171"></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-172"></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-173"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-174"></a>
|
||||
<a name="line-175"></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-176"></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-177"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-178"></a>
|
||||
<a name="line-179"></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-180"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t2</span>
|
||||
<a name="line-181"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t3</span>
|
||||
<a name="line-182"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t4</span>
|
||||
<a name="line-183"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t5</span>
|
||||
<a name="line-184"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpResult</span> <span class='hs-varid'>t6</span>
|
||||
<a name="line-185"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-186"></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-187"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pureResult</span>
|
||||
<a name="line-188"></a>
|
||||
<a name="line-189"></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-190"></a> <span class='hs-varid'>buildOp'</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildResult</span>
|
||||
<a name="line-191"></a>
|
||||
<a name="line-192"></a><a name="instance%20BuildOp%20(ResourceHandle%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'>ResourceHandle</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-193"></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-layout'>(</span><span class='hs-conid'>ResourceHandle</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</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-conop'>:</span> <span class='hs-varid'>ts</span><span class='hs-layout'>)</span>
|
||||
<a name="line-194"></a>
|
||||
<a name="line-195"></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-196"></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-197"></a>
|
||||
<a name="line-198"></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-199"></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-200"></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-201"></a>
|
||||
<a name="line-202"></a><a name="eqLengthGuard"></a><span class='hs-comment'>-- | Returns true if all the integers in each tuple are identical.</span>
|
||||
<a name="line-203"></a><span class='hs-comment'>-- Throws an error with a descriptive message if not.</span>
|
||||
<a name="line-204"></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-205"></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-206"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-207"></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-208"></a> <span class='hs-comment'>-- The next line has (== 1) . length . nub in disguise</span>
|
||||
<a name="line-209"></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-210"></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-211"></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>
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
<?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/Core.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 ExplicitNamespaces #-}</span>
|
||||
<a name="line-16"></a>
|
||||
<a name="line-17"></a><span class='hs-comment'>-- | The core functionality of TensorFlow.</span>
|
||||
<a name="line-18"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-19"></a><span class='hs-comment'>-- Unless you are defining ops, you do not need to import other modules from</span>
|
||||
<a name="line-20"></a><span class='hs-comment'>-- this package.</span>
|
||||
<a name="line-21"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-22"></a><span class='hs-comment'>-- Basic ops are provided in the tensorflow-ops and tensorflow-core-ops</span>
|
||||
<a name="line-23"></a><span class='hs-comment'>-- packages.</span>
|
||||
<a name="line-24"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span>
|
||||
<a name="line-25"></a> <span class='hs-layout'>(</span> <span class='hs-comment'>-- * Session</span>
|
||||
<a name="line-26"></a> <span class='hs-conid'>Session</span>
|
||||
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Options</span>
|
||||
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sessionConfig</span>
|
||||
<a name="line-29"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sessionTarget</span>
|
||||
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sessionTracer</span>
|
||||
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>runSession</span>
|
||||
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>runSessionWithOptions</span>
|
||||
<a name="line-33"></a> <span class='hs-comment'>-- ** Building graphs</span>
|
||||
<a name="line-34"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>build</span>
|
||||
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>buildAnd</span>
|
||||
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>buildWithSummary</span>
|
||||
<a name="line-37"></a> <span class='hs-comment'>-- ** Running graphs</span>
|
||||
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Fetchable</span>
|
||||
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Scalar</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Nodes</span>
|
||||
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>run</span>
|
||||
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>run_</span>
|
||||
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Feed</span>
|
||||
<a name="line-44"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>feed</span>
|
||||
<a name="line-45"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>runWithFeeds</span>
|
||||
<a name="line-46"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>runWithFeeds_</span>
|
||||
<a name="line-47"></a> <span class='hs-comment'>-- ** Async</span>
|
||||
<a name="line-48"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>asyncProdNodes</span>
|
||||
<a name="line-49"></a>
|
||||
<a name="line-50"></a> <span class='hs-comment'>-- * Build</span>
|
||||
<a name="line-51"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Build</span>
|
||||
<a name="line-52"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>BuildT</span>
|
||||
<a name="line-53"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>render</span>
|
||||
<a name="line-54"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>asGraphDef</span>
|
||||
<a name="line-55"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>addGraphDef</span>
|
||||
<a name="line-56"></a>
|
||||
<a name="line-57"></a> <span class='hs-comment'>-- * Tensor</span>
|
||||
<a name="line-58"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ControlNode</span>
|
||||
<a name="line-59"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Tensor</span>
|
||||
<a name="line-60"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Value</span>
|
||||
<a name="line-61"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Ref</span>
|
||||
<a name="line-62"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorKind</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-63"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tensorAttr</span>
|
||||
<a name="line-64"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>value</span>
|
||||
<a name="line-65"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tensorFromName</span>
|
||||
<a name="line-66"></a> <span class='hs-comment'>-- ** Element types</span>
|
||||
<a name="line-67"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorData</span>
|
||||
<a name="line-68"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TensorType</span><span class='hs-layout'>(</span><span class='hs-varid'>decodeTensorData</span><span class='hs-layout'>,</span> <span class='hs-varid'>encodeTensorData</span><span class='hs-layout'>)</span>
|
||||
<a name="line-69"></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-70"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OneOf</span>
|
||||
<a name="line-71"></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-72"></a>
|
||||
<a name="line-73"></a> <span class='hs-comment'>-- * Op combinators</span>
|
||||
<a name="line-74"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>colocateWith</span>
|
||||
<a name="line-75"></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-76"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withDevice</span>
|
||||
<a name="line-77"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withNameScope</span>
|
||||
<a name="line-78"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>named</span>
|
||||
<a name="line-79"></a> <span class='hs-comment'>-- ** Dependencies</span>
|
||||
<a name="line-80"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withControlDependencies</span>
|
||||
<a name="line-81"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>group</span>
|
||||
<a name="line-82"></a> <span class='hs-comment'>-- ** Misc</span>
|
||||
<a name="line-83"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>identity</span>
|
||||
<a name="line-84"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>noOp</span>
|
||||
<a name="line-85"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-86"></a>
|
||||
<a name="line-87"></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-88"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>ControlFlow</span>
|
||||
<a name="line-89"></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-90"></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-91"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Session</span>
|
||||
<a name="line-92"></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-93"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,268 @@
|
|||
<?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><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</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'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span>
|
||||
<a name="line-20"></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-21"></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-22"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withSession</span>
|
||||
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>extendGraph</span>
|
||||
<a name="line-24"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>run</span>
|
||||
<a name="line-25"></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-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>setSessionConfig</span>
|
||||
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>setSessionTarget</span>
|
||||
<a name="line-28"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>getAllOpList</span>
|
||||
<a name="line-29"></a> <span class='hs-comment'>-- * Internal helper.</span>
|
||||
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>useProtoAsVoidPtrLen</span>
|
||||
<a name="line-31"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-32"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-33"></a>
|
||||
<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'>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-35"></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-36"></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-37"></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-38"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Bits</span> <span class='hs-layout'>(</span><span class='hs-conid'>Bits</span><span class='hs-layout'>,</span> <span class='hs-varid'>toIntegralSized</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'>Int</span> <span class='hs-layout'>(</span><span class='hs-conid'>Int64</span><span class='hs-layout'>)</span>
|
||||
<a name="line-40"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromMaybe</span><span class='hs-layout'>)</span>
|
||||
<a name="line-41"></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-42"></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-43"></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-44"></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-45"></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-46"></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-47"></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-48"></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-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'>ByteString</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>B</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'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>T</span>
|
||||
<a name="line-51"></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-52"></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-53"></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-54"></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'>Concurrent</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>ForeignC</span>
|
||||
<a name="line-55"></a>
|
||||
<a name="line-56"></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-57"></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-58"></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-59"></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-60"></a>
|
||||
<a name="line-61"></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-62"></a>
|
||||
<a name="line-63"></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-64"></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-65"></a>
|
||||
<a name="line-66"></a><a name="instance%20Exception%20TensorFlowException%20--%20%7c%20All%20of%20the%20data%20needed%20to%20represent%20a%20tensor.%20data%20TensorData%20=%20TensorData%20%7b%20tensorDataDimensions%20::%20%5bInt64%5d%20,%20tensorDataType%20::%20!DataType%20,%20tensorDataBytes%20::%20!(S.Vector%20Word8)%20%7d%20deriving%20(Show,%20Eq)%20--%20%7c%20Runs%20the%20given%20action%20after%20creating%20a%20session%20with%20options%20--%20populated%20by%20the%20given%20optionSetter.%20withSession%20::%20(Raw.SessionOptions%20-%3e%20IO%20())%20-%3e%20((IO%20()%20-%3e%20IO%20())%20-%3e%20Raw.Session%20-%3e%20IO%20a)%20--%20%5e%20The%20action%20can%20spawn%20concurrent%20tasks%20which%20will%20--%20be%20canceled%20before%20withSession%20returns.%20-%3e%20IO%20a%20withSession%20optionSetter%20action%20=%20do%20drain%20%3c-%20newMVar%20%5b%5d%20let%20cleanup%20s%20=%20--%20Closes%20the%20session%20to%20nudge%20the%20pending%20run%20calls%20to%20fail%20and%20exit.%20finally%20(checkStatus%20(Raw.closeSession%20s))%20$%20do%20runners%20%3c-%20takeMVar%20drain%20--%20Collects%20all%20runners%20before%20deleting%20the%20session.%20mapM_%20shutDownRunner%20runners%20checkStatus%20(Raw.deleteSession%20s)%20bracket%20Raw.newSessionOptions%20Raw.deleteSessionOptions%20$%20%5coptions%20-%3e%20do%20optionSetter%20options%20bracket%20(checkStatus%20(Raw.newSession%20options))%20cleanup%20(action%20(asyncCollector%20drain))%20asyncCollector%20::%20MVar%20%5bAsync%20()%5d%20-%3e%20IO%20()%20-%3e%20IO%20()%20asyncCollector%20drain%20runner%20=%20modifyMVarMasked_%20drain%20launchAndRecord"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Exception</span> <span class='hs-conid'>TensorFlowException</span>
|
||||
<a name="line-67"></a>
|
||||
<a name="line-68"></a><a name="TensorData"></a><span class='hs-comment'>-- | All of the data needed to represent a tensor.</span>
|
||||
<a name="line-69"></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-70"></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-71"></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-72"></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-73"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-74"></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-75"></a>
|
||||
<a name="line-76"></a><a name="withSession"></a><span class='hs-comment'>-- | Runs the given action after creating a session with options</span>
|
||||
<a name="line-77"></a><span class='hs-comment'>-- populated by the given optionSetter.</span>
|
||||
<a name="line-78"></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-79"></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-80"></a> <span class='hs-comment'>-- ^ The action can spawn concurrent tasks which will</span>
|
||||
<a name="line-81"></a> <span class='hs-comment'>-- be canceled before withSession returns.</span>
|
||||
<a name="line-82"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-83"></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-84"></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-85"></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-86"></a> <span class='hs-comment'>-- Closes the session to nudge the pending run calls to fail and exit.</span>
|
||||
<a name="line-87"></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-88"></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-89"></a> <span class='hs-comment'>-- Collects all runners before deleting the session.</span>
|
||||
<a name="line-90"></a> <span class='hs-varid'>mapM_</span> <span class='hs-varid'>shutDownRunner</span> <span class='hs-varid'>runners</span>
|
||||
<a name="line-91"></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-92"></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-93"></a> <span class='hs-varid'>optionSetter</span> <span class='hs-varid'>options</span>
|
||||
<a name="line-94"></a> <span class='hs-varid'>bracket</span>
|
||||
<a name="line-95"></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-96"></a> <span class='hs-varid'>cleanup</span>
|
||||
<a name="line-97"></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-98"></a>
|
||||
<a name="line-99"></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-100"></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-101"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-102"></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-103"></a>
|
||||
<a name="line-104"></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-105"></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-106"></a> <span class='hs-varid'>cancel</span> <span class='hs-varid'>r</span>
|
||||
<a name="line-107"></a> <span class='hs-comment'>-- TODO(gnezdo): manage exceptions better than print.</span>
|
||||
<a name="line-108"></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-109"></a>
|
||||
<a name="line-110"></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-111"></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-112"></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-113"></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-114"></a>
|
||||
<a name="line-115"></a>
|
||||
<a name="line-116"></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-117"></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-118"></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-119"></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-120"></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-121"></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-122"></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-123"></a> <span class='hs-comment'>-- Use mask to avoid leaking input tensors before they are passed to 'run'</span>
|
||||
<a name="line-124"></a> <span class='hs-comment'>-- and output tensors before they are passed to 'createTensorData'.</span>
|
||||
<a name="line-125"></a> <span class='hs-varid'>mask_</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-126"></a> <span class='hs-comment'>-- Feeds</span>
|
||||
<a name="line-127"></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-128"></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-129"></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-130"></a> <span class='hs-comment'>-- Fetches.</span>
|
||||
<a name="line-131"></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-132"></a> <span class='hs-comment'>-- tensorOuts is an array of null Tensor pointers that will be filled</span>
|
||||
<a name="line-133"></a> <span class='hs-comment'>-- by the call to Raw.run.</span>
|
||||
<a name="line-134"></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-135"></a> <span class='hs-comment'>-- Targets.</span>
|
||||
<a name="line-136"></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-137"></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-138"></a> <span class='hs-varid'>session</span>
|
||||
<a name="line-139"></a> <span class='hs-varid'>nullPtr</span>
|
||||
<a name="line-140"></a> <span class='hs-varid'>feedNames</span> <span class='hs-varid'>cFeedTensors</span> <span class='hs-layout'>(</span><span class='hs-varid'>safeConvert</span> <span class='hs-varid'>feedsLen</span><span class='hs-layout'>)</span>
|
||||
<a name="line-141"></a> <span class='hs-varid'>fetchNames</span> <span class='hs-varid'>tensorOuts</span> <span class='hs-layout'>(</span><span class='hs-varid'>safeConvert</span> <span class='hs-varid'>fetchesLen</span><span class='hs-layout'>)</span>
|
||||
<a name="line-142"></a> <span class='hs-varid'>ctargets</span> <span class='hs-layout'>(</span><span class='hs-varid'>safeConvert</span> <span class='hs-varid'>targetsLen</span><span class='hs-layout'>)</span>
|
||||
<a name="line-143"></a> <span class='hs-varid'>nullPtr</span>
|
||||
<a name="line-144"></a> <span class='hs-varid'>mapM_</span> <span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteTensor</span> <span class='hs-varid'>feedTensors</span>
|
||||
<a name="line-145"></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-146"></a> <span class='hs-varid'>mapM</span> <span class='hs-varid'>createTensorData</span> <span class='hs-varid'>outTensors</span>
|
||||
<a name="line-147"></a>
|
||||
<a name="line-148"></a>
|
||||
<a name="line-149"></a><span class='hs-comment'>-- Internal.</span>
|
||||
<a name="line-150"></a>
|
||||
<a name="line-151"></a>
|
||||
<a name="line-152"></a><a name="safeConvert"></a><span class='hs-comment'>-- | Same as 'fromIntegral', but throws an error if conversion is "lossy".</span>
|
||||
<a name="line-153"></a><span class='hs-definition'>safeConvert</span> <span class='hs-keyglyph'>::</span>
|
||||
<a name="line-154"></a> <span class='hs-keyword'>forall</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span><span class='hs-varop'>.</span> <span class='hs-layout'>(</span><span class='hs-conid'>Show</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-conid'>Bits</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>Bits</span> <span class='hs-varid'>b</span><span class='hs-layout'>,</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>a</span><span class='hs-layout'>,</span> <span class='hs-conid'>Integral</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span>
|
||||
<a name="line-155"></a> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>b</span>
|
||||
<a name="line-156"></a><span class='hs-definition'>safeConvert</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-157"></a> <span class='hs-varid'>fromMaybe</span>
|
||||
<a name="line-158"></a> <span class='hs-layout'>(</span><span class='hs-varid'>error</span> <span class='hs-layout'>(</span><span class='hs-str'>"Failed to convert "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>x</span> <span class='hs-varop'>++</span> <span class='hs-str'>", got "</span> <span class='hs-varop'>++</span>
|
||||
<a name="line-159"></a> <span class='hs-varid'>show</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>b</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-160"></a> <span class='hs-layout'>(</span><span class='hs-varid'>toIntegralSized</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span>
|
||||
<a name="line-161"></a>
|
||||
<a name="line-162"></a>
|
||||
<a name="line-163"></a><a name="withStringList"></a><span class='hs-comment'>-- | Use a list of ByteString as a list of CString.</span>
|
||||
<a name="line-164"></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-165"></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-166"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-167"></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-168"></a> <span class='hs-comment'>-- TODO(fmayle): Is it worth using unsafeAsCString here?</span>
|
||||
<a name="line-169"></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-170"></a>
|
||||
<a name="line-171"></a>
|
||||
<a name="line-172"></a><a name="withStringArrayLen"></a><span class='hs-comment'>-- | Use a list of ByteString as an array of CString.</span>
|
||||
<a name="line-173"></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-174"></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-175"></a>
|
||||
<a name="line-176"></a>
|
||||
<a name="line-177"></a><a name="createRawTensor"></a><span class='hs-comment'>-- | Create a Raw.Tensor from a TensorData.</span>
|
||||
<a name="line-178"></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-179"></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-180"></a> <span class='hs-varid'>withArrayLen</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>safeConvert</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-181"></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-182"></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-183"></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-184"></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-185"></a> <span class='hs-varid'>cdims</span> <span class='hs-layout'>(</span><span class='hs-varid'>safeConvert</span> <span class='hs-varid'>cdimsLen</span><span class='hs-layout'>)</span>
|
||||
<a name="line-186"></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'>safeConvert</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
|
||||
<a name="line-187"></a> <span class='hs-varid'>tensorDeallocFunPtr</span> <span class='hs-varid'>nullPtr</span>
|
||||
<a name="line-188"></a>
|
||||
<a name="line-189"></a><a name="tensorDeallocFunPtr"></a><span class='hs-comment'>{-# NOINLINE tensorDeallocFunPtr #-}</span>
|
||||
<a name="line-190"></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-191"></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-192"></a>
|
||||
<a name="line-193"></a><a name="createTensorData"></a><span class='hs-comment'>-- | Create a TensorData from a Raw.Tensor.</span>
|
||||
<a name="line-194"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-195"></a><span class='hs-comment'>-- Takes ownership of the Raw.Tensor.</span>
|
||||
<a name="line-196"></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-197"></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-198"></a> <span class='hs-comment'>-- Read dimensions.</span>
|
||||
<a name="line-199"></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-200"></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-201"></a> <span class='hs-comment'>-- Read type.</span>
|
||||
<a name="line-202"></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-203"></a> <span class='hs-comment'>-- Read data.</span>
|
||||
<a name="line-204"></a> <span class='hs-varid'>len</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>safeConvert</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-205"></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-206"></a> <span class='hs-varid'>fp</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>ForeignC</span><span class='hs-varop'>.</span><span class='hs-varid'>newForeignPtr</span> <span class='hs-varid'>bytes</span> <span class='hs-layout'>(</span><span class='hs-conid'>Raw</span><span class='hs-varop'>.</span><span class='hs-varid'>deleteTensor</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span>
|
||||
<a name="line-207"></a> <span class='hs-keyword'>let</span> <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'>unsafeFromForeignPtr0</span> <span class='hs-varid'>fp</span> <span class='hs-varid'>len</span>
|
||||
<a name="line-208"></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'>safeConvert</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-209"></a>
|
||||
<a name="line-210"></a><a name="checkStatus"></a><span class='hs-comment'>-- | Runs the given action which does FFI calls updating a provided</span>
|
||||
<a name="line-211"></a><span class='hs-comment'>-- status object. If the status is not OK it is thrown as</span>
|
||||
<a name="line-212"></a><span class='hs-comment'>-- TensorFlowException.</span>
|
||||
<a name="line-213"></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-214"></a><span class='hs-definition'>checkStatus</span> <span class='hs-varid'>fn</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-215"></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-216"></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-217"></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-218"></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-219"></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-220"></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-221"></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-222"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>result</span>
|
||||
<a name="line-223"></a>
|
||||
<a name="line-224"></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-225"></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-226"></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-227"></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-228"></a>
|
||||
<a name="line-229"></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-230"></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-231"></a>
|
||||
<a name="line-232"></a><a name="useProtoAsVoidPtrLen"></a><span class='hs-comment'>-- | Serializes the given msg and provides it as (ptr,len) argument</span>
|
||||
<a name="line-233"></a><span class='hs-comment'>-- to the given action.</span>
|
||||
<a name="line-234"></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'>Integral</span> <span class='hs-varid'>c</span><span class='hs-layout'>,</span> <span class='hs-conid'>Show</span> <span class='hs-varid'>c</span><span class='hs-layout'>,</span> <span class='hs-conid'>Bits</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=></span>
|
||||
<a name="line-235"></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-236"></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-237"></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'>safeConvert</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
|
||||
<a name="line-238"></a>
|
||||
<a name="line-239"></a><a name="getAllOpList"></a><span class='hs-comment'>-- | Returns the serialized OpList of all OpDefs defined in this</span>
|
||||
<a name="line-240"></a><span class='hs-comment'>-- address space.</span>
|
||||
<a name="line-241"></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-242"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-243"></a> <span class='hs-varid'>foreignPtr</span> <span class='hs-keyglyph'><-</span>
|
||||
<a name="line-244"></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-245"></a> <span class='hs-comment'>-- Makes a copy because it is more reliable than eviscerating</span>
|
||||
<a name="line-246"></a> <span class='hs-comment'>-- Buffer to steal its memory (including custom deallocator).</span>
|
||||
<a name="line-247"></a> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>foreignPtr</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-248"></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-249"></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-250"></a> <span class='hs-varop'><*></span> <span class='hs-layout'>(</span><span class='hs-varid'>safeConvert</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-251"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-252"></a> <span class='hs-varid'>checkCall</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-253"></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-254"></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-255"></a> <span class='hs-varid'>return</span> <span class='hs-varid'>p</span>
|
||||
<a name="line-256"></a> <span class='hs-varid'>exception</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TensorFlowException</span>
|
||||
<a name="line-257"></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>
|
||||
|
|
@ -0,0 +1,522 @@
|
|||
<?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-osx/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="CInt64"></a><span class='hs-comment'>-- A synonym for the int64_t type, which is used in the TensorFlow API.</span>
|
||||
<a name="line-318"></a><a name="CInt64"></a><span class='hs-comment'>-- On some platforms it's `long`; on others (e.g., Mac OS X) it's `long long`;</span>
|
||||
<a name="line-319"></a><a name="CInt64"></a><span class='hs-comment'>-- and as far as Haskell is concerned, those are distinct types (`CLong` vs</span>
|
||||
<a name="line-320"></a><a name="CInt64"></a><span class='hs-comment'>-- `CLLong`).</span>
|
||||
<a name="line-321"></a><a name="CInt64"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>CInt64</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'>CLLong</span><span class='hs-layout'>)</span>
|
||||
<a name="line-322"></a><span class='hs-comment'>{-# LINE 70 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-323"></a>
|
||||
<a name="line-324"></a>
|
||||
<a name="line-325"></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-326"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt64</span> <span class='hs-comment'>-- dimensions array</span>
|
||||
<a name="line-327"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CInt</span> <span class='hs-comment'>-- num dimensions</span>
|
||||
<a name="line-328"></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-329"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>CULong</span> <span class='hs-comment'>-- data len</span>
|
||||
<a name="line-330"></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-331"></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-332"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Tensor</span>
|
||||
<a name="line-333"></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-334"></a>
|
||||
<a name="line-335"></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-336"></a><span class='hs-definition'>deleteTensor</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteTensor</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="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-341"></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-342"></a>
|
||||
<a name="line-343"></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-344"></a><span class='hs-definition'>numDims</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNumDims</span>
|
||||
<a name="line-345"></a><span class='hs-comment'>{-# LINE 89 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-346"></a>
|
||||
<a name="line-347"></a>
|
||||
<a name="line-348"></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'>CInt64</span>
|
||||
<a name="line-349"></a><span class='hs-definition'>dim</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDim</span>
|
||||
<a name="line-350"></a><span class='hs-comment'>{-# LINE 92 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-351"></a>
|
||||
<a name="line-352"></a>
|
||||
<a name="line-353"></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-354"></a><span class='hs-definition'>tensorByteSize</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFTensorByteSize</span>
|
||||
<a name="line-355"></a><span class='hs-comment'>{-# LINE 95 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-356"></a>
|
||||
<a name="line-357"></a>
|
||||
<a name="line-358"></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-359"></a><span class='hs-definition'>tensorData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFTensorData</span>
|
||||
<a name="line-360"></a><span class='hs-comment'>{-# LINE 98 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-361"></a>
|
||||
<a name="line-362"></a>
|
||||
<a name="line-363"></a>
|
||||
<a name="line-364"></a><a name="SessionOptions"></a><span class='hs-comment'>-- Session Options.</span>
|
||||
<a name="line-365"></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-366"></a><span class='hs-comment'>{-# LINE 102 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-367"></a>
|
||||
<a name="line-368"></a>
|
||||
<a name="line-369"></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-370"></a><span class='hs-definition'>newSessionOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewSessionOptions</span>
|
||||
<a name="line-371"></a><span class='hs-comment'>{-# LINE 105 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-372"></a>
|
||||
<a name="line-373"></a>
|
||||
<a name="line-374"></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-375"></a><span class='hs-definition'>setTarget</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFSetTarget</span>
|
||||
<a name="line-376"></a><span class='hs-comment'>{-# LINE 108 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-377"></a>
|
||||
<a name="line-378"></a>
|
||||
<a name="line-379"></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-380"></a><span class='hs-definition'>setConfig</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFSetConfig</span>
|
||||
<a name="line-381"></a><span class='hs-comment'>{-# LINE 111 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-382"></a>
|
||||
<a name="line-383"></a>
|
||||
<a name="line-384"></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-385"></a><span class='hs-definition'>deleteSessionOptions</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteSessionOptions</span>
|
||||
<a name="line-386"></a><span class='hs-comment'>{-# LINE 114 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-387"></a>
|
||||
<a name="line-388"></a>
|
||||
<a name="line-389"></a>
|
||||
<a name="line-390"></a><a name="Session"></a><span class='hs-comment'>-- Session.</span>
|
||||
<a name="line-391"></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-392"></a><span class='hs-comment'>{-# LINE 118 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-393"></a>
|
||||
<a name="line-394"></a>
|
||||
<a name="line-395"></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-396"></a><span class='hs-definition'>newSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFNewDeprecatedSession</span>
|
||||
<a name="line-397"></a><span class='hs-comment'>{-# LINE 121 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-398"></a>
|
||||
<a name="line-399"></a>
|
||||
<a name="line-400"></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-401"></a><span class='hs-definition'>closeSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFCloseDeprecatedSession</span>
|
||||
<a name="line-402"></a><span class='hs-comment'>{-# LINE 124 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-403"></a>
|
||||
<a name="line-404"></a>
|
||||
<a name="line-405"></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-406"></a><span class='hs-definition'>deleteSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFDeleteDeprecatedSession</span>
|
||||
<a name="line-407"></a><span class='hs-comment'>{-# LINE 127 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-408"></a>
|
||||
<a name="line-409"></a>
|
||||
<a name="line-410"></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-411"></a><span class='hs-definition'>extendGraph</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFExtendGraph</span>
|
||||
<a name="line-412"></a><span class='hs-comment'>{-# LINE 130 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-413"></a>
|
||||
<a name="line-414"></a>
|
||||
<a name="line-415"></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-416"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BufferPtr</span> <span class='hs-comment'>-- RunOptions proto.</span>
|
||||
<a name="line-417"></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-418"></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-419"></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-420"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>BufferPtr</span> <span class='hs-comment'>-- RunMetadata proto.</span>
|
||||
<a name="line-421"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Status</span>
|
||||
<a name="line-422"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||
<a name="line-423"></a><span class='hs-definition'>run</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFRun</span>
|
||||
<a name="line-424"></a><span class='hs-comment'>{-# LINE 140 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-425"></a>
|
||||
<a name="line-426"></a>
|
||||
<a name="line-427"></a><a name="TensorDeallocFn"></a><span class='hs-comment'>-- FFI helpers.</span>
|
||||
<a name="line-428"></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-429"></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-430"></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-431"></a>
|
||||
<a name="line-432"></a>
|
||||
<a name="line-433"></a><a name="getAllOpList"></a><span class='hs-comment'>-- | Get the OpList of all OpDefs defined in this address space.</span>
|
||||
<a name="line-434"></a><span class='hs-comment'>-- Returns a BufferPtr, ownership of which is transferred to the caller</span>
|
||||
<a name="line-435"></a><span class='hs-comment'>-- (and can be freed using deleteBuffer).</span>
|
||||
<a name="line-436"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-437"></a><span class='hs-comment'>-- The data in the buffer will be the serialized OpList proto for ops registered</span>
|
||||
<a name="line-438"></a><span class='hs-comment'>-- in this address space.</span>
|
||||
<a name="line-439"></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-440"></a><span class='hs-definition'>getAllOpList</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tFGetAllOpList</span>
|
||||
<a name="line-441"></a><span class='hs-comment'>{-# LINE 155 "src/TensorFlow/Internal/Raw.chs" #-}</span>
|
||||
<a name="line-442"></a>
|
||||
<a name="line-443"></a>
|
||||
<a name="line-444"></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-445"></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-446"></a>
|
||||
<a name="line-447"></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-448"></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-449"></a>
|
||||
<a name="line-450"></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-451"></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-452"></a>
|
||||
<a name="line-453"></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-454"></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-455"></a>
|
||||
<a name="line-456"></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-457"></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-458"></a>
|
||||
<a name="line-459"></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-460"></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-461"></a>
|
||||
<a name="line-462"></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-463"></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'>CLLong</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-464"></a>
|
||||
<a name="line-465"></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-466"></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-467"></a>
|
||||
<a name="line-468"></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-469"></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-470"></a>
|
||||
<a name="line-471"></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-472"></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-473"></a>
|
||||
<a name="line-474"></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-475"></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'>CLLong</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-476"></a>
|
||||
<a name="line-477"></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-478"></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-479"></a>
|
||||
<a name="line-480"></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-481"></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-482"></a>
|
||||
<a name="line-483"></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-484"></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-485"></a>
|
||||
<a name="line-486"></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-487"></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-488"></a>
|
||||
<a name="line-489"></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-490"></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-491"></a>
|
||||
<a name="line-492"></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-493"></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-494"></a>
|
||||
<a name="line-495"></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_NewDeprecatedSession"</span>
|
||||
<a name="line-496"></a> <span class='hs-varid'>tFNewDeprecatedSession</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-497"></a>
|
||||
<a name="line-498"></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_CloseDeprecatedSession"</span>
|
||||
<a name="line-499"></a> <span class='hs-varid'>tFCloseDeprecatedSession</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-500"></a>
|
||||
<a name="line-501"></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_DeleteDeprecatedSession"</span>
|
||||
<a name="line-502"></a> <span class='hs-varid'>tFDeleteDeprecatedSession</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-503"></a>
|
||||
<a name="line-504"></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-505"></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-506"></a>
|
||||
<a name="line-507"></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-508"></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-509"></a>
|
||||
<a name="line-510"></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-511"></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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
<?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 OverloadedStrings #-}</span>
|
||||
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</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'>Output</span>
|
||||
<a name="line-21"></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-22"></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-23"></a> <span class='hs-comment'>-- * Ops</span>
|
||||
<a name="line-24"></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-25"></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-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>opUnrendered</span>
|
||||
<a name="line-27"></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-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-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-34"></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-35"></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-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>output</span>
|
||||
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputIndex</span>
|
||||
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputOp</span>
|
||||
<a name="line-39"></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-40"></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>
|
||||
<a name="line-41"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-42"></a>
|
||||
<a name="line-43"></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-44"></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-45"></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-46"></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-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'>Text</span>
|
||||
<a name="line-48"></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-49"></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-50"></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-51"></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-52"></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-53"></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-54"></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-55"></a>
|
||||
<a name="line-56"></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-57"></a><a name="ControlNode"></a><span class='hs-comment'>-- valuable for causing side effects when they are run.</span>
|
||||
<a name="line-58"></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-59"></a>
|
||||
<a name="line-60"></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-61"></a><a name="OpType"></a><span class='hs-comment'>-- NodeDef.op.</span>
|
||||
<a name="line-62"></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-63"></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-64"></a>
|
||||
<a name="line-65"></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-66"></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-67"></a>
|
||||
<a name="line-68"></a><a name="Output"></a><span class='hs-comment'>-- | An output of a TensorFlow node.</span>
|
||||
<a name="line-69"></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-70"></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-71"></a>
|
||||
<a name="line-72"></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-73"></a><span class='hs-definition'>output</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Output</span>
|
||||
<a name="line-74"></a>
|
||||
<a name="line-75"></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-76"></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-77"></a>
|
||||
<a name="line-78"></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-79"></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-80"></a>
|
||||
<a name="line-81"></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-82"></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-83"></a>
|
||||
<a name="line-84"></a><a name="Device"></a><span class='hs-comment'>-- | A device that a node can be assigned to.</span>
|
||||
<a name="line-85"></a><a name="Device"></a><span class='hs-comment'>-- There's a naming convention where the device names</span>
|
||||
<a name="line-86"></a><a name="Device"></a><span class='hs-comment'>-- are constructed from job and replica names.</span>
|
||||
<a name="line-87"></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-88"></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-89"></a>
|
||||
<a name="line-90"></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-91"></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-92"></a>
|
||||
<a name="line-93"></a><a name="Op"></a><span class='hs-comment'>-- | The representation of a node in a TensorFlow graph.</span>
|
||||
<a name="line-94"></a><a name="Op"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Op</span>
|
||||
<a name="line-95"></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-96"></a> <span class='hs-comment'>-- device, name, and scope.</span>
|
||||
<a name="line-97"></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-98"></a> <span class='hs-comment'>-- on which context this op is rendered in.</span>
|
||||
<a name="line-99"></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-100"></a>
|
||||
<a name="line-101"></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-102"></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-103"></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-104"></a>
|
||||
<a name="line-105"></a><a name="opUnrendered"></a><span class='hs-comment'>-- | Traverse on the 'Unrendered' of an 'Op'.</span>
|
||||
<a name="line-106"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-107"></a><span class='hs-comment'>-- Same implementation as _Left.</span>
|
||||
<a name="line-108"></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-109"></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-110"></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-111"></a>
|
||||
<a name="line-112"></a><a name="OpDef"></a><span class='hs-comment'>-- | Op definition. This corresponds somewhat to the 'NodeDef' proto.</span>
|
||||
<a name="line-113"></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-114"></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-115"></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-116"></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-117"></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-118"></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-119"></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-120"></a>
|
||||
<a name="line-121"></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-122"></a><a name="PendingNodeName"></a><span class='hs-comment'>-- ImplicitName, it will be assigned based on the opType plus a</span>
|
||||
<a name="line-123"></a><a name="PendingNodeName"></a><span class='hs-comment'>-- unique identifier. Does not contain the "scope" prefix.</span>
|
||||
<a name="line-124"></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-125"></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-126"></a>
|
||||
<a name="line-127"></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-128"></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-129"></a><a name="NodeName"></a><span class='hs-comment'>-- (if the node was implicitly named).</span>
|
||||
<a name="line-130"></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-131"></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-132"></a>
|
||||
<a name="line-133"></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-134"></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-135"></a>
|
||||
<a name="line-136"></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-137"></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-138"></a>
|
||||
<a name="line-139"></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-140"></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-141"></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-142"></a> <span class='hs-varop'>.</span> <span class='hs-varid'>attrLens</span>
|
||||
<a name="line-143"></a>
|
||||
<a name="line-144"></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-145"></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-146"></a>
|
||||
<a name="line-147"></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-148"></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-149"></a>
|
||||
<a name="line-150"></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-151"></a><a name="instance%20IsString%20Output"></a><span class='hs-comment'>-- code into a Build function</span>
|
||||
<a name="line-152"></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-153"></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-154"></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> <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-keyglyph'>::</span> <span class='hs-conid'>String</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>
|
||||
<a name="line-155"></a> <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-156"></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-157"></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-158"></a>
|
||||
<a name="line-159"></a>
|
||||
<a name="line-160"></a><a name="ResourceHandle"></a><span class='hs-comment'>-- | Opaque handle to a mutable resource in the graph. Typical such</span>
|
||||
<a name="line-161"></a><a name="ResourceHandle"></a><span class='hs-comment'>-- resources are variables. The type parameter corresponds to the</span>
|
||||
<a name="line-162"></a><a name="ResourceHandle"></a><span class='hs-comment'>-- dtype of the tensor held in the variable.</span>
|
||||
<a name="line-163"></a><a name="ResourceHandle"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>ResourceHandle</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ResourceHandle</span> <span class='hs-conid'>Output</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,240 @@
|
|||
<?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 OverloadedStrings #-}</span>
|
||||
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE Rank2Types #-}</span>
|
||||
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE ScopedTypeVariables #-}</span>
|
||||
<a name="line-19"></a><span class='hs-comment'>{-# LANGUAGE TupleSections #-}</span>
|
||||
<a name="line-20"></a>
|
||||
<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'>Session</span> <span class='hs-layout'>(</span>
|
||||
<a name="line-22"></a> <span class='hs-conid'>Session</span><span class='hs-layout'>,</span>
|
||||
<a name="line-23"></a> <span class='hs-conid'>Options</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'>sessionTracer</span><span class='hs-layout'>,</span>
|
||||
<a name="line-27"></a> <span class='hs-varid'>runSession</span><span class='hs-layout'>,</span>
|
||||
<a name="line-28"></a> <span class='hs-varid'>runSessionWithOptions</span><span class='hs-layout'>,</span>
|
||||
<a name="line-29"></a> <span class='hs-varid'>build</span><span class='hs-layout'>,</span>
|
||||
<a name="line-30"></a> <span class='hs-varid'>buildAnd</span><span class='hs-layout'>,</span>
|
||||
<a name="line-31"></a> <span class='hs-varid'>buildWithSummary</span><span class='hs-layout'>,</span>
|
||||
<a name="line-32"></a> <span class='hs-varid'>extend</span><span class='hs-layout'>,</span>
|
||||
<a name="line-33"></a> <span class='hs-varid'>addGraphDef</span><span class='hs-layout'>,</span>
|
||||
<a name="line-34"></a> <span class='hs-varid'>run</span><span class='hs-layout'>,</span>
|
||||
<a name="line-35"></a> <span class='hs-varid'>runWithFeeds</span><span class='hs-layout'>,</span>
|
||||
<a name="line-36"></a> <span class='hs-varid'>run_</span><span class='hs-layout'>,</span>
|
||||
<a name="line-37"></a> <span class='hs-varid'>runWithFeeds_</span><span class='hs-layout'>,</span>
|
||||
<a name="line-38"></a> <span class='hs-varid'>asyncProdNodes</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-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-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'>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-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'>Class</span> <span class='hs-layout'>(</span><span class='hs-varid'>lift</span><span class='hs-layout'>)</span>
|
||||
<a name="line-44"></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-45"></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-46"></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-conid'>Default</span><span class='hs-layout'>,</span> <span class='hs-varid'>def</span><span class='hs-layout'>)</span>
|
||||
<a name="line-47"></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-48"></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-49"></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'>showMessage</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'>Set</span> <span class='hs-layout'>(</span><span class='hs-conid'>Set</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'>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-52"></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-53"></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-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'>Graph</span> <span class='hs-layout'>(</span><span class='hs-varid'>node</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><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-57"></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-58"></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-59"></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-60"></a>
|
||||
<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'>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-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'>Set</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Set</span>
|
||||
<a name="line-64"></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-65"></a>
|
||||
<a name="line-66"></a><a name="Tracer"></a><span class='hs-comment'>-- | An action for logging.</span>
|
||||
<a name="line-67"></a><a name="Tracer"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>Tracer</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-conid'>Builder</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
|
||||
<a name="line-68"></a>
|
||||
<a name="line-69"></a><a name="SessionState"></a><span class='hs-comment'>-- Common state threaded through the session.</span>
|
||||
<a name="line-70"></a><a name="SessionState"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>SessionState</span>
|
||||
<a name="line-71"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SessionState</span> <span class='hs-layout'>{</span>
|
||||
<a name="line-72"></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-73"></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-74"></a> <span class='hs-comment'>-- ^ Starts the given action concurrently.</span>
|
||||
<a name="line-75"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tracer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tracer</span>
|
||||
<a name="line-76"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-77"></a>
|
||||
<a name="line-78"></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-79"></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-80"></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-81"></a>
|
||||
<a name="line-82"></a><a name="runSession"></a><span class='hs-comment'>-- | Run 'Session' actions in a new TensorFlow session.</span>
|
||||
<a name="line-83"></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-84"></a><span class='hs-definition'>runSession</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>runSessionWithOptions</span> <span class='hs-varid'>def</span>
|
||||
<a name="line-85"></a>
|
||||
<a name="line-86"></a><a name="Options"></a><span class='hs-comment'>-- | Customization for session. Use the lenses to update:</span>
|
||||
<a name="line-87"></a><a name="Options"></a><span class='hs-comment'>-- 'sessionTarget', 'sessionTracer', 'sessionConfig'.</span>
|
||||
<a name="line-88"></a><a name="Options"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Options</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Options</span>
|
||||
<a name="line-89"></a> <span class='hs-layout'>{</span> <span class='hs-sel'>_sessionTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ByteString</span>
|
||||
<a name="line-90"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_sessionConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ConfigProto</span>
|
||||
<a name="line-91"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_sessionTracer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Tracer</span>
|
||||
<a name="line-92"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-93"></a>
|
||||
<a name="line-94"></a><a name="instance%20Default%20Options"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Default</span> <span class='hs-conid'>Options</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-95"></a> <span class='hs-varid'>def</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Options</span>
|
||||
<a name="line-96"></a> <span class='hs-layout'>{</span> <span class='hs-sel'>_sessionTarget</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span>
|
||||
<a name="line-97"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_sessionConfig</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>def</span>
|
||||
<a name="line-98"></a> <span class='hs-layout'>,</span> <span class='hs-sel'>_sessionTracer</span> <span class='hs-keyglyph'>=</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>
|
||||
<a name="line-99"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-100"></a>
|
||||
<a name="line-101"></a><a name="sessionTarget"></a><span class='hs-comment'>-- | Target can be: "local", ip:port, host:port.</span>
|
||||
<a name="line-102"></a><span class='hs-comment'>-- The set of supported factories depends on the linked in libraries.</span>
|
||||
<a name="line-103"></a><span class='hs-definition'>sessionTarget</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>Options</span> <span class='hs-conid'>ByteString</span>
|
||||
<a name="line-104"></a><span class='hs-definition'>sessionTarget</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_sessionTarget</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'>_sessionTarget</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-105"></a>
|
||||
<a name="line-106"></a><a name="sessionConfig"></a><span class='hs-comment'>-- | Uses the specified config for the created session.</span>
|
||||
<a name="line-107"></a><span class='hs-definition'>sessionConfig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>Options</span> <span class='hs-conid'>ConfigProto</span>
|
||||
<a name="line-108"></a><span class='hs-definition'>sessionConfig</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_sessionConfig</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'>_sessionConfig</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-109"></a>
|
||||
<a name="line-110"></a><a name="sessionTracer"></a><span class='hs-comment'>-- | Uses the given logger to monitor session progress.</span>
|
||||
<a name="line-111"></a><span class='hs-definition'>sessionTracer</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Lens'</span> <span class='hs-conid'>Options</span> <span class='hs-conid'>Tracer</span>
|
||||
<a name="line-112"></a><span class='hs-definition'>sessionTracer</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>lens</span> <span class='hs-sel'>_sessionTracer</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'>_sessionTracer</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-113"></a>
|
||||
<a name="line-114"></a><a name="runSessionWithOptions"></a><span class='hs-comment'>-- | Run 'Session' actions in a new TensorFlow session created with</span>
|
||||
<a name="line-115"></a><span class='hs-comment'>-- the given option setter actions ('sessionTarget', 'sessionConfig').</span>
|
||||
<a name="line-116"></a><span class='hs-definition'>runSessionWithOptions</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Options</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-117"></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-118"></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-119"></a> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>as</span> <span class='hs-varid'>rs</span> <span class='hs-keyglyph'>-></span>
|
||||
<a name="line-120"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>initState</span> <span class='hs-keyglyph'>=</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-varid'>options</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>sessionTracer</span><span class='hs-layout'>)</span>
|
||||
<a name="line-121"></a> <span class='hs-keyword'>in</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-varid'>initState</span><span class='hs-layout'>)</span>
|
||||
<a name="line-122"></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-keyword'>do</span>
|
||||
<a name="line-123"></a> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>setSessionTarget</span> <span class='hs-layout'>(</span><span class='hs-varid'>options</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>sessionTarget</span><span class='hs-layout'>)</span> <span class='hs-varid'>opt</span>
|
||||
<a name="line-124"></a> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>setSessionConfig</span> <span class='hs-layout'>(</span><span class='hs-varid'>options</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>sessionConfig</span><span class='hs-layout'>)</span> <span class='hs-varid'>opt</span>
|
||||
<a name="line-125"></a>
|
||||
<a name="line-126"></a><a name="build"></a><span class='hs-comment'>-- | Lift a 'Build' action into a 'Session', including any explicit op</span>
|
||||
<a name="line-127"></a><span class='hs-comment'>-- renderings.</span>
|
||||
<a name="line-128"></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-129"></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-130"></a>
|
||||
<a name="line-131"></a><a name="buildWithSummary"></a><span class='hs-comment'>-- | Lift a 'Build' action into a 'Session', including any explicit op</span>
|
||||
<a name="line-132"></a><span class='hs-comment'>-- renderings. Returns the merged summary ops which can be used for</span>
|
||||
<a name="line-133"></a><span class='hs-comment'>-- logging, see 'TensorFlow.Logging.build' for a convenient wrapper.</span>
|
||||
<a name="line-134"></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-135"></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-136"></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-137"></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-138"></a>
|
||||
<a name="line-139"></a><a name="extend"></a><span class='hs-comment'>-- | Add all pending rendered nodes to the TensorFlow graph and runs</span>
|
||||
<a name="line-140"></a><span class='hs-comment'>-- any pending initializers.</span>
|
||||
<a name="line-141"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-142"></a><span class='hs-comment'>-- Note that run, runWithFeeds, etc. will all call this function implicitly.</span>
|
||||
<a name="line-143"></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-144"></a><span class='hs-definition'>extend</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-145"></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-146"></a> <span class='hs-varid'>trace</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'>tracer</span><span class='hs-layout'>)</span>
|
||||
<a name="line-147"></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-148"></a> <span class='hs-varid'>unless</span> <span class='hs-layout'>(</span><span class='hs-varid'>null</span> <span class='hs-varid'>nodesToExtend</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>liftIO</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-149"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>graphDef</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'>nodesToExtend</span>
|
||||
<a name="line-150"></a> <span class='hs-varid'>trace</span> <span class='hs-layout'>(</span><span class='hs-str'>"Session.extend "</span> <span class='hs-varop'><></span> <span class='hs-conid'>Builder</span><span class='hs-varop'>.</span><span class='hs-varid'>string8</span> <span class='hs-layout'>(</span><span class='hs-varid'>showMessage</span> <span class='hs-varid'>graphDef</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-151"></a> <span class='hs-conid'>FFI</span><span class='hs-varop'>.</span><span class='hs-varid'>extendGraph</span> <span class='hs-varid'>session</span> <span class='hs-varid'>graphDef</span>
|
||||
<a name="line-152"></a> <span class='hs-comment'>-- Now that all the nodes are created, run the initializers.</span>
|
||||
<a name="line-153"></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-154"></a> <span class='hs-varid'>unless</span> <span class='hs-layout'>(</span><span class='hs-varid'>null</span> <span class='hs-varid'>initializers</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-155"></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-156"></a>
|
||||
<a name="line-157"></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-158"></a><span class='hs-comment'>-- Example usage:</span>
|
||||
<a name="line-159"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-160"></a><span class='hs-comment'>-- > buildAnd run :: Fetchable t a => Build t -> Session a</span>
|
||||
<a name="line-161"></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-162"></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-163"></a>
|
||||
<a name="line-164"></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-165"></a><span class='hs-comment'>-- rendered, and fetch the corresponding values for 'a'.</span>
|
||||
<a name="line-166"></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-167"></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-168"></a>
|
||||
<a name="line-169"></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-170"></a><span class='hs-comment'>-- rendered, feed the given input values, and fetch the corresponding result</span>
|
||||
<a name="line-171"></a><span class='hs-comment'>-- values for 'a'.</span>
|
||||
<a name="line-172"></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-173"></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-174"></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-175"></a> <span class='hs-comment'>-- Note that this call to "fetch" shouldn't affect the following "extend"</span>
|
||||
<a name="line-176"></a> <span class='hs-comment'>-- call, since all nodes in t and its inputs/deps will be rendered by the</span>
|
||||
<a name="line-177"></a> <span class='hs-comment'>-- above call to getNodes.</span>
|
||||
<a name="line-178"></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-179"></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-180"></a>
|
||||
<a name="line-181"></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-182"></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-183"></a> <span class='hs-varid'>extend</span>
|
||||
<a name="line-184"></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-185"></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-186"></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-187"></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-188"></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-189"></a> <span class='hs-varid'>feeds'</span>
|
||||
<a name="line-190"></a> <span class='hs-varid'>fetchNames</span>
|
||||
<a name="line-191"></a> <span class='hs-varid'>targetNames</span>
|
||||
<a name="line-192"></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-193"></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-194"></a>
|
||||
<a name="line-195"></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-196"></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-197"></a>
|
||||
<a name="line-198"></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-199"></a><span class='hs-comment'>-- already rendered. This behaves like 'run' except that it doesn't do any</span>
|
||||
<a name="line-200"></a><span class='hs-comment'>-- fetches.</span>
|
||||
<a name="line-201"></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-202"></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-203"></a>
|
||||
<a name="line-204"></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-205"></a><span class='hs-comment'>-- rendered, feed the given input values, and fetch the corresponding result</span>
|
||||
<a name="line-206"></a><span class='hs-comment'>-- values for 'a'. This behaves like 'runWithFeeds' except that it doesn't do</span>
|
||||
<a name="line-207"></a><span class='hs-comment'>-- any fetches.</span>
|
||||
<a name="line-208"></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-209"></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-210"></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-211"></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-212"></a>
|
||||
<a name="line-213"></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-214"></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-215"></a>
|
||||
<a name="line-216"></a><a name="asyncProdNodes"></a><span class='hs-comment'>-- | Starts a concurrent thread which evaluates the given Nodes</span>
|
||||
<a name="line-217"></a><span class='hs-comment'>-- forever until runSession exits or an exception occurs. Graph</span>
|
||||
<a name="line-218"></a><span class='hs-comment'>-- extension happens synchronously, but the resultant run proceeds as</span>
|
||||
<a name="line-219"></a><span class='hs-comment'>-- a separate thread.</span>
|
||||
<a name="line-220"></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-221"></a> <span class='hs-keyglyph'>=></span> <span class='hs-varid'>t</span> <span class='hs-comment'>-- ^ Node to evaluate concurrently.</span>
|
||||
<a name="line-222"></a> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Session</span> <span class='hs-conid'>()</span>
|
||||
<a name="line-223"></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-224"></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-225"></a> <span class='hs-varid'>extend</span>
|
||||
<a name="line-226"></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-227"></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-228"></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-229"></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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -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><span class='hs-comment'>-- | A 'Constraint' checking that the input is a list of 'TensorType's.</span>
|
||||
<a name="line-334"></a><span class='hs-comment'>-- Helps improve error messages when using 'OneOf'.</span>
|
||||
<a name="line-335"></a><span class='hs-keyword'>type</span> <span class='hs-varid'>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-varid'>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><span class='hs-comment'>-- | Removes a type from the given list of types.</span>
|
||||
<a name="line-368"></a><span class='hs-keyword'>type</span> <span class='hs-varid'>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-varid'>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-layout'>(</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-layout'>)</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><span class='hs-comment'>-- | A constraint that the type @a@ doesn't appear in the type list @ts@.</span>
|
||||
<a name="line-379"></a><span class='hs-comment'>-- Assumes that @a@ and each of the elements of @ts@ are 'TensorType's.</span>
|
||||
<a name="line-380"></a><span class='hs-keyword'>type</span> <span class='hs-varid'>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>
|
||||
|
|
@ -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 {}
|
||||
|
|
@ -44,7 +44,7 @@ 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
|
||||
useProtoAsVoidPtrLen :: (Message msg, Integral c, Show c, Bits 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
|
||||
|
|
@ -219,6 +219,12 @@ outputOp :: Lens' Output Op
|
|||
data PendingNodeName
|
||||
ExplicitName :: !Text -> PendingNodeName
|
||||
ImplicitName :: PendingNodeName
|
||||
|
||||
-- | Opaque handle to a mutable resource in the graph. Typical such
|
||||
-- resources are variables. The type parameter corresponds to the dtype
|
||||
-- of the tensor held in the variable.
|
||||
newtype ResourceHandle a
|
||||
ResourceHandle :: Output -> ResourceHandle a
|
||||
instance GHC.Classes.Ord TensorFlow.Output.Op
|
||||
instance GHC.Classes.Eq TensorFlow.Output.Op
|
||||
instance GHC.Show.Show TensorFlow.Output.Output
|
||||
|
|
@ -450,11 +456,13 @@ instance (TensorFlow.BuildOp.OpResult a1, TensorFlow.BuildOp.OpResult a2, Tensor
|
|||
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.Output.ResourceHandle a)
|
||||
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.Output.ResourceHandle a)
|
||||
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]
|
||||
|
|
@ -464,6 +472,7 @@ instance (TensorFlow.BuildOp.OpResult t1, TensorFlow.BuildOp.OpResult t2, Tensor
|
|||
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.Output.ResourceHandle a -> f)
|
||||
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)
|
||||
|
||||
|
|
@ -550,18 +559,19 @@ 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
|
||||
-- | Customization for session. Use the lenses to update:
|
||||
-- <a>sessionTarget</a>, <a>sessionTracer</a>, <a>sessionConfig</a>.
|
||||
data Options
|
||||
|
||||
-- | Uses the specified config for the created session.
|
||||
sessionConfig :: ConfigProto -> SessionOption
|
||||
sessionConfig :: Lens' Options ConfigProto
|
||||
|
||||
-- | 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
|
||||
-- factories depends on the linked in libraries.
|
||||
sessionTarget :: Lens' Options ByteString
|
||||
|
||||
-- | Uses the given logger to monitor session progress.
|
||||
sessionTracer :: Lens' Options Tracer
|
||||
|
||||
-- | Run <a>Session</a> actions in a new TensorFlow session.
|
||||
runSession :: Session a -> IO a
|
||||
|
|
@ -569,7 +579,7 @@ 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
|
||||
runSessionWithOptions :: Options -> Session a -> IO a
|
||||
|
||||
-- | Lift a <a>Build</a> action into a <a>Session</a>, including any
|
||||
-- explicit op renderings.
|
||||
|
|
@ -624,3 +634,249 @@ 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
|
||||
instance Data.Default.Class.Default TensorFlow.Session.Options
|
||||
|
||||
|
||||
-- | The core functionality of TensorFlow.
|
||||
--
|
||||
-- Unless you are defining ops, you do not need to import other modules
|
||||
-- from this package.
|
||||
--
|
||||
-- Basic ops are provided in the tensorflow-ops and tensorflow-core-ops
|
||||
-- packages.
|
||||
module TensorFlow.Core
|
||||
data Session a
|
||||
|
||||
-- | Customization for session. Use the lenses to update:
|
||||
-- <a>sessionTarget</a>, <a>sessionTracer</a>, <a>sessionConfig</a>.
|
||||
data Options
|
||||
|
||||
-- | Uses the specified config for the created session.
|
||||
sessionConfig :: Lens' Options ConfigProto
|
||||
|
||||
-- | Target can be: "local", ip:port, host:port. The set of supported
|
||||
-- factories depends on the linked in libraries.
|
||||
sessionTarget :: Lens' Options ByteString
|
||||
|
||||
-- | Uses the given logger to monitor session progress.
|
||||
sessionTracer :: Lens' Options Tracer
|
||||
|
||||
-- | 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 :: Options -> 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])
|
||||
|
||||
-- | 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
|
||||
newtype Scalar a
|
||||
Scalar :: a -> Scalar a
|
||||
[unScalar] :: Scalar a -> a
|
||||
|
||||
-- | Types that contain ops which can be run.
|
||||
class Nodes t
|
||||
|
||||
-- | 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 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 ()
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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 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 ()
|
||||
|
||||
-- | An action for building nodes in a TensorFlow graph.
|
||||
type Build = BuildT Identity
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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)
|
||||
|
||||
-- | 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 ()
|
||||
|
||||
-- | A type of graph node which has no outputs. These nodes are valuable
|
||||
-- for causing side effects when they are run.
|
||||
data ControlNode
|
||||
|
||||
-- | 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
|
||||
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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | Data about a tensor that is encoded for the TensorFlow APIs.
|
||||
data TensorData a
|
||||
|
||||
-- | The class of scalar types supported by tensorflow.
|
||||
class TensorType 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
|
||||
|
||||
-- | Shape (dimensions) of a tensor.
|
||||
newtype Shape
|
||||
Shape :: [Int64] -> Shape
|
||||
|
||||
-- | 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.
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
||||
-- | 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
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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">log1p</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:log1p">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>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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>
|
||||
</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">placeholderV2</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:placeholderV2">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>
|
||||
|
|
@ -1,4 +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>
|
||||
</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">quantizedAvgPool</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedAvgPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedBatchNormWithGlobalNormalization</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedBatchNormWithGlobalNormalization">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedBiasAdd</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedBiasAdd">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedConcat</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedConcat">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedConv2D</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedConv2D">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedMatMul</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedMatMul">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedMaxPool</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedMaxPool">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizeDownAndShrinkRange</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizeDownAndShrinkRange">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedRelu</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedRelu">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedRelu6</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedRelu6">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedReluX</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedReluX">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizedReshape</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizedReshape">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">quantizeV2</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:quantizeV2">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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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 - 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">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 - V</p><table><tr><td class="src">variable</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:variable">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>
|
||||
</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 - V</p><table><tr><td class="src">varHandleOp</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:varHandleOp">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">variable</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:variable">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">varIsInitializedOp</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:varIsInitializedOp">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>
|
||||
|
|
@ -1,4 +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 - 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">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 - W</p><table><tr><td class="src">where'</td><td class="module"><a href="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-GenOps-Core.html#v:wholeFileReader">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>
|
||||
</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 - W</p><table><tr><td class="src">where'</td><td class="module"><a href="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-GenOps-Core.html#v:wholeFileReader">TensorFlow.GenOps.Core</a></td></tr><tr><td class="src">writeFile</td><td class="module"><a href="TensorFlow-GenOps-Core.html#v:writeFile">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>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
|
@ -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 {}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,4 +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.Examples.MNIST.Parse</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-Examples-MNIST-Parse.html");};
|
||||
//]]>
|
||||
</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-mnist-0.1.0.0: TensorFlow demo application for learning MNIST model.</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.Examples.MNIST.Parse</p></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"><span class="keyword">type</span> <a href="#t:MNIST">MNIST</a> = Vector <a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a></li><li class="src short"><a href="#v:drawMNIST">drawMNIST</a> :: <a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a> -> Text</li><li class="src short"><a href="#v:checkEndian">checkEndian</a> :: <a href="../binary-0.7.5.0/Data-Binary-Get-Internal.html#t:Get">Get</a> ()</li><li class="src short"><a href="#v:readMNISTSamples">readMNISTSamples</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a>]</li><li class="src short"><a href="#v:readMNISTLabels">readMNISTLabels</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a>]</li><li class="src short"><a href="#v:readMessageFromFileOrDie">readMessageFromFileOrDie</a> :: Message m => <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> m</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:MNIST" class="def">MNIST</a> = Vector <a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a></p><div class="doc"><p>Utilities specific to MNIST.</p></div></div><div class="top"><p class="src"><a name="v:drawMNIST" class="def">drawMNIST</a> :: <a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a> -> Text</p><div class="doc"><p>Produces a unicode rendering of the MNIST digit sample.</p></div></div><div class="top"><p class="src"><a name="v:checkEndian" class="def">checkEndian</a> :: <a href="../binary-0.7.5.0/Data-Binary-Get-Internal.html#t:Get">Get</a> ()</p><div class="doc"><p>Check's the file's endianess, throwing an error if it's not as expected.</p></div></div><div class="top"><p class="src"><a name="v:readMNISTSamples" class="def">readMNISTSamples</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a>]</p><div class="doc"><p>Reads an MNIST file and returns a list of samples.</p></div></div><div class="top"><p class="src"><a name="v:readMNISTLabels" class="def">readMNISTLabels</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a>]</p><div class="doc"><p>Reads a list of MNIST labels from a file and returns them.</p></div></div><div class="top"><p class="src"><a name="v:readMessageFromFileOrDie" class="def">readMessageFromFileOrDie</a> :: Message m => <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> m</p></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>
|
||||
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-Examples-MNIST-Parse.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-mnist-0.1.0.0: TensorFlow demo application for learning MNIST model.</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.Examples.MNIST.Parse</p></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"><span class="keyword">type</span> <a href="#t:MNIST">MNIST</a> = <a href="../vector-0.11.0.0/Data-Vector.html#t:Vector">Vector</a> <a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a></li><li class="src short"><a href="#v:drawMNIST">drawMNIST</a> :: <a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a> -> <a href="../text-1.2.2.1/Data-Text.html#t:Text">Text</a></li><li class="src short"><a href="#v:checkEndian">checkEndian</a> :: <a href="../binary-0.7.5.0/Data-Binary-Get-Internal.html#t:Get">Get</a> ()</li><li class="src short"><a href="#v:readMNISTSamples">readMNISTSamples</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a>]</li><li class="src short"><a href="#v:readMNISTLabels">readMNISTLabels</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a>]</li><li class="src short"><a href="#v:readMessageFromFileOrDie">readMessageFromFileOrDie</a> :: <a href="../proto-lens-0.1.0.4/Data-ProtoLens-Message.html#t:Message">Message</a> m => <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> m</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:MNIST" class="def">MNIST</a> = <a href="../vector-0.11.0.0/Data-Vector.html#t:Vector">Vector</a> <a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a> <a href="src/TensorFlow-Examples-MNIST-Parse.html#MNIST" class="link">Source</a></p><div class="doc"><p>Utilities specific to MNIST.</p></div></div><div class="top"><p class="src"><a name="v:drawMNIST" class="def">drawMNIST</a> :: <a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a> -> <a href="../text-1.2.2.1/Data-Text.html#t:Text">Text</a> <a href="src/TensorFlow-Examples-MNIST-Parse.html#drawMNIST" class="link">Source</a></p><div class="doc"><p>Produces a unicode rendering of the MNIST digit sample.</p></div></div><div class="top"><p class="src"><a name="v:checkEndian" class="def">checkEndian</a> :: <a href="../binary-0.7.5.0/Data-Binary-Get-Internal.html#t:Get">Get</a> () <a href="src/TensorFlow-Examples-MNIST-Parse.html#checkEndian" class="link">Source</a></p><div class="doc"><p>Check's the file's endianess, throwing an error if it's not as expected.</p></div></div><div class="top"><p class="src"><a name="v:readMNISTSamples" class="def">readMNISTSamples</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="TensorFlow-Examples-MNIST-Parse.html#t:MNIST">MNIST</a>] <a href="src/TensorFlow-Examples-MNIST-Parse.html#readMNISTSamples" class="link">Source</a></p><div class="doc"><p>Reads an MNIST file and returns a list of samples.</p></div></div><div class="top"><p class="src"><a name="v:readMNISTLabels" class="def">readMNISTLabels</a> :: <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.8.2.0/Data-Word.html#t:Word8">Word8</a>] <a href="src/TensorFlow-Examples-MNIST-Parse.html#readMNISTLabels" class="link">Source</a></p><div class="doc"><p>Reads a list of MNIST labels from a file and returns them.</p></div></div><div class="top"><p class="src"><a name="v:readMessageFromFileOrDie" class="def">readMessageFromFileOrDie</a> :: <a href="../proto-lens-0.1.0.4/Data-ProtoLens-Message.html#t:Message">Message</a> m => <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> -> <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> m <a href="src/TensorFlow-Examples-MNIST-Parse.html#readMessageFromFileOrDie" class="link">Source</a></p></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>
|
||||
|
|
@ -1,4 +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.Examples.MNIST.TrainedGraph</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-Examples-MNIST-TrainedGraph.html");};
|
||||
//]]>
|
||||
</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-mnist-0.1.0.0: TensorFlow demo application for learning MNIST model.</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.Examples.MNIST.TrainedGraph</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Paths to test helper files.</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:mnistPb">mnistPb</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:wtsCkpt">wtsCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:biasCkpt">biasCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:mnistPb" class="def">mnistPb</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></p><div class="doc"><p>File containing a Tensorflow serialized proto of MNIST.</p></div></div><div class="top"><p class="src"><a name="v:wtsCkpt" class="def">wtsCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></p><div class="doc"><p>Files containing pre-trained weights for MNIST.</p></div></div><div class="top"><p class="src"><a name="v:biasCkpt" class="def">biasCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></p><div class="doc"><p>Files containing pre-trained weights for MNIST.</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>
|
||||
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-Examples-MNIST-TrainedGraph.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-mnist-0.1.0.0: TensorFlow demo application for learning MNIST model.</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.Examples.MNIST.TrainedGraph</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Paths to test helper files.</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:mnistPb">mnistPb</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:wtsCkpt">wtsCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></li><li class="src short"><a href="#v:biasCkpt">biasCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:mnistPb" class="def">mnistPb</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> <a href="src/TensorFlow-Examples-MNIST-TrainedGraph.html#mnistPb" class="link">Source</a></p><div class="doc"><p>File containing a Tensorflow serialized proto of MNIST.</p></div></div><div class="top"><p class="src"><a name="v:wtsCkpt" class="def">wtsCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a> <a href="src/TensorFlow-Examples-MNIST-TrainedGraph.html#wtsCkpt" class="link">Source</a></p><div class="doc"><p>Files containing pre-trained weights for MNIST.</p></div></div><div class="top"><p class="src"><a name="v:biasCkpt" class="def">biasCkpt</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../bytestring-0.10.6.0/Data-ByteString.html#t:ByteString">ByteString</a> <a href="src/TensorFlow-Examples-MNIST-TrainedGraph.html#biasCkpt" class="link">Source</a></p><div class="doc"><p>Files containing pre-trained weights for MNIST.</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,46 @@
|
|||
<?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-osx/Cabal-1.22.5.0/build/autogen/Paths_tensorflow_mnist.hs</title>
|
||||
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||
</head>
|
||||
<body>
|
||||
<pre><a name="line-1"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Paths_tensorflow_mnist</span> <span class='hs-layout'>(</span>
|
||||
<a name="line-2"></a> <span class='hs-varid'>version</span><span class='hs-layout'>,</span>
|
||||
<a name="line-3"></a> <span class='hs-varid'>getBinDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getDataDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibexecDir</span><span class='hs-layout'>,</span>
|
||||
<a name="line-4"></a> <span class='hs-varid'>getDataFileName</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSysconfDir</span>
|
||||
<a name="line-5"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-6"></a>
|
||||
<a name="line-7"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Exception</span>
|
||||
<a name="line-8"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Version</span> <span class='hs-layout'>(</span><span class='hs-conid'>Version</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-9"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Environment</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span><span class='hs-layout'>)</span>
|
||||
<a name="line-10"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span>
|
||||
<a name="line-11"></a>
|
||||
<a name="line-12"></a><a name="catchIO"></a><span class='hs-definition'>catchIO</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-varop'>.</span><span class='hs-conid'>IOException</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-13"></a><span class='hs-definition'>catchIO</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Exception</span><span class='hs-varop'>.</span><span class='hs-varid'>catch</span>
|
||||
<a name="line-14"></a>
|
||||
<a name="line-15"></a><a name="version"></a><span class='hs-definition'>version</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Version</span>
|
||||
<a name="line-16"></a><span class='hs-definition'>version</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Version</span> <span class='hs-keyglyph'>[</span><span class='hs-num'>0</span><span class='hs-layout'>,</span><span class='hs-num'>1</span><span class='hs-layout'>,</span><span class='hs-num'>0</span><span class='hs-layout'>,</span><span class='hs-num'>0</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>[]</span>
|
||||
<a name="line-17"></a><a name="bindir"></a><span class='hs-definition'>bindir</span><span class='hs-layout'>,</span> <span class='hs-varid'>libdir</span><span class='hs-layout'>,</span> <span class='hs-varid'>datadir</span><span class='hs-layout'>,</span> <span class='hs-varid'>libexecdir</span><span class='hs-layout'>,</span> <span class='hs-varid'>sysconfdir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-18"></a>
|
||||
<a name="line-19"></a><span class='hs-definition'>bindir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/bin"</span>
|
||||
<a name="line-20"></a><a name="libdir"></a><span class='hs-definition'>libdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/lib/x86_64-osx-ghc-7.10.3/tensorflow-mnist-0.1.0.0-2agxd0imrn964MW1mWb4VF"</span>
|
||||
<a name="line-21"></a><a name="datadir"></a><span class='hs-definition'>datadir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/share/x86_64-osx-ghc-7.10.3/tensorflow-mnist-0.1.0.0"</span>
|
||||
<a name="line-22"></a><a name="libexecdir"></a><span class='hs-definition'>libexecdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/libexec"</span>
|
||||
<a name="line-23"></a><a name="sysconfdir"></a><span class='hs-definition'>sysconfdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/etc"</span>
|
||||
<a name="line-24"></a>
|
||||
<a name="line-25"></a><a name="getBinDir"></a><span class='hs-definition'>getBinDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getDataDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibexecDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSysconfDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-26"></a><span class='hs-definition'>getBinDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_bindir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>bindir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-27"></a><a name="getLibDir"></a><span class='hs-definition'>getLibDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_libdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>libdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-28"></a><a name="getDataDir"></a><span class='hs-definition'>getDataDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_datadir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>datadir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-29"></a><a name="getLibexecDir"></a><span class='hs-definition'>getLibexecDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_libexecdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>libexecdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-30"></a><a name="getSysconfDir"></a><span class='hs-definition'>getSysconfDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_sysconfdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>sysconfdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-31"></a>
|
||||
<a name="line-32"></a><a name="getDataFileName"></a><span class='hs-definition'>getDataFileName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-33"></a><span class='hs-definition'>getDataFileName</span> <span class='hs-varid'>name</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-34"></a> <span class='hs-varid'>dir</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getDataDir</span>
|
||||
<a name="line-35"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dir</span> <span class='hs-varop'>++</span> <span class='hs-str'>"/"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<?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/Examples/MNIST/Parse.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 OverloadedStrings #-}</span>
|
||||
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE OverloadedLists #-}</span>
|
||||
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE TypeSynonymInstances #-}</span>
|
||||
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE FlexibleInstances #-}</span>
|
||||
<a name="line-19"></a><span class='hs-comment'>{-# LANGUAGE ViewPatterns #-}</span>
|
||||
<a name="line-20"></a>
|
||||
<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'>Examples</span><span class='hs-varop'>.</span><span class='hs-conid'>MNIST</span><span class='hs-varop'>.</span><span class='hs-conid'>Parse</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'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>when</span><span class='hs-layout'>,</span> <span class='hs-varid'>liftM</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'>Binary</span><span class='hs-varop'>.</span><span class='hs-conid'>Get</span> <span class='hs-layout'>(</span><span class='hs-conid'>Get</span><span class='hs-layout'>,</span> <span class='hs-varid'>runGet</span><span class='hs-layout'>,</span> <span class='hs-varid'>getWord32be</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLazyByteString</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'>ByteString</span><span class='hs-varop'>.</span><span class='hs-conid'>Lazy</span> <span class='hs-layout'>(</span><span class='hs-varid'>toStrict</span><span class='hs-layout'>,</span> <span class='hs-varid'>readFile</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'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>Split</span> <span class='hs-layout'>(</span><span class='hs-varid'>chunksOf</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'>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-28"></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'>decodeMessageOrDie</span><span class='hs-layout'>)</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'>Text</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</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'>Word</span> <span class='hs-layout'>(</span><span class='hs-conid'>Word8</span><span class='hs-layout'>,</span> <span class='hs-conid'>Word32</span><span class='hs-layout'>)</span>
|
||||
<a name="line-31"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span><span class='hs-varid'>readFile</span><span class='hs-layout'>)</span>
|
||||
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Codec</span><span class='hs-varop'>.</span><span class='hs-conid'>Compression</span><span class='hs-varop'>.</span><span class='hs-conid'>GZip</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>GZip</span>
|
||||
<a name="line-33"></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-34"></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-35"></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-36"></a>
|
||||
<a name="line-37"></a><a name="MNIST"></a><span class='hs-comment'>-- | Utilities specific to MNIST.</span>
|
||||
<a name="line-38"></a><a name="MNIST"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>MNIST</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-conid'>Word8</span>
|
||||
<a name="line-39"></a>
|
||||
<a name="line-40"></a><a name="drawMNIST"></a><span class='hs-comment'>-- | Produces a unicode rendering of the MNIST digit sample.</span>
|
||||
<a name="line-41"></a><span class='hs-definition'>drawMNIST</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>MNIST</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-42"></a><span class='hs-definition'>drawMNIST</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>chunk</span> <span class='hs-varop'>.</span> <span class='hs-varid'>block</span>
|
||||
<a name="line-43"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-44"></a> <span class='hs-varid'>block</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-conid'>Word8</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-45"></a> <span class='hs-varid'>block</span> <span class='hs-layout'>(</span><span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>splitAt</span> <span class='hs-num'>1</span> <span class='hs-keyglyph'>-></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-layout'>,</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>" "</span> <span class='hs-varop'><></span> <span class='hs-varid'>block</span> <span class='hs-varid'>xs</span>
|
||||
<a name="line-46"></a> <span class='hs-varid'>block</span> <span class='hs-layout'>(</span><span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>splitAt</span> <span class='hs-num'>1</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-varid'>n</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>,</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>c</span> <span class='hs-varop'>`</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>cons</span><span class='hs-varop'>`</span> <span class='hs-varid'>block</span> <span class='hs-varid'>xs</span>
|
||||
<a name="line-47"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\9617\9618\9619\9608"</span> <span class='hs-varop'>!!</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>n</span> <span class='hs-varop'>`div`</span> <span class='hs-num'>64</span><span class='hs-layout'>)</span>
|
||||
<a name="line-48"></a> <span class='hs-varid'>block</span> <span class='hs-layout'>(</span><span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>splitAt</span> <span class='hs-num'>1</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>""</span>
|
||||
<a name="line-49"></a> <span class='hs-varid'>chunk</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-50"></a> <span class='hs-varid'>chunk</span> <span class='hs-str'>""</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"\n"</span>
|
||||
<a name="line-51"></a> <span class='hs-varid'>chunk</span> <span class='hs-varid'>xs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>take</span> <span class='hs-num'>28</span> <span class='hs-varid'>xs</span> <span class='hs-varop'><></span> <span class='hs-str'>"\n"</span> <span class='hs-varop'><></span> <span class='hs-varid'>chunk</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>drop</span> <span class='hs-num'>28</span> <span class='hs-varid'>xs</span><span class='hs-layout'>)</span>
|
||||
<a name="line-52"></a>
|
||||
<a name="line-53"></a><a name="checkEndian"></a><span class='hs-comment'>-- | Check's the file's endianess, throwing an error if it's not as expected.</span>
|
||||
<a name="line-54"></a><span class='hs-definition'>checkEndian</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Get</span> <span class='hs-conid'>()</span>
|
||||
<a name="line-55"></a><span class='hs-definition'>checkEndian</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-56"></a> <span class='hs-varid'>magic</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getWord32be</span>
|
||||
<a name="line-57"></a> <span class='hs-varid'>when</span> <span class='hs-layout'>(</span><span class='hs-varid'>magic</span> <span class='hs-varop'>`notElem`</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>[</span><span class='hs-num'>2049</span><span class='hs-layout'>,</span> <span class='hs-num'>2051</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Word32</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-58"></a> <span class='hs-varid'>fail</span> <span class='hs-str'>"Expected big endian, but image file is little endian."</span>
|
||||
<a name="line-59"></a>
|
||||
<a name="line-60"></a><a name="readMNISTSamples"></a><span class='hs-comment'>-- | Reads an MNIST file and returns a list of samples.</span>
|
||||
<a name="line-61"></a><span class='hs-definition'>readMNISTSamples</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>MNIST</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-62"></a><span class='hs-definition'>readMNISTSamples</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-63"></a> <span class='hs-varid'>raw</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>GZip</span><span class='hs-varop'>.</span><span class='hs-varid'>decompress</span> <span class='hs-varop'><$></span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>path</span>
|
||||
<a name="line-64"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>runGet</span> <span class='hs-varid'>getMNIST</span> <span class='hs-varid'>raw</span>
|
||||
<a name="line-65"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-66"></a> <span class='hs-varid'>getMNIST</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Get</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>MNIST</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-67"></a> <span class='hs-varid'>getMNIST</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-68"></a> <span class='hs-varid'>checkEndian</span>
|
||||
<a name="line-69"></a> <span class='hs-comment'>-- Parse header data.</span>
|
||||
<a name="line-70"></a> <span class='hs-varid'>cnt</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>getWord32be</span>
|
||||
<a name="line-71"></a> <span class='hs-varid'>rows</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>getWord32be</span>
|
||||
<a name="line-72"></a> <span class='hs-varid'>cols</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>getWord32be</span>
|
||||
<a name="line-73"></a> <span class='hs-comment'>-- Read all of the data, then split into samples.</span>
|
||||
<a name="line-74"></a> <span class='hs-varid'>pixels</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getLazyByteString</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span> <span class='hs-varid'>cnt</span> <span class='hs-varop'>*</span> <span class='hs-varid'>rows</span> <span class='hs-varop'>*</span> <span class='hs-varid'>cols</span>
|
||||
<a name="line-75"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-conid'>V</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'><$></span> <span class='hs-varid'>chunksOf</span> <span class='hs-layout'>(</span><span class='hs-varid'>rows</span> <span class='hs-varop'>*</span> <span class='hs-varid'>cols</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>L</span><span class='hs-varop'>.</span><span class='hs-varid'>unpack</span> <span class='hs-varid'>pixels</span><span class='hs-layout'>)</span>
|
||||
<a name="line-76"></a>
|
||||
<a name="line-77"></a><a name="readMNISTLabels"></a><span class='hs-comment'>-- | Reads a list of MNIST labels from a file and returns them.</span>
|
||||
<a name="line-78"></a><span class='hs-definition'>readMNISTLabels</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Word8</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-79"></a><span class='hs-definition'>readMNISTLabels</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-80"></a> <span class='hs-varid'>raw</span> <span class='hs-keyglyph'><-</span> <span class='hs-conid'>GZip</span><span class='hs-varop'>.</span><span class='hs-varid'>decompress</span> <span class='hs-varop'><$></span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>path</span>
|
||||
<a name="line-81"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>runGet</span> <span class='hs-varid'>getLabels</span> <span class='hs-varid'>raw</span>
|
||||
<a name="line-82"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>getLabels</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Get</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Word8</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-83"></a> <span class='hs-varid'>getLabels</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-84"></a> <span class='hs-varid'>checkEndian</span>
|
||||
<a name="line-85"></a> <span class='hs-comment'>-- Parse header data.</span>
|
||||
<a name="line-86"></a> <span class='hs-varid'>cnt</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>getWord32be</span>
|
||||
<a name="line-87"></a> <span class='hs-comment'>-- Read all of the labels.</span>
|
||||
<a name="line-88"></a> <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-varid'>getLazyByteString</span> <span class='hs-varid'>cnt</span>
|
||||
<a name="line-89"></a>
|
||||
<a name="line-90"></a><a name="readMessageFromFileOrDie"></a><span class='hs-definition'>readMessageFromFileOrDie</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Message</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=></span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-varid'>m</span>
|
||||
<a name="line-91"></a><span class='hs-definition'>readMessageFromFileOrDie</span> <span class='hs-varid'>path</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-92"></a> <span class='hs-varid'>pb</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>readFile</span> <span class='hs-varid'>path</span>
|
||||
<a name="line-93"></a> <span class='hs-varid'>return</span> <span class='hs-varop'>$</span> <span class='hs-varid'>decodeMessageOrDie</span> <span class='hs-varop'>$</span> <span class='hs-varid'>toStrict</span> <span class='hs-varid'>pb</span>
|
||||
<a name="line-94"></a>
|
||||
<a name="line-95"></a><span class='hs-comment'>-- TODO: Write a writeMessageFromFileOrDie and read/write non-lethal</span>
|
||||
<a name="line-96"></a><span class='hs-comment'>-- versions.</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?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-data/TensorFlow/Examples/MNIST/TrainedGraph.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 OverloadedStrings #-}</span>
|
||||
<a name="line-16"></a><span class='hs-comment'>-- | Paths to test helper files.</span>
|
||||
<a name="line-17"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Examples</span><span class='hs-varop'>.</span><span class='hs-conid'>MNIST</span><span class='hs-varop'>.</span><span class='hs-conid'>TrainedGraph</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-18"></a>
|
||||
<a name="line-19"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Paths_tensorflow_mnist</span> <span class='hs-layout'>(</span><span class='hs-varid'>getDataFileName</span><span class='hs-layout'>)</span>
|
||||
<a name="line-20"></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-21"></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'>Char8</span> <span class='hs-layout'>(</span><span class='hs-varid'>pack</span><span class='hs-layout'>)</span>
|
||||
<a name="line-22"></a>
|
||||
<a name="line-23"></a><a name="mnistPb"></a><span class='hs-comment'>-- | File containing a Tensorflow serialized proto of MNIST.</span>
|
||||
<a name="line-24"></a><span class='hs-definition'>mnistPb</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-25"></a><span class='hs-definition'>mnistPb</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"data/MNIST.pb"</span>
|
||||
<a name="line-26"></a>
|
||||
<a name="line-27"></a><a name="wtsCkpt"></a><span class='hs-comment'>-- | Files containing pre-trained weights for MNIST.</span>
|
||||
<a name="line-28"></a><span class='hs-definition'>wtsCkpt</span><span class='hs-layout'>,</span> <span class='hs-varid'>biasCkpt</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>ByteString</span>
|
||||
<a name="line-29"></a><span class='hs-definition'>wtsCkpt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pack</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"data/MNISTWts.ckpt"</span>
|
||||
<a name="line-30"></a><a name="biasCkpt"></a><span class='hs-definition'>biasCkpt</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>pack</span> <span class='hs-varop'><$></span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"data/MNISTBias.ckpt"</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -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 {}
|
||||
|
|
@ -1,4 +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.Examples.MNIST.InputData</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-Examples-MNIST-InputData.html");};
|
||||
//]]>
|
||||
</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-mnist-input-data-0.1.0.0: Downloader of input data for training MNIST.</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.Examples.MNIST.InputData</p></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:trainingImageData">trainingImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:trainingLabelData">trainingLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:testImageData">testImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:testLabelData">testLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:trainingImageData" class="def">trainingImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></p><div class="doc"><p>Download the files containing the canonical MNIST samples and labels.</p></div></div><div class="top"><p class="src"><a name="v:trainingLabelData" class="def">trainingLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></p><div class="doc"><p>Download the files containing the canonical MNIST samples and labels.</p></div></div><div class="top"><p class="src"><a name="v:testImageData" class="def">testImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></p></div><div class="top"><p class="src"><a name="v:testLabelData" class="def">testLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></p></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>
|
||||
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-Examples-MNIST-InputData.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-mnist-input-data-0.1.0.0: Downloader of input data for training MNIST.</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.Examples.MNIST.InputData</p></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:trainingImageData">trainingImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:trainingLabelData">trainingLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:testImageData">testImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li><li class="src short"><a href="#v:testLabelData">testLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:trainingImageData" class="def">trainingImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> <a href="src/TensorFlow-Examples-MNIST-InputData.html#trainingImageData" class="link">Source</a></p><div class="doc"><p>Download the files containing the canonical MNIST samples and labels.</p></div></div><div class="top"><p class="src"><a name="v:trainingLabelData" class="def">trainingLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> <a href="src/TensorFlow-Examples-MNIST-InputData.html#trainingLabelData" class="link">Source</a></p><div class="doc"><p>Download the files containing the canonical MNIST samples and labels.</p></div></div><div class="top"><p class="src"><a name="v:testImageData" class="def">testImageData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> <a href="src/TensorFlow-Examples-MNIST-InputData.html#testImageData" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:testLabelData" class="def">testLabelData</a> :: <a href="../base-4.8.2.0/System-IO.html#t:IO">IO</a> <a href="../base-4.8.2.0/System-IO.html#t:FilePath">FilePath</a> <a href="src/TensorFlow-Examples-MNIST-InputData.html#testLabelData" class="link">Source</a></p></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,46 @@
|
|||
<?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-osx/Cabal-1.22.5.0/build/autogen/Paths_tensorflow_mnist_input_data.hs</title>
|
||||
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||
</head>
|
||||
<body>
|
||||
<pre><a name="line-1"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Paths_tensorflow_mnist_input_data</span> <span class='hs-layout'>(</span>
|
||||
<a name="line-2"></a> <span class='hs-varid'>version</span><span class='hs-layout'>,</span>
|
||||
<a name="line-3"></a> <span class='hs-varid'>getBinDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getDataDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibexecDir</span><span class='hs-layout'>,</span>
|
||||
<a name="line-4"></a> <span class='hs-varid'>getDataFileName</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSysconfDir</span>
|
||||
<a name="line-5"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
|
||||
<a name="line-6"></a>
|
||||
<a name="line-7"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Exception</span>
|
||||
<a name="line-8"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Version</span> <span class='hs-layout'>(</span><span class='hs-conid'>Version</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-9"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Environment</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span><span class='hs-layout'>)</span>
|
||||
<a name="line-10"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Prelude</span>
|
||||
<a name="line-11"></a>
|
||||
<a name="line-12"></a><a name="catchIO"></a><span class='hs-definition'>catchIO</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-varop'>.</span><span class='hs-conid'>IOException</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-13"></a><span class='hs-definition'>catchIO</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Exception</span><span class='hs-varop'>.</span><span class='hs-varid'>catch</span>
|
||||
<a name="line-14"></a>
|
||||
<a name="line-15"></a><a name="version"></a><span class='hs-definition'>version</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Version</span>
|
||||
<a name="line-16"></a><span class='hs-definition'>version</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Version</span> <span class='hs-keyglyph'>[</span><span class='hs-num'>0</span><span class='hs-layout'>,</span><span class='hs-num'>1</span><span class='hs-layout'>,</span><span class='hs-num'>0</span><span class='hs-layout'>,</span><span class='hs-num'>0</span><span class='hs-keyglyph'>]</span> <span class='hs-conid'>[]</span>
|
||||
<a name="line-17"></a><a name="bindir"></a><span class='hs-definition'>bindir</span><span class='hs-layout'>,</span> <span class='hs-varid'>libdir</span><span class='hs-layout'>,</span> <span class='hs-varid'>datadir</span><span class='hs-layout'>,</span> <span class='hs-varid'>libexecdir</span><span class='hs-layout'>,</span> <span class='hs-varid'>sysconfdir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-18"></a>
|
||||
<a name="line-19"></a><span class='hs-definition'>bindir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/bin"</span>
|
||||
<a name="line-20"></a><a name="libdir"></a><span class='hs-definition'>libdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/lib/x86_64-osx-ghc-7.10.3/tensorflow-mnist-input-data-0.1.0.0-JIQTTyi85Nv6pdBnglu33Q"</span>
|
||||
<a name="line-21"></a><a name="datadir"></a><span class='hs-definition'>datadir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/share/x86_64-osx-ghc-7.10.3/tensorflow-mnist-input-data-0.1.0.0"</span>
|
||||
<a name="line-22"></a><a name="libexecdir"></a><span class='hs-definition'>libexecdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/libexec"</span>
|
||||
<a name="line-23"></a><a name="sysconfdir"></a><span class='hs-definition'>sysconfdir</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"/Users/judahjacobson/tensorflow-haskell/.stack-work/install/x86_64-osx/lts-6.2/7.10.3/etc"</span>
|
||||
<a name="line-24"></a>
|
||||
<a name="line-25"></a><a name="getBinDir"></a><span class='hs-definition'>getBinDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getDataDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getLibexecDir</span><span class='hs-layout'>,</span> <span class='hs-varid'>getSysconfDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-26"></a><span class='hs-definition'>getBinDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_input_data_bindir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>bindir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-27"></a><a name="getLibDir"></a><span class='hs-definition'>getLibDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_input_data_libdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>libdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-28"></a><a name="getDataDir"></a><span class='hs-definition'>getDataDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_input_data_datadir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>datadir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-29"></a><a name="getLibexecDir"></a><span class='hs-definition'>getLibexecDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_input_data_libexecdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>libexecdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-30"></a><a name="getSysconfDir"></a><span class='hs-definition'>getSysconfDir</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>catchIO</span> <span class='hs-layout'>(</span><span class='hs-varid'>getEnv</span> <span class='hs-str'>"tensorflow_mnist_input_data_sysconfdir"</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-keyword'>_</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>return</span> <span class='hs-varid'>sysconfdir</span><span class='hs-layout'>)</span>
|
||||
<a name="line-31"></a>
|
||||
<a name="line-32"></a><a name="getDataFileName"></a><span class='hs-definition'>getDataFileName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FilePath</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-33"></a><span class='hs-definition'>getDataFileName</span> <span class='hs-varid'>name</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-34"></a> <span class='hs-varid'>dir</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>getDataDir</span>
|
||||
<a name="line-35"></a> <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>dir</span> <span class='hs-varop'>++</span> <span class='hs-str'>"/"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?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/Examples/MNIST/InputData.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-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Examples</span><span class='hs-varop'>.</span><span class='hs-conid'>MNIST</span><span class='hs-varop'>.</span><span class='hs-conid'>InputData</span>
|
||||
<a name="line-16"></a> <span class='hs-layout'>(</span> <span class='hs-varid'>trainingImageData</span>
|
||||
<a name="line-17"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>trainingLabelData</span>
|
||||
<a name="line-18"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>testImageData</span>
|
||||
<a name="line-19"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>testLabelData</span>
|
||||
<a name="line-20"></a> <span class='hs-layout'>)</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'>Paths_tensorflow_mnist_input_data</span> <span class='hs-layout'>(</span><span class='hs-varid'>getDataFileName</span><span class='hs-layout'>)</span>
|
||||
<a name="line-23"></a>
|
||||
<a name="line-24"></a><a name="trainingImageData"></a><span class='hs-comment'>-- | Download the files containing the canonical MNIST samples and labels.</span>
|
||||
<a name="line-25"></a><span class='hs-definition'>trainingImageData</span><span class='hs-layout'>,</span> <span class='hs-varid'>trainingLabelData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-26"></a><span class='hs-definition'>trainingImageData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"train-images-idx3-ubyte.gz"</span>
|
||||
<a name="line-27"></a><a name="trainingLabelData"></a><span class='hs-definition'>trainingLabelData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"train-labels-idx1-ubyte.gz"</span>
|
||||
<a name="line-28"></a>
|
||||
<a name="line-29"></a><a name="testImageData"></a><span class='hs-definition'>testImageData</span><span class='hs-layout'>,</span> <span class='hs-varid'>testLabelData</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>FilePath</span>
|
||||
<a name="line-30"></a><span class='hs-definition'>testImageData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"t10k-images-idx3-ubyte.gz"</span>
|
||||
<a name="line-31"></a><a name="testLabelData"></a><span class='hs-definition'>testLabelData</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>getDataFileName</span> <span class='hs-str'>"t10k-labels-idx1-ubyte.gz"</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -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 {}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<!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.NN</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-NN.html");};
|
||||
//]]>
|
||||
</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-nn-0.1.0.0: Friendly layer around 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.NN</p></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:sigmoidCrossEntropyWithLogits">sigmoidCrossEntropyWithLogits</a> :: (<a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:OneOf">OneOf</a> `[<a href="../base-4.8.2.0/Prelude.html#t:Float">Float</a>, <a href="../base-4.8.2.0/Prelude.html#t:Double">Double</a>]` a, <a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:TensorType">TensorType</a> a, <a href="../base-4.8.2.0/Prelude.html#t:Num">Num</a> a) => <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a -> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a -> <a href="../tensorflow-0.1.0.0/TensorFlow-Build.html#t:Build">Build</a> (<a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:sigmoidCrossEntropyWithLogits" class="def">sigmoidCrossEntropyWithLogits</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:OneOf">OneOf</a> `[<a href="../base-4.8.2.0/Prelude.html#t:Float">Float</a>, <a href="../base-4.8.2.0/Prelude.html#t:Double">Double</a>]` a, <a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:TensorType">TensorType</a> a, <a href="../base-4.8.2.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">=> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a</td><td class="doc"><p><strong>logits</strong></p></td></tr><tr><td class="src">-> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a</td><td class="doc"><p><strong>targets</strong></p></td></tr><tr><td class="src">-> <a href="../tensorflow-0.1.0.0/TensorFlow-Build.html#t:Build">Build</a> (<a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Computes sigmoid cross entropy given <code>logits</code>.</p><p>Measures the probability error in discrete classification tasks in which each
|
||||
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-NN.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-nn-0.1.0.0: Friendly layer around 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.NN</p></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:sigmoidCrossEntropyWithLogits">sigmoidCrossEntropyWithLogits</a> :: (<a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:OneOf">OneOf</a> `[<a href="../base-4.8.2.0/Prelude.html#t:Float">Float</a>, <a href="../base-4.8.2.0/Prelude.html#t:Double">Double</a>]` a, <a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:TensorType">TensorType</a> a, <a href="../base-4.8.2.0/Prelude.html#t:Num">Num</a> a) => <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a -> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a -> <a href="../tensorflow-0.1.0.0/TensorFlow-Build.html#t:Build">Build</a> (<a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:sigmoidCrossEntropyWithLogits" class="def">sigmoidCrossEntropyWithLogits</a> <a href="src/TensorFlow-NN.html#sigmoidCrossEntropyWithLogits" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:OneOf">OneOf</a> `[<a href="../base-4.8.2.0/Prelude.html#t:Float">Float</a>, <a href="../base-4.8.2.0/Prelude.html#t:Double">Double</a>]` a, <a href="../tensorflow-0.1.0.0/TensorFlow-Types.html#t:TensorType">TensorType</a> a, <a href="../base-4.8.2.0/Prelude.html#t:Num">Num</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">=> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a</td><td class="doc"><p><strong>logits</strong></p></td></tr><tr><td class="src">-> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a</td><td class="doc"><p><strong>targets</strong></p></td></tr><tr><td class="src">-> <a href="../tensorflow-0.1.0.0/TensorFlow-Build.html#t:Build">Build</a> (<a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Tensor">Tensor</a> <a href="../tensorflow-0.1.0.0/TensorFlow-Tensor.html#t:Value">Value</a> a)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Computes sigmoid cross entropy given <code>logits</code>.</p><p>Measures the probability error in discrete classification tasks in which each
|
||||
class is independent and not mutually exclusive. For instance, one could
|
||||
perform multilabel classification where a picture can contain both an elephant
|
||||
and a dog at the same time.</p><p>For brevity, let `x = logits`, `z = targets`. The logistic loss is</p><p>z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))
|
||||
|
|
|
|||
|
|
@ -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/NN.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 DataKinds #-}</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'>NN</span>
|
||||
<a name="line-19"></a> <span class='hs-layout'>(</span> <span class='hs-varid'>sigmoidCrossEntropyWithLogits</span>
|
||||
<a name="line-20"></a> <span class='hs-layout'>)</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'>Prelude</span> <span class='hs-varid'>hiding</span> <span class='hs-layout'>(</span> <span class='hs-varid'>log</span>
|
||||
<a name="line-23"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>exp</span>
|
||||
<a name="line-24"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-25"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Build</span> <span class='hs-layout'>(</span> <span class='hs-conid'>Build</span>
|
||||
<a name="line-26"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>render</span>
|
||||
<a name="line-27"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>withNameScope</span>
|
||||
<a name="line-28"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-29"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>GenOps</span><span class='hs-varop'>.</span><span class='hs-conid'>Core</span> <span class='hs-layout'>(</span> <span class='hs-varid'>greaterEqual</span>
|
||||
<a name="line-30"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>select</span>
|
||||
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>log</span>
|
||||
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>exp</span>
|
||||
<a name="line-33"></a> <span class='hs-layout'>)</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'>Tensor</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>
|
||||
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Value</span>
|
||||
<a name="line-36"></a> <span class='hs-layout'>)</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> <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-38"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OneOf</span>
|
||||
<a name="line-39"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-40"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>Ops</span> <span class='hs-layout'>(</span> <span class='hs-varid'>zerosLike</span>
|
||||
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>add</span>
|
||||
<a name="line-42"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-43"></a>
|
||||
<a name="line-44"></a><a name="sigmoidCrossEntropyWithLogits"></a><span class='hs-comment'>-- | Computes sigmoid cross entropy given `logits`.</span>
|
||||
<a name="line-45"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-46"></a><span class='hs-comment'>-- Measures the probability error in discrete classification tasks in which each</span>
|
||||
<a name="line-47"></a><span class='hs-comment'>-- class is independent and not mutually exclusive. For instance, one could</span>
|
||||
<a name="line-48"></a><span class='hs-comment'>-- perform multilabel classification where a picture can contain both an elephant</span>
|
||||
<a name="line-49"></a><span class='hs-comment'>-- and a dog at the same time.</span>
|
||||
<a name="line-50"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-51"></a><span class='hs-comment'>-- For brevity, let `x = logits`, `z = targets`. The logistic loss is</span>
|
||||
<a name="line-52"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-53"></a><span class='hs-comment'>-- z * -log(sigmoid(x)) + (1 - z) * -log(1 - sigmoid(x))</span>
|
||||
<a name="line-54"></a><span class='hs-comment'>-- = z * -log(1 / (1 + exp(-x))) + (1 - z) * -log(exp(-x) / (1 + exp(-x)))</span>
|
||||
<a name="line-55"></a><span class='hs-comment'>-- = z * log(1 + exp(-x)) + (1 - z) * (-log(exp(-x)) + log(1 + exp(-x)))</span>
|
||||
<a name="line-56"></a><span class='hs-comment'>-- = z * log(1 + exp(-x)) + (1 - z) * (x + log(1 + exp(-x))</span>
|
||||
<a name="line-57"></a><span class='hs-comment'>-- = (1 - z) * x + log(1 + exp(-x))</span>
|
||||
<a name="line-58"></a><span class='hs-comment'>-- = x - x * z + log(1 + exp(-x))</span>
|
||||
<a name="line-59"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-60"></a><span class='hs-comment'>-- For x < 0, to avoid overflow in exp(-x), we reformulate the above</span>
|
||||
<a name="line-61"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-62"></a><span class='hs-comment'>-- x - x * z + log(1 + exp(-x))</span>
|
||||
<a name="line-63"></a><span class='hs-comment'>-- = log(exp(x)) - x * z + log(1 + exp(-x))</span>
|
||||
<a name="line-64"></a><span class='hs-comment'>-- = - x * z + log(1 + exp(x))</span>
|
||||
<a name="line-65"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-66"></a><span class='hs-comment'>-- Hence, to ensure stability and avoid overflow, the implementation uses this</span>
|
||||
<a name="line-67"></a><span class='hs-comment'>-- equivalent formulation</span>
|
||||
<a name="line-68"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-69"></a><span class='hs-comment'>-- max(x, 0) - x * z + log(1 + exp(-abs(x)))</span>
|
||||
<a name="line-70"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-71"></a><span class='hs-comment'>-- `logits` and `targets` must have the same type and shape.</span>
|
||||
<a name="line-72"></a><span class='hs-definition'>sigmoidCrossEntropyWithLogits</span>
|
||||
<a name="line-73"></a> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>OneOf</span> <span class='hs-chr'>'</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>Float</span><span class='hs-layout'>,</span> <span class='hs-conid'>Double</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>a</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'>Num</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-74"></a> <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-comment'>-- ^ __logits__</span>
|
||||
<a name="line-75"></a> <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-comment'>-- ^ __targets__</span>
|
||||
<a name="line-76"></a> <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-conid'>Value</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-77"></a><span class='hs-definition'>sigmoidCrossEntropyWithLogits</span> <span class='hs-varid'>logits</span> <span class='hs-varid'>targets</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-78"></a> <span class='hs-varid'>logits'</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>render</span> <span class='hs-varid'>logits</span>
|
||||
<a name="line-79"></a> <span class='hs-varid'>targets'</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>render</span> <span class='hs-varid'>targets</span>
|
||||
<a name="line-80"></a> <span class='hs-keyword'>let</span> <span class='hs-varid'>zeros</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>zerosLike</span> <span class='hs-varid'>logits'</span>
|
||||
<a name="line-81"></a> <span class='hs-varid'>cond</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>logits'</span> <span class='hs-varop'>`greaterEqual`</span> <span class='hs-varid'>zeros</span>
|
||||
<a name="line-82"></a> <span class='hs-varid'>relu_logits</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>select</span> <span class='hs-varid'>cond</span> <span class='hs-varid'>logits'</span> <span class='hs-varid'>zeros</span>
|
||||
<a name="line-83"></a> <span class='hs-varid'>neg_abs_logits</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>select</span> <span class='hs-varid'>cond</span> <span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-varid'>logits'</span><span class='hs-layout'>)</span> <span class='hs-varid'>logits'</span>
|
||||
<a name="line-84"></a> <span class='hs-varid'>withNameScope</span> <span class='hs-str'>"logistic_loss"</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-85"></a> <span class='hs-varid'>left</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>render</span> <span class='hs-varop'>$</span> <span class='hs-varid'>relu_logits</span> <span class='hs-comment'>-</span> <span class='hs-varid'>logits'</span> <span class='hs-varop'>*</span> <span class='hs-varid'>targets'</span>
|
||||
<a name="line-86"></a> <span class='hs-varid'>right</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>render</span> <span class='hs-varop'>$</span> <span class='hs-varid'>log</span> <span class='hs-layout'>(</span><span class='hs-num'>1</span> <span class='hs-varop'>+</span> <span class='hs-varid'>exp</span> <span class='hs-varid'>neg_abs_logits</span><span class='hs-layout'>)</span>
|
||||
<a name="line-87"></a> <span class='hs-varid'>withNameScope</span> <span class='hs-str'>"sigmoid_add"</span> <span class='hs-varop'>$</span> <span class='hs-varid'>render</span> <span class='hs-varop'>$</span> <span class='hs-varid'>left</span> <span class='hs-varop'>`add`</span> <span class='hs-varid'>right</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -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 {}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,14 @@
|
|||
<!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.OpGen</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-OpGen.html");};
|
||||
//]]>
|
||||
</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-opgen-0.1.0.0: Code generation for TensorFlow operations.</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.OpGen</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Rendering of TensorFlow operations as Haskell functions.</p></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:OpGenFlags" class="def">OpGenFlags</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:OpGenFlags" class="def">OpGenFlags</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:outputFile" class="def">outputFile</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:prefix" class="def">prefix</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:excludeList" class="def">excludeList</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><a name="v:docOpList" class="def">docOpList</a> :: <a href="TensorFlow-OpGen.html#t:OpGenFlags">OpGenFlags</a> -> <a href="../tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-OpDef.html#t:OpList">OpList</a> -> Doc</p></div><div class="top"><p class="src"><a name="v:flagParser" class="def">flagParser</a> :: Parser <a href="TensorFlow-OpGen.html#t:OpGenFlags">OpGenFlags</a></p></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>
|
||||
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/TensorFlow-OpGen.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-opgen-0.1.0.0: Code generation for TensorFlow operations.</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.OpGen</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Rendering of TensorFlow operations as Haskell functions.</p><p>The basic type signature generated for each op is:</p><pre>{constraints} => {mandatory attrs} -> {input tensors} -> {output tensors}</pre><p>where:</p><ul><li><code>{mandatory attrs}</code> is of the form <code>A_1 -> ... -> A_N</code>, where each <code>A</code> is an
|
||||
op attribute that doesn't have a default and can't be inferred from other
|
||||
inputs.</li><li><code>{constraints}</code> restrict the type parameters of the input and output tensors
|
||||
(for example: <code>TensorType</code> or <code>OneOf</code>).</li><li><code>{input tensors}</code> is of the form <code>T_1 -> ... -> T_N</code>, where each <code>T</code> is of
|
||||
the form <code>Tensor Ref a</code>, <code>Tensor v a</code> or <code>ResourceHandle a</code> (or a list of one
|
||||
of those types), and <code>a</code> is either a concrete type or a (constrained) type
|
||||
variable.</li><li><code>{output tensors}</code> is of the form <code>(T_1,...,T_N)</code> for "pure" ops, and
|
||||
<code>Build (T_1,...,T_N)</code> for "stateful" ops. An op is considered "stateful" if
|
||||
it takes a <code>Tensor Ref</code> or <code>ResourceHandle</code> as input, or if it's explicitly
|
||||
marked "Stateful" in its <code>REGISTER_OP</code> definition. (If there are no outputs,
|
||||
it is either <code>ControlNode</code> or <code>Build ControlNode</code>.)</li></ul></div></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:OpGenFlags" class="def">OpGenFlags</a> <a href="src/TensorFlow-OpGen.html#OpGenFlags" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:OpGenFlags" class="def">OpGenFlags</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:outputFile" class="def">outputFile</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:prefix" class="def">prefix</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd><dt class="src"><a name="v:excludeList" class="def">excludeList</a> :: <a href="../base-4.8.2.0/Data-String.html#t:String">String</a></dt><dd class="doc empty"> </dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><a name="v:docOpList" class="def">docOpList</a> :: <a href="TensorFlow-OpGen.html#t:OpGenFlags">OpGenFlags</a> -> <a href="../tensorflow-proto-0.1.0.0/Proto-Tensorflow-Core-Framework-OpDef.html#t:OpList">OpList</a> -> <a href="../mainland-pretty-0.4.1.4/Text-PrettyPrint-Mainland.html#t:Doc">Doc</a> <a href="src/TensorFlow-OpGen.html#docOpList" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:flagParser" class="def">flagParser</a> :: <a href="../optparse-applicative-0.12.1.0/Options-Applicative-Types.html#t:Parser">Parser</a> <a href="TensorFlow-OpGen.html#t:OpGenFlags">OpGenFlags</a> <a href="src/TensorFlow-OpGen.html#flagParser" class="link">Source</a></p></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>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +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-opgen-0.1.0.0: Code generation for TensorFlow operations.</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-OpGen.html" target="main">TensorFlow.OpGen</a></li><li class="module"><a href="TensorFlow-OpGen-AttrVal.html" target="main">TensorFlow.OpGen.AttrVal</a></li></ul></div></body></html>
|
||||
</script></head><body id="mini"><div id="module-list"><p class="caption">Modules</p><ul><li class="module"><a href="TensorFlow-OpGen.html" target="main">TensorFlow.OpGen</a></li><li class="module"><a href="TensorFlow-OpGen-ParsedOp.html" target="main">TensorFlow.OpGen.ParsedOp</a></li></ul></div></body></html>
|
||||
|
|
@ -1,4 +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-opgen-0.1.0.0: Code generation for TensorFlow operations.</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-opgen-0.1.0.0: Code generation for TensorFlow operations.</p></div><div id="content"><div id="description"><h1>tensorflow-opgen-0.1.0.0: Code generation for TensorFlow operations.</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"><span id="control.n.1.1" class="collapser" onclick="toggleSection('n.1.1')"> </span><a href="TensorFlow-OpGen.html">TensorFlow.OpGen</a></span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="TensorFlow-OpGen-AttrVal.html">TensorFlow.OpGen.AttrVal</a></span></li></ul></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>
|
||||
</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-opgen-0.1.0.0: Code generation for TensorFlow operations.</p></div><div id="content"><div id="description"><h1>tensorflow-opgen-0.1.0.0: Code generation for TensorFlow operations.</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"><span id="control.n.1.1" class="collapser" onclick="toggleSection('n.1.1')"> </span><a href="TensorFlow-OpGen.html">TensorFlow.OpGen</a></span><ul id="section.n.1.1" class="show"><li><span class="module"><a href="TensorFlow-OpGen-ParsedOp.html">TensorFlow.OpGen.ParsedOp</a></span></li></ul></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>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
<!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.OpGen.AttrVal</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.OpGen.AttrVal</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-AttrVal.html#t:AttrDef" target="main">AttrDef</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-AttrVal.html#t:AttrCase" target="main">AttrCase</a> f</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-AttrVal.html#t:AttrTemplate" target="main">AttrTemplate</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-AttrVal.html#t:Template" target="main">Template</a> a</p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-AttrVal.html#v:attrDef" target="main">attrDef</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-AttrVal.html#v:attrOriginal" target="main">attrOriginal</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-AttrVal.html#v:attrTemplate" target="main">attrTemplate</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-AttrVal.html#v:templateDefault" target="main">templateDefault</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-AttrVal.html#v:templateRestrictions" target="main">templateRestrictions</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.OpGen.ParsedOp</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.OpGen.ParsedOp</p></div><div id="interface"><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:ParsedOp" target="main">ParsedOp</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:Name" target="main">Name</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:HaskellName" target="main">HaskellName</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:TFName" target="main">TFName</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:Attr" target="main">Attr</a> a</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:AttrType" target="main">AttrType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:AttrBaseType" target="main">AttrBaseType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:ParsedArg" target="main">ParsedArg</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:ParsedArgCase" target="main">ParsedArgCase</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:ArgType" target="main">ArgType</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a href="TensorFlow-OpGen-ParsedOp.html#t:ArgKind" target="main">ArgKind</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-ParsedOp.html#v:parseOp" target="main">parseOp</a></p></div><div class="top"><p class="src"><a href="TensorFlow-OpGen-ParsedOp.html#v:camelCase" target="main">camelCase</a></p></div></div></body></html>
|
||||
|
|
@ -0,0 +1,324 @@
|
|||
<?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/OpGen/ParsedOp.hs</title>
|
||||
<link type='text/css' rel='stylesheet' href='hscolour.css' />
|
||||
</head>
|
||||
<body>
|
||||
<pre><a name="line-1"></a><span class='hs-comment'>-- | This module helps parse the proto OpDef into a Haskell type which is more</span>
|
||||
<a name="line-2"></a><span class='hs-comment'>-- descriptive of how the attributes and arguments will be used in the</span>
|
||||
<a name="line-3"></a><span class='hs-comment'>-- generated code.</span>
|
||||
<a name="line-4"></a><span class='hs-comment'>{-# LANGUAGE LambdaCase #-}</span>
|
||||
<a name="line-5"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||
<a name="line-6"></a><span class='hs-comment'>{-# LANGUAGE RecordWildCards #-}</span>
|
||||
<a name="line-7"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>OpGen</span><span class='hs-varop'>.</span><span class='hs-conid'>ParsedOp</span>
|
||||
<a name="line-8"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>ParsedOp</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-9"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Name</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-10"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>HaskellName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-11"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TFName</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-12"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>Attr</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-13"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>AttrType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-14"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>AttrBaseType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-15"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ParsedArg</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-16"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ParsedArgCase</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-17"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ArgType</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-18"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>ArgKind</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-19"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parseOp</span>
|
||||
<a name="line-20"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>camelCase</span>
|
||||
<a name="line-21"></a> <span class='hs-layout'>)</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'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>toUpper</span><span class='hs-layout'>,</span> <span class='hs-varid'>toLower</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'>List</span> <span class='hs-layout'>(</span><span class='hs-varid'>sortBy</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'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>NonEmpty</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span><span class='hs-layout'>,</span> <span class='hs-varid'>nonEmpty</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'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>mapMaybe</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'>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-28"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Ord</span> <span class='hs-layout'>(</span><span class='hs-varid'>comparing</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'>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-30"></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-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'>Text</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>Text</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>
|
||||
<a name="line-33"></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-varid'>list</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'>OpDef</span>
|
||||
<a name="line-35"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>OpDef</span>
|
||||
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpDef'ArgDef</span>
|
||||
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpDef'AttrDef</span>
|
||||
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>allowedValues</span>
|
||||
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attr</span>
|
||||
<a name="line-40"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>maybe'defaultValue</span>
|
||||
<a name="line-41"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>description</span>
|
||||
<a name="line-42"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>name</span>
|
||||
<a name="line-43"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>inputArg</span>
|
||||
<a name="line-44"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isRef</span>
|
||||
<a name="line-45"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>isStateful</span>
|
||||
<a name="line-46"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputArg</span>
|
||||
<a name="line-47"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>summary</span>
|
||||
<a name="line-48"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>typeListAttr</span>
|
||||
<a name="line-49"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>numberAttr</span>
|
||||
<a name="line-50"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>typeAttr</span>
|
||||
<a name="line-51"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>type'</span>
|
||||
<a name="line-52"></a> <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'>Types</span> <span class='hs-layout'>(</span><span class='hs-conid'>DataType</span><span class='hs-layout'>(</span><span class='hs-conid'>DT_RESOURCE</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-54"></a>
|
||||
<a name="line-55"></a><a name="ParsedOp"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ParsedOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ParsedOp</span>
|
||||
<a name="line-56"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedOpName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-57"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpSummary</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-58"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpDescription</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-59"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedInputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>ParsedArg</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-60"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOutputs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>ParsedArg</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-61"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>explicitInputAttrs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-conid'>AttrType</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-62"></a> <span class='hs-comment'>-- ^ Attributes that must be set explicitly when creating the op.</span>
|
||||
<a name="line-63"></a> <span class='hs-comment'>-- Associated with the type of the attribute.</span>
|
||||
<a name="line-64"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DataType</span><span class='hs-keyglyph'>]</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-65"></a> <span class='hs-comment'>-- ^ Attributes that are type parameters.</span>
|
||||
<a name="line-66"></a> <span class='hs-comment'>-- Associated with the list of allowed types (see: TensorFlow.Types.OneOf).</span>
|
||||
<a name="line-67"></a> <span class='hs-comment'>-- If this list is empty, then any type is acceptable.</span>
|
||||
<a name="line-68"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>inferredListSizeAttrs</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span> <span class='hs-conid'>Name</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-69"></a> <span class='hs-comment'>-- Attributes which are list sizes (ints) that are inferred automatically</span>
|
||||
<a name="line-70"></a> <span class='hs-comment'>-- from one or more of the input tensors.</span>
|
||||
<a name="line-71"></a> <span class='hs-comment'>-- Associated with the list of tensors whose size it describes.</span>
|
||||
<a name="line-72"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpIsMonadic</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Bool</span>
|
||||
<a name="line-73"></a> <span class='hs-comment'>-- ^ Whether this op is stateful or takes a stateful input. Such ops</span>
|
||||
<a name="line-74"></a> <span class='hs-comment'>-- should not be CSE'd and must be monadic in our API (i.e., return a</span>
|
||||
<a name="line-75"></a> <span class='hs-comment'>-- Build action).</span>
|
||||
<a name="line-76"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-77"></a>
|
||||
<a name="line-78"></a><a name="Name"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Name</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-79"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>haskellName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>HaskellName</span>
|
||||
<a name="line-80"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tfName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>TFName</span>
|
||||
<a name="line-81"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-82"></a>
|
||||
<a name="line-83"></a><a name="TFName"></a><span class='hs-comment'>-- | A raw name as specified in the OpDef proto.</span>
|
||||
<a name="line-84"></a><a name="TFName"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>TFName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TFName</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unTFName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-85"></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-86"></a>
|
||||
<a name="line-87"></a><a name="HaskellName"></a><span class='hs-comment'>-- | A name that's appropriate for a variable in a Haskell source file.</span>
|
||||
<a name="line-88"></a><a name="HaskellName"></a><span class='hs-keyword'>newtype</span> <span class='hs-conid'>HaskellName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HaskellName</span> <span class='hs-layout'>{</span> <span class='hs-varid'>unHaskellName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-89"></a>
|
||||
<a name="line-90"></a><a name="Attr"></a><span class='hs-comment'>-- | A named attribute, associated with some information about it.</span>
|
||||
<a name="line-91"></a><a name="Attr"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Attr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Attr</span>
|
||||
<a name="line-92"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>attrName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-93"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attrDescription</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-94"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attrInfo</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-95"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-96"></a>
|
||||
<a name="line-97"></a><a name="AttrType"></a><span class='hs-comment'>-- | The type of an attribute.</span>
|
||||
<a name="line-98"></a><a name="AttrType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>AttrType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrBaseType</span>
|
||||
<a name="line-99"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrBaseType</span>
|
||||
<a name="line-100"></a> <span class='hs-keyword'>deriving</span> <span class='hs-conid'>Eq</span>
|
||||
<a name="line-101"></a>
|
||||
<a name="line-102"></a><a name="AttrBaseType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>AttrBaseType</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AttrBytes</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrInt64</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrFloat</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrBool</span>
|
||||
<a name="line-103"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrType</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrShape</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AttrTensor</span>
|
||||
<a name="line-104"></a> <span class='hs-keyword'>deriving</span> <span class='hs-conid'>Eq</span>
|
||||
<a name="line-105"></a>
|
||||
<a name="line-106"></a><a name="ParsedArg"></a><span class='hs-comment'>-- | An input or output argument (Tensor) for an op.</span>
|
||||
<a name="line-107"></a><a name="ParsedArg"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ParsedArg</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ParsedArg</span>
|
||||
<a name="line-108"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedArgName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-109"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgDescription</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-110"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedArgCase</span>
|
||||
<a name="line-111"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ArgKind</span>
|
||||
<a name="line-112"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-113"></a>
|
||||
<a name="line-114"></a><a name="ParsedArgCase"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ParsedArgCase</span>
|
||||
<a name="line-115"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SimpleArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ArgType</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-116"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ListArg</span>
|
||||
<a name="line-117"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>argLength</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span> <span class='hs-comment'>-- ^ The attribute that specifies this list's length.</span>
|
||||
<a name="line-118"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>argType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ArgType</span>
|
||||
<a name="line-119"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-120"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>MixedListArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argTypeAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-121"></a> <span class='hs-comment'>-- ^ A heterogeneous list.</span>
|
||||
<a name="line-122"></a> <span class='hs-comment'>-- TODO(judahjacobson): Implement this.</span>
|
||||
<a name="line-123"></a>
|
||||
<a name="line-124"></a><a name="ArgType"></a><span class='hs-comment'>-- | The type of an argument.</span>
|
||||
<a name="line-125"></a><a name="ArgType"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ArgType</span>
|
||||
<a name="line-126"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTypeFixed</span> <span class='hs-conid'>DataType</span> <span class='hs-comment'>-- ^ A fixed type.</span>
|
||||
<a name="line-127"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ArgTypeAttr</span> <span class='hs-conid'>Name</span> <span class='hs-comment'>-- ^ A type that depends on an attribute.</span>
|
||||
<a name="line-128"></a>
|
||||
<a name="line-129"></a><a name="ArgKind"></a><span class='hs-comment'>-- The kind of an op input or output (not including the argument type `a`).</span>
|
||||
<a name="line-130"></a><a name="ArgKind"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ArgKind</span>
|
||||
<a name="line-131"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTensorRef</span> <span class='hs-comment'>-- Tensor Ref a</span>
|
||||
<a name="line-132"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ArgTensorValue</span> <span class='hs-comment'>-- Tensor Value a</span>
|
||||
<a name="line-133"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ArgTensorEither</span> <span class='hs-conid'>Text</span> <span class='hs-comment'>-- Tensor v a; the Text is the variable `v`</span>
|
||||
<a name="line-134"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ArgResource</span> <span class='hs-comment'>-- Resource a</span>
|
||||
<a name="line-135"></a>
|
||||
<a name="line-136"></a><a name="isRefKind"></a><span class='hs-definition'>isRefKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ArgKind</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Bool</span>
|
||||
<a name="line-137"></a><span class='hs-definition'>isRefKind</span> <span class='hs-conid'>ArgTensorRef</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
|
||||
<a name="line-138"></a><span class='hs-definition'>isRefKind</span> <span class='hs-conid'>ArgResource</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>True</span>
|
||||
<a name="line-139"></a><span class='hs-definition'>isRefKind</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>False</span>
|
||||
<a name="line-140"></a>
|
||||
<a name="line-141"></a><a name="makeName"></a><span class='hs-definition'>makeName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-142"></a><span class='hs-definition'>makeName</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-143"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>haskellName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>HaskellName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>fixReservedName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>lowCase</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-144"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tfName</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TFName</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-145"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-146"></a>
|
||||
<a name="line-147"></a><a name="fixReservedName"></a><span class='hs-comment'>-- | Change a name so it doesn't conflict with any Haskell keywords.</span>
|
||||
<a name="line-148"></a><span class='hs-definition'>fixReservedName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-149"></a><span class='hs-definition'>fixReservedName</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-150"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>n</span> <span class='hs-varop'>`</span><span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>member</span><span class='hs-varop'>`</span> <span class='hs-varid'>reservedKeywords</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-varop'><></span> <span class='hs-str'>"'"</span>
|
||||
<a name="line-151"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-152"></a>
|
||||
<a name="line-153"></a><a name="reservedKeywords"></a><span class='hs-definition'>reservedKeywords</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-154"></a><span class='hs-definition'>reservedKeywords</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-155"></a> <span class='hs-comment'>-- Haskell2010 keywords:</span>
|
||||
<a name="line-156"></a> <span class='hs-comment'>-- https://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-180002.4</span>
|
||||
<a name="line-157"></a> <span class='hs-comment'>-- We don't include keywords that are allowed to be variable names,</span>
|
||||
<a name="line-158"></a> <span class='hs-comment'>-- in particular: "as", "forall", and "hiding".</span>
|
||||
<a name="line-159"></a> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"case"</span>
|
||||
<a name="line-160"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"class"</span>
|
||||
<a name="line-161"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"data"</span>
|
||||
<a name="line-162"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"default"</span>
|
||||
<a name="line-163"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"deriving"</span>
|
||||
<a name="line-164"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"do"</span>
|
||||
<a name="line-165"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"else"</span>
|
||||
<a name="line-166"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"foreign"</span>
|
||||
<a name="line-167"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"if"</span>
|
||||
<a name="line-168"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import"</span>
|
||||
<a name="line-169"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"in"</span>
|
||||
<a name="line-170"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"infix"</span>
|
||||
<a name="line-171"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"infixl"</span>
|
||||
<a name="line-172"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"infixr"</span>
|
||||
<a name="line-173"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"instance"</span>
|
||||
<a name="line-174"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"let"</span>
|
||||
<a name="line-175"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"module"</span>
|
||||
<a name="line-176"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"newtype"</span>
|
||||
<a name="line-177"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"of"</span>
|
||||
<a name="line-178"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"then"</span>
|
||||
<a name="line-179"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"type"</span>
|
||||
<a name="line-180"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"where"</span>
|
||||
<a name="line-181"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-182"></a> <span class='hs-varop'>++</span> <span class='hs-comment'>-- Nonstandard extensions</span>
|
||||
<a name="line-183"></a> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"mdo"</span> <span class='hs-comment'>-- RecursiveDo</span>
|
||||
<a name="line-184"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"rec"</span> <span class='hs-comment'>-- Arrows, RecursiveDo</span>
|
||||
<a name="line-185"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"proc"</span> <span class='hs-comment'>-- Arrows</span>
|
||||
<a name="line-186"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-187"></a>
|
||||
<a name="line-188"></a><a name="lowCase"></a><span class='hs-comment'>-- | Lower-case the given text.</span>
|
||||
<a name="line-189"></a><span class='hs-definition'>lowCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-190"></a><span class='hs-definition'>lowCase</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>forceCase</span> <span class='hs-varid'>toLower</span>
|
||||
<a name="line-191"></a>
|
||||
<a name="line-192"></a><a name="forceCase"></a><span class='hs-definition'>forceCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Char</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Char</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-193"></a><span class='hs-definition'>forceCase</span> <span class='hs-varid'>convert</span> <span class='hs-varid'>s</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>maybe</span> <span class='hs-str'>""</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>c</span><span class='hs-layout'>,</span> <span class='hs-varid'>cs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>cons</span> <span class='hs-layout'>(</span><span class='hs-varid'>convert</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-varid'>cs</span><span class='hs-layout'>)</span>
|
||||
<a name="line-194"></a> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>uncons</span> <span class='hs-varid'>s</span><span class='hs-layout'>)</span>
|
||||
<a name="line-195"></a>
|
||||
<a name="line-196"></a><a name="camelCase"></a><span class='hs-definition'>camelCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-197"></a><span class='hs-definition'>camelCase</span> <span class='hs-varid'>s</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'>map</span> <span class='hs-varid'>upCase</span>
|
||||
<a name="line-198"></a> <span class='hs-varop'>$</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>splitOn</span> <span class='hs-str'>"_"</span> <span class='hs-varid'>s</span>
|
||||
<a name="line-199"></a>
|
||||
<a name="line-200"></a><a name="upCase"></a><span class='hs-comment'>-- | Upper-case the given text.</span>
|
||||
<a name="line-201"></a><span class='hs-definition'>upCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span>
|
||||
<a name="line-202"></a><span class='hs-definition'>upCase</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>forceCase</span> <span class='hs-varid'>toUpper</span>
|
||||
<a name="line-203"></a>
|
||||
<a name="line-204"></a>
|
||||
<a name="line-205"></a><a name="parseOp"></a><span class='hs-definition'>parseOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ParsedOp</span>
|
||||
<a name="line-206"></a><span class='hs-definition'>parseOp</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ParsedOp</span>
|
||||
<a name="line-207"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedOpName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>name</span>
|
||||
<a name="line-208"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpSummary</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>summary</span>
|
||||
<a name="line-209"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>description</span>
|
||||
<a name="line-210"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedOpIsMonadic</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>isStateful</span>
|
||||
<a name="line-211"></a> <span class='hs-varop'>||</span> <span class='hs-varid'>any</span> <span class='hs-layout'>(</span><span class='hs-varid'>isRefKind</span> <span class='hs-varop'>.</span> <span class='hs-varid'>parsedArgKind</span><span class='hs-layout'>)</span> <span class='hs-varid'>parsedInputs</span>
|
||||
<a name="line-212"></a> <span class='hs-layout'>,</span> <span class='hs-keyglyph'>..</span>
|
||||
<a name="line-213"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-214"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-215"></a> <span class='hs-varid'>parsedInputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>zipWith</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>a</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>parseArg</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-varid'>inputTensorKind</span> <span class='hs-varid'>a</span> <span class='hs-varid'>v</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-216"></a> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>inputArg</span><span class='hs-layout'>)</span> <span class='hs-varid'>tensorKindParams</span>
|
||||
<a name="line-217"></a> <span class='hs-varid'>tensorKindParams</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"v"</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'>x</span><span class='hs-layout'>)</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-num'>1</span><span class='hs-keyglyph'>::</span><span class='hs-conid'>Integer</span> <span class='hs-keyglyph'>..</span><span class='hs-keyglyph'>]</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-218"></a> <span class='hs-varid'>parsedOutputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</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-varid'>parseArg</span> <span class='hs-varid'>a</span> <span class='hs-layout'>(</span><span class='hs-varid'>outputTensorKind</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>outputArg</span><span class='hs-layout'>)</span>
|
||||
<a name="line-219"></a> <span class='hs-varid'>explicitInputAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>sortBy</span> <span class='hs-layout'>(</span><span class='hs-varid'>comparing</span> <span class='hs-layout'>(</span><span class='hs-varid'>tfName</span> <span class='hs-varop'>.</span> <span class='hs-varid'>attrName</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-220"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>mapMaybeAttrs</span> <span class='hs-layout'>(</span><span class='hs-varid'>getExplicitInputAttr</span> <span class='hs-varid'>implicitAttrs</span><span class='hs-layout'>)</span>
|
||||
<a name="line-221"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>attr</span>
|
||||
<a name="line-222"></a> <span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapMaybeAttrs</span> <span class='hs-varid'>getInferredTypeAttr</span> <span class='hs-varop'>$</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>attr</span>
|
||||
<a name="line-223"></a> <span class='hs-varid'>inferredListSizeAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapMaybeAttrs</span> <span class='hs-layout'>(</span><span class='hs-varid'>getInferredListSizeAttr</span> <span class='hs-varid'>parsedInputs</span><span class='hs-layout'>)</span>
|
||||
<a name="line-224"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>o</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>attr</span>
|
||||
<a name="line-225"></a> <span class='hs-varid'>implicitAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>tfName</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-226"></a> <span class='hs-varid'>map</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>inferredTypeAttrs</span>
|
||||
<a name="line-227"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>map</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>inferredListSizeAttrs</span>
|
||||
<a name="line-228"></a>
|
||||
<a name="line-229"></a><a name="inputTensorKind"></a><span class='hs-comment'>-- TODO(judahjacobson): Some arguments should be refs.</span>
|
||||
<a name="line-230"></a><span class='hs-definition'>inputTensorKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef'ArgDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ArgKind</span>
|
||||
<a name="line-231"></a><span class='hs-definition'>inputTensorKind</span> <span class='hs-varid'>a</span> <span class='hs-varid'>v</span>
|
||||
<a name="line-232"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span> <span class='hs-varop'>==</span> <span class='hs-conid'>DT_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgResource</span>
|
||||
<a name="line-233"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>isRef</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTensorRef</span>
|
||||
<a name="line-234"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTensorEither</span> <span class='hs-varid'>v</span>
|
||||
<a name="line-235"></a>
|
||||
<a name="line-236"></a><a name="outputTensorKind"></a><span class='hs-definition'>outputTensorKind</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef'ArgDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ArgKind</span>
|
||||
<a name="line-237"></a><span class='hs-definition'>outputTensorKind</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-238"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span> <span class='hs-varop'>==</span> <span class='hs-conid'>DT_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgResource</span>
|
||||
<a name="line-239"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>isRef</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTensorRef</span>
|
||||
<a name="line-240"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTensorValue</span>
|
||||
<a name="line-241"></a>
|
||||
<a name="line-242"></a><a name="getExplicitInputAttr"></a><span class='hs-definition'>getExplicitInputAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-conid'>Set</span> <span class='hs-conid'>TFName</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef'AttrDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>AttrType</span>
|
||||
<a name="line-243"></a><span class='hs-definition'>getExplicitInputAttr</span> <span class='hs-varid'>implicitAttrs</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-244"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>TFName</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</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-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>notMember</span><span class='hs-varop'>`</span> <span class='hs-varid'>implicitAttrs</span>
|
||||
<a name="line-245"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>maybe'defaultValue</span> <span class='hs-varop'>==</span> <span class='hs-conid'>Nothing</span>
|
||||
<a name="line-246"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>parseAttrType</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span><span class='hs-layout'>)</span>
|
||||
<a name="line-247"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>t</span> <span class='hs-varop'>`elem`</span> <span class='hs-varid'>map</span> <span class='hs-conid'>AttrSingle</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>AttrBool</span><span class='hs-layout'>,</span> <span class='hs-conid'>AttrInt64</span><span class='hs-layout'>,</span> <span class='hs-conid'>AttrFloat</span><span class='hs-layout'>,</span> <span class='hs-conid'>AttrShape</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>t</span>
|
||||
<a name="line-248"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
|
||||
<a name="line-249"></a>
|
||||
<a name="line-250"></a><a name="getInferredTypeAttr"></a><span class='hs-definition'>getInferredTypeAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef'AttrDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DataType</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-251"></a><span class='hs-definition'>getInferredTypeAttr</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-252"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span> <span class='hs-varop'>==</span> <span class='hs-str'>"type"</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>allowedValues</span> <span class='hs-varop'>.</span> <span class='hs-varid'>list</span> <span class='hs-varop'>.</span> <span class='hs-varid'>type'</span>
|
||||
<a name="line-253"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
|
||||
<a name="line-254"></a>
|
||||
<a name="line-255"></a><a name="getInferredListSizeAttr"></a><span class='hs-definition'>getInferredListSizeAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>ParsedArg</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpDef'AttrDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span> <span class='hs-conid'>Name</span><span class='hs-layout'>)</span>
|
||||
<a name="line-256"></a><span class='hs-definition'>getInferredListSizeAttr</span> <span class='hs-varid'>inputs</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-257"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span> <span class='hs-varop'>==</span> <span class='hs-str'>"int"</span>
|
||||
<a name="line-258"></a> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>nonEmpty</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>t</span> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ParsedArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedArgName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span>
|
||||
<a name="line-259"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgCase</span>
|
||||
<a name="line-260"></a> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ListArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argLength</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>n</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-261"></a> <span class='hs-layout'>}</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>inputs</span>
|
||||
<a name="line-262"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>TFName</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</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'>tfName</span> <span class='hs-varid'>n</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-263"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
|
||||
<a name="line-264"></a>
|
||||
<a name="line-265"></a><a name="mapMaybeAttrs"></a><span class='hs-comment'>-- | Like mapMaybe, but associates the attribute name/description with the given info.</span>
|
||||
<a name="line-266"></a><span class='hs-definition'>mapMaybeAttrs</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>OpDef'AttrDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>OpDef'AttrDef</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-267"></a><span class='hs-definition'>mapMaybeAttrs</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>mapMaybe</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyword'>do</span>
|
||||
<a name="line-268"></a> <span class='hs-varid'>x</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>f</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-269"></a> <span class='hs-conid'>Just</span> <span class='hs-conid'>Attr</span>
|
||||
<a name="line-270"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>attrName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeName</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span>
|
||||
<a name="line-271"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attrDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>description</span>
|
||||
<a name="line-272"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attrInfo</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>x</span>
|
||||
<a name="line-273"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-274"></a>
|
||||
<a name="line-275"></a><a name="parseArg"></a><span class='hs-definition'>parseArg</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef'ArgDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ArgKind</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ParsedArg</span>
|
||||
<a name="line-276"></a><span class='hs-definition'>parseArg</span> <span class='hs-varid'>a</span> <span class='hs-varid'>tKind</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ParsedArg</span>
|
||||
<a name="line-277"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedArgName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeName</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span>
|
||||
<a name="line-278"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgDescription</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>description</span>
|
||||
<a name="line-279"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgCase</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>parseArgCase</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-280"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parsedArgKind</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tKind</span>
|
||||
<a name="line-281"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-282"></a>
|
||||
<a name="line-283"></a><a name="parseArgCase"></a><span class='hs-definition'>parseArgCase</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef'ArgDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>ParsedArgCase</span>
|
||||
<a name="line-284"></a><span class='hs-definition'>parseArgCase</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-285"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>maybeAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>typeListAttr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>MixedListArg</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-286"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>maybeAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>numberAttr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ListArg</span> <span class='hs-varid'>n</span> <span class='hs-varid'>thisArgType</span>
|
||||
<a name="line-287"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>SimpleArg</span> <span class='hs-varid'>thisArgType</span>
|
||||
<a name="line-288"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-289"></a> <span class='hs-varid'>thisArgType</span>
|
||||
<a name="line-290"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>maybeAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>typeAttr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTypeAttr</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-291"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span> <span class='hs-varop'>==</span> <span class='hs-conid'>DT_RESOURCE</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTypeAttr</span> <span class='hs-layout'>(</span><span class='hs-varid'>makeName</span> <span class='hs-str'>"dtype"</span><span class='hs-layout'>)</span>
|
||||
<a name="line-292"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ArgTypeFixed</span> <span class='hs-layout'>(</span><span class='hs-varid'>a</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>type'</span><span class='hs-layout'>)</span>
|
||||
<a name="line-293"></a> <span class='hs-varid'>maybeAttr</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Name</span>
|
||||
<a name="line-294"></a> <span class='hs-varid'>maybeAttr</span> <span class='hs-str'>""</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
|
||||
<a name="line-295"></a> <span class='hs-varid'>maybeAttr</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-varid'>makeName</span> <span class='hs-varid'>t</span>
|
||||
<a name="line-296"></a>
|
||||
<a name="line-297"></a><a name="parseAttrType"></a><span class='hs-definition'>parseAttrType</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrType</span>
|
||||
<a name="line-298"></a><span class='hs-definition'>parseAttrType</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>case</span>
|
||||
<a name="line-299"></a> <span class='hs-str'>"string"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrBytes</span>
|
||||
<a name="line-300"></a> <span class='hs-str'>"int"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrInt64</span>
|
||||
<a name="line-301"></a> <span class='hs-str'>"float"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrFloat</span>
|
||||
<a name="line-302"></a> <span class='hs-str'>"bool"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrBool</span>
|
||||
<a name="line-303"></a> <span class='hs-str'>"type"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrType</span>
|
||||
<a name="line-304"></a> <span class='hs-str'>"shape"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrShape</span>
|
||||
<a name="line-305"></a> <span class='hs-str'>"tensor"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrSingle</span> <span class='hs-conid'>AttrTensor</span>
|
||||
<a name="line-306"></a> <span class='hs-str'>"list(string)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrBytes</span>
|
||||
<a name="line-307"></a> <span class='hs-str'>"list(int)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrInt64</span>
|
||||
<a name="line-308"></a> <span class='hs-str'>"list(float)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrFloat</span>
|
||||
<a name="line-309"></a> <span class='hs-str'>"list(bool)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrBool</span>
|
||||
<a name="line-310"></a> <span class='hs-str'>"list(type)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrType</span>
|
||||
<a name="line-311"></a> <span class='hs-str'>"list(shape)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrShape</span>
|
||||
<a name="line-312"></a> <span class='hs-str'>"list(tensor)"</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>AttrList</span> <span class='hs-conid'>AttrTensor</span>
|
||||
<a name="line-313"></a> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>error</span> <span class='hs-varop'>$</span> <span class='hs-str'>"parseAttrType: unrecognized type "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>t</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,428 @@
|
|||
<?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/OpGen.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 FlexibleContexts #-}</span>
|
||||
<a name="line-16"></a><span class='hs-comment'>{-# LANGUAGE LambdaCase #-}</span>
|
||||
<a name="line-17"></a><span class='hs-comment'>{-# LANGUAGE OverloadedStrings #-}</span>
|
||||
<a name="line-18"></a><span class='hs-comment'>{-# LANGUAGE TypeFamilies #-}</span>
|
||||
<a name="line-19"></a><span class='hs-comment'>{- | Rendering of TensorFlow operations as Haskell functions.
|
||||
<a name="line-20"></a>
|
||||
<a name="line-21"></a>The basic type signature generated for each op is:
|
||||
<a name="line-22"></a>
|
||||
<a name="line-23"></a>> {constraints} => {mandatory attrs} -> {input tensors} -> {output tensors}
|
||||
<a name="line-24"></a>
|
||||
<a name="line-25"></a>where:
|
||||
<a name="line-26"></a>
|
||||
<a name="line-27"></a>* @{mandatory attrs}@ is of the form @A_1 -> ... -> A_N@, where each @A@ is an
|
||||
<a name="line-28"></a> op attribute that doesn't have a default and can't be inferred from other
|
||||
<a name="line-29"></a> inputs.
|
||||
<a name="line-30"></a>
|
||||
<a name="line-31"></a>* @{constraints}@ restrict the type parameters of the input and output tensors
|
||||
<a name="line-32"></a> (for example: 'TensorType' or 'OneOf').
|
||||
<a name="line-33"></a>
|
||||
<a name="line-34"></a>* @{input tensors}@ is of the form @T_1 -> ... -> T_N@, where each @T@ is of
|
||||
<a name="line-35"></a>the form @Tensor Ref a@, @Tensor v a@ or @ResourceHandle a@ (or a list of one
|
||||
<a name="line-36"></a>of those types), and @a@ is either a concrete type or a (constrained) type
|
||||
<a name="line-37"></a>variable.
|
||||
<a name="line-38"></a>
|
||||
<a name="line-39"></a>* @{output tensors}@ is of the form @(T_1,...,T_N)@ for "pure" ops, and
|
||||
<a name="line-40"></a>@Build (T_1,...,T_N)@ for "stateful" ops. An op is considered "stateful" if
|
||||
<a name="line-41"></a>it takes a @Tensor Ref@ or @ResourceHandle@ as input, or if it's explicitly
|
||||
<a name="line-42"></a>marked \"Stateful\" in its @REGISTER_OP@ definition. (If there are no outputs,
|
||||
<a name="line-43"></a>it is either @ControlNode@ or @Build ControlNode@.)
|
||||
<a name="line-44"></a>-}</span>
|
||||
<a name="line-45"></a>
|
||||
<a name="line-46"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>OpGen</span>
|
||||
<a name="line-47"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>OpGenFlags</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
|
||||
<a name="line-48"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>docOpList</span>
|
||||
<a name="line-49"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>flagParser</span><span class='hs-layout'>)</span>
|
||||
<a name="line-50"></a> <span class='hs-keyword'>where</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'>Foldable</span> <span class='hs-layout'>(</span><span class='hs-varid'>toList</span><span class='hs-layout'>)</span>
|
||||
<a name="line-53"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Maybe</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromMaybe</span><span class='hs-layout'>)</span>
|
||||
<a name="line-54"></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> <span class='hs-varid'>showMessage</span><span class='hs-layout'>)</span>
|
||||
<a name="line-55"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>NonEmpty</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span><span class='hs-layout'>)</span>
|
||||
<a name="line-56"></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'>List</span><span class='hs-varop'>.</span><span class='hs-conid'>NonEmpty</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>NE</span>
|
||||
<a name="line-57"></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> <span class='hs-varid'>view</span><span class='hs-layout'>)</span>
|
||||
<a name="line-58"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Options</span><span class='hs-varop'>.</span><span class='hs-conid'>Applicative</span> <span class='hs-layout'>(</span><span class='hs-conid'>Parser</span><span class='hs-layout'>,</span> <span class='hs-varid'>help</span><span class='hs-layout'>,</span> <span class='hs-varid'>long</span><span class='hs-layout'>,</span> <span class='hs-varid'>strOption</span><span class='hs-layout'>,</span> <span class='hs-varid'>value</span><span class='hs-layout'>)</span>
|
||||
<a name="line-59"></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'>OpDef</span>
|
||||
<a name="line-60"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>OpList</span>
|
||||
<a name="line-61"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OpDef</span>
|
||||
<a name="line-62"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>attr</span>
|
||||
<a name="line-63"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>inputArg</span>
|
||||
<a name="line-64"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>name</span>
|
||||
<a name="line-65"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>op</span>
|
||||
<a name="line-66"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>outputArg</span>
|
||||
<a name="line-67"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-68"></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-69"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>FilePath</span> <span class='hs-layout'>(</span><span class='hs-varid'>takeBaseName</span><span class='hs-layout'>)</span>
|
||||
<a name="line-70"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>TensorFlow</span><span class='hs-varop'>.</span><span class='hs-conid'>OpGen</span><span class='hs-varop'>.</span><span class='hs-conid'>ParsedOp</span>
|
||||
<a name="line-71"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>PrettyPrint</span><span class='hs-varop'>.</span><span class='hs-conid'>Mainland</span>
|
||||
<a name="line-72"></a> <span class='hs-layout'>(</span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-73"></a> <span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'><></span><span class='hs-layout'>)</span>
|
||||
<a name="line-74"></a> <span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'><+></span><span class='hs-layout'>)</span>
|
||||
<a name="line-75"></a> <span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'></></span><span class='hs-layout'>)</span>
|
||||
<a name="line-76"></a> <span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varop'><+/></span><span class='hs-layout'>)</span>
|
||||
<a name="line-77"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>brackets</span>
|
||||
<a name="line-78"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>comma</span>
|
||||
<a name="line-79"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>commasep</span>
|
||||
<a name="line-80"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>dquotes</span>
|
||||
<a name="line-81"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>empty</span>
|
||||
<a name="line-82"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>enclose</span>
|
||||
<a name="line-83"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>flatten</span>
|
||||
<a name="line-84"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>folddoc</span>
|
||||
<a name="line-85"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>hang</span>
|
||||
<a name="line-86"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>indent</span>
|
||||
<a name="line-87"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>parens</span>
|
||||
<a name="line-88"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>sep</span>
|
||||
<a name="line-89"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>stack</span>
|
||||
<a name="line-90"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>strictText</span>
|
||||
<a name="line-91"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>tuple</span>
|
||||
<a name="line-92"></a> <span class='hs-layout'>)</span>
|
||||
<a name="line-93"></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-94"></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-95"></a>
|
||||
<a name="line-96"></a><a name="OpGenFlags"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>OpGenFlags</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpGenFlags</span>
|
||||
<a name="line-97"></a> <span class='hs-layout'>{</span> <span class='hs-varid'>outputFile</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
|
||||
<a name="line-98"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>prefix</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
|
||||
<a name="line-99"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>excludeList</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span>
|
||||
<a name="line-100"></a> <span class='hs-layout'>}</span>
|
||||
<a name="line-101"></a>
|
||||
<a name="line-102"></a><a name="flagParser"></a><span class='hs-definition'>flagParser</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Parser</span> <span class='hs-conid'>OpGenFlags</span>
|
||||
<a name="line-103"></a><span class='hs-definition'>flagParser</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OpGenFlags</span>
|
||||
<a name="line-104"></a> <span class='hs-varop'><$></span> <span class='hs-varid'>strOption</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>long</span> <span class='hs-str'>"output"</span>
|
||||
<a name="line-105"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>help</span> <span class='hs-str'>"File to write."</span>
|
||||
<a name="line-106"></a> <span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||
<a name="line-107"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>strOption</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>long</span> <span class='hs-str'>"prefix"</span>
|
||||
<a name="line-108"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>help</span> <span class='hs-str'>"Haskell package prefix to use"</span>
|
||||
<a name="line-109"></a> <span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||
<a name="line-110"></a> <span class='hs-varop'><*></span> <span class='hs-varid'>strOption</span> <span class='hs-layout'>(</span><span class='hs-varid'>mconcat</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>long</span> <span class='hs-str'>"exclude_list"</span>
|
||||
<a name="line-111"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>value</span> <span class='hs-str'>""</span>
|
||||
<a name="line-112"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>help</span> <span class='hs-str'>"Comma separated Ops names to ignore"</span>
|
||||
<a name="line-113"></a> <span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||
<a name="line-114"></a>
|
||||
<a name="line-115"></a>
|
||||
<a name="line-116"></a><a name="docOpList"></a><span class='hs-definition'>docOpList</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpGenFlags</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OpList</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-117"></a><span class='hs-definition'>docOpList</span> <span class='hs-varid'>flags</span> <span class='hs-varid'>opList</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-118"></a> <span class='hs-varid'>stack</span> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"{-# LANGUAGE ConstraintKinds #-}"</span>
|
||||
<a name="line-119"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# LANGUAGE DataKinds #-}"</span>
|
||||
<a name="line-120"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# LANGUAGE FlexibleInstances #-}"</span>
|
||||
<a name="line-121"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# LANGUAGE OverloadedStrings #-}"</span>
|
||||
<a name="line-122"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# LANGUAGE ScopedTypeVariables #-}"</span>
|
||||
<a name="line-123"></a> <span class='hs-comment'>-- Avoids reports about shadowing standard library names.</span>
|
||||
<a name="line-124"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# OPTIONS_GHC -fno-warn-name-shadowing #-}"</span>
|
||||
<a name="line-125"></a> <span class='hs-comment'>-- eqLengthGuard never returns false and dies instead.</span>
|
||||
<a name="line-126"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}"</span>
|
||||
<a name="line-127"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"module"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>strictText</span> <span class='hs-varid'>moduleName</span> <span class='hs-varop'><+></span> <span class='hs-str'>"where"</span>
|
||||
<a name="line-128"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>empty</span>
|
||||
<a name="line-129"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>imports</span>
|
||||
<a name="line-130"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>empty</span>
|
||||
<a name="line-131"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>folddoc</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>x</span> <span class='hs-varop'></></span> <span class='hs-varid'>empty</span> <span class='hs-varop'></></span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
|
||||
<a name="line-132"></a> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>renderOpAndExtras</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-133"></a> <span class='hs-varid'>filter</span> <span class='hs-layout'>(</span><span class='hs-varid'>not</span> <span class='hs-varop'>.</span> <span class='hs-varid'>flip</span> <span class='hs-varid'>elem</span> <span class='hs-varid'>exclusions</span> <span class='hs-varop'>.</span> <span class='hs-varid'>view</span> <span class='hs-varid'>name</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-134"></a> <span class='hs-varid'>toList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>opList</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>op</span><span class='hs-layout'>)</span>
|
||||
<a name="line-135"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-136"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>moduleName</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-137"></a> <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'>prefix</span> <span class='hs-varid'>flags</span><span class='hs-layout'>)</span> <span class='hs-varop'><></span> <span class='hs-str'>"."</span> <span class='hs-varop'><></span> <span class='hs-varid'>camelCase</span>
|
||||
<a name="line-138"></a> <span class='hs-comment'>-- Discards the optional trailing _ops_op_lib</span>
|
||||
<a name="line-139"></a> <span class='hs-layout'>(</span><span class='hs-varid'>fromMaybe</span> <span class='hs-varid'>shortName</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>stripSuffix</span> <span class='hs-str'>"_ops_op_lib"</span> <span class='hs-varid'>shortName</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-140"></a> <span class='hs-varid'>shortName</span> <span class='hs-keyglyph'>=</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'>takeBaseName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>outputFile</span> <span class='hs-varid'>flags</span><span class='hs-layout'>)</span>
|
||||
<a name="line-141"></a> <span class='hs-varid'>exclusions</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>splitOn</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-varop'>$</span> <span class='hs-varid'>excludeList</span> <span class='hs-varid'>flags</span>
|
||||
<a name="line-142"></a> <span class='hs-varid'>renderOpAndExtras</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderOp</span> <span class='hs-layout'>(</span><span class='hs-varid'>parseOp</span> <span class='hs-varid'>o</span><span class='hs-layout'>)</span> <span class='hs-varop'></></span> <span class='hs-varid'>extras</span> <span class='hs-varid'>o</span>
|
||||
<a name="line-143"></a>
|
||||
<a name="line-144"></a><a name="imports"></a><span class='hs-definition'>imports</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-145"></a><span class='hs-definition'>imports</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>stack</span> <span class='hs-keyglyph'>[</span>
|
||||
<a name="line-146"></a> <span class='hs-str'>"import Data.ByteString (ByteString)"</span>
|
||||
<a name="line-147"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import Data.Complex (Complex)"</span>
|
||||
<a name="line-148"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import Data.Int (Int8, Int16, Int32, Int64)"</span>
|
||||
<a name="line-149"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import Data.Word (Word8, Word16)"</span>
|
||||
<a name="line-150"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import Lens.Family2 ((.~), (&))"</span>
|
||||
<a name="line-151"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import TensorFlow.Build"</span>
|
||||
<a name="line-152"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import TensorFlow.BuildOp"</span>
|
||||
<a name="line-153"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import TensorFlow.Output (ResourceHandle)"</span>
|
||||
<a name="line-154"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import TensorFlow.Tensor"</span>
|
||||
<a name="line-155"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"import TensorFlow.Types"</span>
|
||||
<a name="line-156"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-157"></a>
|
||||
<a name="line-158"></a><a name="renderHaskellName"></a><span class='hs-definition'>renderHaskellName</span><span class='hs-layout'>,</span> <span class='hs-varid'>renderTFName</span><span class='hs-layout'>,</span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-159"></a><span class='hs-definition'>renderHaskellName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>strictText</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unHaskellName</span> <span class='hs-varop'>.</span> <span class='hs-varid'>haskellName</span>
|
||||
<a name="line-160"></a><a name="renderTFName"></a><span class='hs-definition'>renderTFName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>strictText</span> <span class='hs-varop'>.</span> <span class='hs-varid'>unTFName</span> <span class='hs-varop'>.</span> <span class='hs-varid'>tfName</span>
|
||||
<a name="line-161"></a><a name="renderQuotedTFName"></a><span class='hs-definition'>renderQuotedTFName</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>dquotes</span> <span class='hs-varop'>.</span> <span class='hs-varid'>renderTFName</span>
|
||||
<a name="line-162"></a>
|
||||
<a name="line-163"></a>
|
||||
<a name="line-164"></a><a name="renderOp"></a><span class='hs-comment'>-- | Generate the source code for a single op.</span>
|
||||
<a name="line-165"></a><span class='hs-comment'>-- For example:</span>
|
||||
<a name="line-166"></a><span class='hs-comment'>--</span>
|
||||
<a name="line-167"></a><span class='hs-comment'>-- -- | {haddock comment}</span>
|
||||
<a name="line-168"></a><span class='hs-comment'>-- foo :: {type sig}</span>
|
||||
<a name="line-169"></a><span class='hs-comment'>-- foo attr1 attr2 input1 input2 | eqLengthGuard [...] = {function body}</span>
|
||||
<a name="line-170"></a><span class='hs-definition'>renderOp</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedOp</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-171"></a><span class='hs-definition'>renderOp</span> <span class='hs-varid'>pOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>stack</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-172"></a> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>haddocks</span>
|
||||
<a name="line-173"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>n</span> <span class='hs-varop'><+></span> <span class='hs-str'>"::"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>hang</span> <span class='hs-num'>0</span> <span class='hs-layout'>(</span><span class='hs-varid'>typeSig</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-174"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>n</span> <span class='hs-varop'><+></span> <span class='hs-varid'>hang</span> <span class='hs-num'>0</span> <span class='hs-varid'>args</span> <span class='hs-varop'><+></span> <span class='hs-str'>"|"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>funcGuard</span> <span class='hs-varid'>listSizeAttrs</span>
|
||||
<a name="line-175"></a> <span class='hs-varop'><+></span> <span class='hs-str'>"="</span> <span class='hs-varop'></></span> <span class='hs-comment'>-- args are indented</span>
|
||||
<a name="line-176"></a> <span class='hs-comment'>-- the body needs to be indented wrt the name</span>
|
||||
<a name="line-177"></a> <span class='hs-varid'>indent</span> <span class='hs-varid'>indentation</span> <span class='hs-layout'>(</span><span class='hs-varid'>functionBody</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-178"></a> <span class='hs-keyglyph'>]</span> <span class='hs-varop'>++</span> <span class='hs-varid'>whereClause</span> <span class='hs-varid'>listSizeAttrs</span>
|
||||
<a name="line-179"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-180"></a> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>parsedOpName</span> <span class='hs-varid'>pOp</span>
|
||||
<a name="line-181"></a> <span class='hs-varid'>listSizeAttrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>inferredListSizeAttrs</span> <span class='hs-varid'>pOp</span>
|
||||
<a name="line-182"></a> <span class='hs-varid'>args</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>sep</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>renderHaskellName</span>
|
||||
<a name="line-183"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>attrName</span> <span class='hs-layout'>(</span><span class='hs-varid'>explicitInputAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-184"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>map</span> <span class='hs-varid'>parsedArgName</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedInputs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-185"></a> <span class='hs-varid'>haddocks</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"-- |"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>multilineComment</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedOpSummary</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedOpDescription</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-186"></a>
|
||||
<a name="line-187"></a><a name="funcGuard"></a><span class='hs-comment'>-- | A check that all lists of the given size have the given length.</span>
|
||||
<a name="line-188"></a><span class='hs-comment'>-- For example:</span>
|
||||
<a name="line-189"></a><span class='hs-comment'>-- eqLengthGuard [("N", [("input1", length input1), ("input2", length input2)])]</span>
|
||||
<a name="line-190"></a><span class='hs-definition'>funcGuard</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span> <span class='hs-conid'>Name</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-191"></a><span class='hs-definition'>funcGuard</span> <span class='hs-varid'>attrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"eqLengthGuard"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>commasep</span> <span class='hs-varid'>entries</span><span class='hs-layout'>)</span>
|
||||
<a name="line-192"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-193"></a> <span class='hs-varid'>entries</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-194"></a> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>parens</span> <span class='hs-varop'>$</span> <span class='hs-varid'>nAttr</span> <span class='hs-varop'><></span> <span class='hs-varid'>comma</span> <span class='hs-varop'><+></span>
|
||||
<a name="line-195"></a> <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>commasep</span> <span class='hs-varop'>$</span> <span class='hs-varid'>toList</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-196"></a> <span class='hs-varid'>map</span> <span class='hs-varid'>renderTensorName</span> <span class='hs-layout'>(</span><span class='hs-varid'>toList</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrInfo</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-197"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>attrs</span>
|
||||
<a name="line-198"></a> <span class='hs-layout'>,</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>nAttr</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-199"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-200"></a> <span class='hs-varid'>renderTensorName</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>parens</span> <span class='hs-varop'>$</span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-varid'>x</span> <span class='hs-varop'><></span> <span class='hs-varid'>comma</span> <span class='hs-varop'><+></span>
|
||||
<a name="line-201"></a> <span class='hs-str'>"length"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>x</span>
|
||||
<a name="line-202"></a>
|
||||
<a name="line-203"></a><a name="whereClause"></a><span class='hs-comment'>-- | Define the implicit list length attributes.</span>
|
||||
<a name="line-204"></a><span class='hs-comment'>-- For example:</span>
|
||||
<a name="line-205"></a><span class='hs-comment'>-- where</span>
|
||||
<a name="line-206"></a><span class='hs-comment'>-- n1 = fromIntegral (length input1) :: Int64</span>
|
||||
<a name="line-207"></a><span class='hs-comment'>-- n2 = fromIntegral (length input2) :: Int64</span>
|
||||
<a name="line-208"></a><span class='hs-definition'>whereClause</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Attr</span> <span class='hs-layout'>(</span><span class='hs-conid'>NonEmpty</span> <span class='hs-conid'>Name</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Doc</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-209"></a><span class='hs-definition'>whereClause</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
|
||||
<a name="line-210"></a><span class='hs-definition'>whereClause</span> <span class='hs-keyword'>as</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>indent</span> <span class='hs-num'>2</span> <span class='hs-varop'>$</span> <span class='hs-str'>"where"</span> <span class='hs-varop'></></span> <span class='hs-varid'>indent</span> <span class='hs-num'>2</span> <span class='hs-layout'>(</span><span class='hs-varid'>stack</span> <span class='hs-varop'>$</span> <span class='hs-varid'>map</span> <span class='hs-varid'>defineLengthAttr</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-211"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-212"></a> <span class='hs-varid'>defineLengthAttr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varop'><+></span> <span class='hs-str'>"="</span>
|
||||
<a name="line-213"></a> <span class='hs-varop'><+></span> <span class='hs-str'>"fromIntegral (length"</span>
|
||||
<a name="line-214"></a> <span class='hs-varop'><+></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-layout'>(</span><span class='hs-conid'>NE</span><span class='hs-varop'>.</span><span class='hs-varid'>head</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrInfo</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-215"></a> <span class='hs-varop'><></span> <span class='hs-str'>") :: Int64"</span>
|
||||
<a name="line-216"></a>
|
||||
<a name="line-217"></a><a name="functionBody"></a><span class='hs-definition'>functionBody</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedOp</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-218"></a><span class='hs-definition'>functionBody</span> <span class='hs-varid'>pOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>buildFunction</span> <span class='hs-varop'><+></span> <span class='hs-varid'>parens</span> <span class='hs-layout'>(</span><span class='hs-varid'>hang</span> <span class='hs-num'>0</span> <span class='hs-layout'>(</span><span class='hs-varid'>stack</span> <span class='hs-varid'>buildOpParts</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-219"></a> <span class='hs-varop'></></span> <span class='hs-varid'>indent</span> <span class='hs-varid'>indentation</span> <span class='hs-layout'>(</span><span class='hs-varid'>sep</span> <span class='hs-varid'>tensorArgs</span><span class='hs-layout'>)</span>
|
||||
<a name="line-220"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-221"></a> <span class='hs-varid'>buildFunction</span>
|
||||
<a name="line-222"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>null</span> <span class='hs-varid'>outputListsSizes</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"buildOp"</span>
|
||||
<a name="line-223"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"buildListOp"</span> <span class='hs-varop'><+></span>
|
||||
<a name="line-224"></a> <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>commasep</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-225"></a> <span class='hs-varid'>map</span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>outputListsSizes</span><span class='hs-layout'>)</span>
|
||||
<a name="line-226"></a> <span class='hs-varid'>outputListsSizes</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-227"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>ParsedArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>parsedArgCase</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>ListArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argLength</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>a</span> <span class='hs-layout'>}</span> <span class='hs-layout'>}</span>
|
||||
<a name="line-228"></a> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>parsedOutputs</span> <span class='hs-varid'>pOp</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-229"></a> <span class='hs-varid'>buildOpParts</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-230"></a> <span class='hs-str'>"opDef"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedOpName</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span> <span class='hs-conop'>:</span>
|
||||
<a name="line-231"></a> <span class='hs-comment'>-- Renders tensor arguments.</span>
|
||||
<a name="line-232"></a> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"& opAttr"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-varid'>n</span> <span class='hs-varop'><+></span>
|
||||
<a name="line-233"></a> <span class='hs-str'>".~ tensorType (undefined ::"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>n</span> <span class='hs-varop'><></span> <span class='hs-str'>")"</span>
|
||||
<a name="line-234"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>,</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-235"></a> <span class='hs-keyglyph'>]</span> <span class='hs-varop'>++</span>
|
||||
<a name="line-236"></a> <span class='hs-comment'>-- Renders mandatory attributes as function parameters.</span>
|
||||
<a name="line-237"></a> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"& opAttr"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-varid'>n</span> <span class='hs-varop'><+></span> <span class='hs-str'>".~"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-238"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>explicitInputAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>,</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-239"></a> <span class='hs-keyglyph'>]</span> <span class='hs-varop'>++</span>
|
||||
<a name="line-240"></a> <span class='hs-comment'>-- Renders sizes of tensor list types having number_attr.</span>
|
||||
<a name="line-241"></a> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"& opAttr"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderQuotedTFName</span> <span class='hs-varid'>n</span> <span class='hs-varop'><+></span> <span class='hs-str'>".~"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-242"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>inferredListSizeAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>,</span> <span class='hs-keyword'>let</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-243"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-244"></a>
|
||||
<a name="line-245"></a> <span class='hs-varid'>tensorArgs</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varop'>.</span> <span class='hs-varid'>parsedArgName</span> <span class='hs-varop'><$></span> <span class='hs-varid'>parsedInputs</span> <span class='hs-varid'>pOp</span>
|
||||
<a name="line-246"></a>
|
||||
<a name="line-247"></a><a name="extras"></a><span class='hs-comment'>-- | Write a comment with the inputs/outputs/attributes in proto format, for</span>
|
||||
<a name="line-248"></a><span class='hs-comment'>-- debugging.</span>
|
||||
<a name="line-249"></a><span class='hs-definition'>extras</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-250"></a><span class='hs-definition'>extras</span> <span class='hs-varid'>d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>enclose</span> <span class='hs-str'>"{-\n"</span> <span class='hs-str'>"\n-}"</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-251"></a> <span class='hs-varid'>strictText</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-varop'>$</span>
|
||||
<a name="line-252"></a> <span class='hs-varid'>showMessage</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>def</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OpDef</span><span class='hs-layout'>)</span>
|
||||
<a name="line-253"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>inputArg</span> <span class='hs-varop'>.~</span> <span class='hs-layout'>(</span><span class='hs-varid'>d</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>inputArg</span><span class='hs-layout'>)</span>
|
||||
<a name="line-254"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>outputArg</span> <span class='hs-varop'>.~</span> <span class='hs-layout'>(</span><span class='hs-varid'>d</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>outputArg</span><span class='hs-layout'>)</span>
|
||||
<a name="line-255"></a> <span class='hs-varop'>&</span> <span class='hs-varid'>attr</span> <span class='hs-varop'>.~</span> <span class='hs-layout'>(</span><span class='hs-varid'>d</span> <span class='hs-varop'>^.</span> <span class='hs-varid'>attr</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
|
||||
<a name="line-256"></a>
|
||||
<a name="line-257"></a><a name="typeSig"></a><span class='hs-comment'>-- | The type signature for an op.</span>
|
||||
<a name="line-258"></a><span class='hs-comment'>-- Of the form:</span>
|
||||
<a name="line-259"></a><span class='hs-comment'>-- forall t1 t2 v1 v2 . (TensorType t1, TensorType t2)</span>
|
||||
<a name="line-260"></a><span class='hs-comment'>-- => Float -> Tensor t1 v1 -> Tensor t2 v2</span>
|
||||
<a name="line-261"></a><span class='hs-comment'>-- where "Float" is an explicit input attribute, "Tensor t1 v1" is an input, and</span>
|
||||
<a name="line-262"></a><span class='hs-comment'>-- "Tensor t2 v2" is an output.</span>
|
||||
<a name="line-263"></a><span class='hs-definition'>typeSig</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedOp</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-264"></a><span class='hs-definition'>typeSig</span> <span class='hs-varid'>pOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>constraints</span>
|
||||
<a name="line-265"></a> <span class='hs-varop'><+/></span> <span class='hs-varid'>signatureFold</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>attrInput</span> <span class='hs-layout'>(</span><span class='hs-varid'>explicitInputAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-266"></a> <span class='hs-varop'>++</span> <span class='hs-varid'>map</span> <span class='hs-varid'>tensorArgAndComment</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedInputs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span>
|
||||
<a name="line-267"></a> <span class='hs-varop'>++</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>outputs</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||
<a name="line-268"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-269"></a> <span class='hs-varid'>constraints</span>
|
||||
<a name="line-270"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>null</span> <span class='hs-layout'>(</span><span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>empty</span>
|
||||
<a name="line-271"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"forall"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>sep</span> <span class='hs-varid'>typeParams</span> <span class='hs-varop'><+></span> <span class='hs-str'>"."</span> <span class='hs-varop'><+></span> <span class='hs-varid'>classConstraints</span> <span class='hs-varop'><+></span> <span class='hs-str'>"=>"</span>
|
||||
<a name="line-272"></a> <span class='hs-varid'>typeParams</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>strictText</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>k</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>parsedInputs</span> <span class='hs-varid'>pOp</span> <span class='hs-varop'>++</span> <span class='hs-varid'>parsedOutputs</span> <span class='hs-varid'>pOp</span><span class='hs-layout'>,</span>
|
||||
<a name="line-273"></a> <span class='hs-conid'>ArgTensorEither</span> <span class='hs-varid'>v</span> <span class='hs-keyglyph'><-</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>parsedArgKind</span> <span class='hs-varid'>k</span><span class='hs-keyglyph'>]</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-274"></a> <span class='hs-varop'>++</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>renderHaskellName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'><-</span> <span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-varid'>pOp</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-275"></a> <span class='hs-varid'>classConstraints</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tuple</span> <span class='hs-varop'>$</span> <span class='hs-varid'>concatMap</span> <span class='hs-varid'>tensorArgConstraint</span>
|
||||
<a name="line-276"></a> <span class='hs-varop'>$</span> <span class='hs-varid'>inferredTypeAttrs</span> <span class='hs-varid'>pOp</span>
|
||||
<a name="line-277"></a> <span class='hs-varid'>signatureFold</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>folddoc</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>x</span> <span class='hs-varop'></></span> <span class='hs-str'>"->"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
|
||||
<a name="line-278"></a> <span class='hs-varid'>attrInput</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderAttrType</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrInfo</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varop'><+></span> <span class='hs-varid'>hang</span> <span class='hs-num'>0</span> <span class='hs-layout'>(</span><span class='hs-str'>"-- ^"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>attrComment</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-279"></a> <span class='hs-varid'>renderAttrType</span> <span class='hs-layout'>(</span><span class='hs-conid'>AttrSingle</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderAttrBaseType</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-280"></a> <span class='hs-varid'>renderAttrType</span> <span class='hs-layout'>(</span><span class='hs-conid'>AttrList</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>brackets</span> <span class='hs-varop'>$</span> <span class='hs-varid'>renderAttrBaseType</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-281"></a> <span class='hs-varid'>renderAttrBaseType</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyglyph'>\</span><span class='hs-keyword'>case</span>
|
||||
<a name="line-282"></a> <span class='hs-conid'>AttrBytes</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"ByteString"</span>
|
||||
<a name="line-283"></a> <span class='hs-conid'>AttrInt64</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Data.Int.Int64"</span>
|
||||
<a name="line-284"></a> <span class='hs-conid'>AttrFloat</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Float"</span>
|
||||
<a name="line-285"></a> <span class='hs-conid'>AttrBool</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Bool"</span>
|
||||
<a name="line-286"></a> <span class='hs-conid'>AttrType</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"DataType"</span>
|
||||
<a name="line-287"></a> <span class='hs-conid'>AttrShape</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Shape"</span>
|
||||
<a name="line-288"></a> <span class='hs-conid'>AttrTensor</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"TensorProto"</span>
|
||||
<a name="line-289"></a>
|
||||
<a name="line-290"></a> <span class='hs-varid'>tensorArgAndComment</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>tensorArg</span> <span class='hs-varid'>t</span> <span class='hs-varop'><+></span> <span class='hs-varid'>hang</span> <span class='hs-num'>0</span> <span class='hs-layout'>(</span><span class='hs-str'>"-- ^"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>argComment</span> <span class='hs-varid'>t</span><span class='hs-layout'>)</span>
|
||||
<a name="line-291"></a> <span class='hs-varid'>outputs</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>parsedOutputs</span> <span class='hs-varid'>pOp</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-292"></a> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>wrapOutput</span> <span class='hs-str'>"ControlNode"</span>
|
||||
<a name="line-293"></a> <span class='hs-comment'>-- TODO(judahjacobson): To improve indentation: `tensorArgAndComment a`</span>
|
||||
<a name="line-294"></a> <span class='hs-keyglyph'>[</span><span class='hs-varid'>a</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>wrapOutput</span> <span class='hs-layout'>(</span><span class='hs-varid'>tensorArg</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-varop'><+></span> <span class='hs-str'>"-- ^"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>argComment</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-295"></a> <span class='hs-keyword'>as</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>wrapOutput</span> <span class='hs-layout'>(</span><span class='hs-varid'>tuple</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-varid'>tensorArg</span> <span class='hs-keyword'>as</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varop'><+/></span> <span class='hs-varid'>resultComment</span> <span class='hs-keyword'>as</span>
|
||||
<a name="line-296"></a> <span class='hs-varid'>wrapOutput</span> <span class='hs-varid'>o</span>
|
||||
<a name="line-297"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>parsedOpIsMonadic</span> <span class='hs-varid'>pOp</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Build"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>parens</span> <span class='hs-varid'>o</span>
|
||||
<a name="line-298"></a> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>o</span>
|
||||
<a name="line-299"></a>
|
||||
<a name="line-300"></a><a name="tensorArg"></a><span class='hs-comment'>-- | Render an op input or output.</span>
|
||||
<a name="line-301"></a><span class='hs-comment'>-- For example: "Tensor Ref Int64", "Tensor v t", "ResourceHandle dtype"</span>
|
||||
<a name="line-302"></a><span class='hs-definition'>tensorArg</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedArg</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-303"></a><span class='hs-definition'>tensorArg</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>parsedArgCase</span> <span class='hs-varid'>p</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-304"></a> <span class='hs-conid'>SimpleArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>tensorType</span> <span class='hs-varid'>t</span>
|
||||
<a name="line-305"></a> <span class='hs-conid'>ListArg</span> <span class='hs-layout'>{</span> <span class='hs-varid'>argType</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>t</span> <span class='hs-layout'>}</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>brackets</span> <span class='hs-varop'>$</span> <span class='hs-varid'>tensorType</span> <span class='hs-varid'>t</span>
|
||||
<a name="line-306"></a> <span class='hs-conid'>MixedListArg</span> <span class='hs-layout'>{</span><span class='hs-layout'>}</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"{{{tensorArg: can't handle heterogeneous lists}}}"</span>
|
||||
<a name="line-307"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-308"></a> <span class='hs-varid'>tensorType</span> <span class='hs-varid'>t</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>let</span>
|
||||
<a name="line-309"></a> <span class='hs-varid'>v</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>parsedArgKind</span> <span class='hs-varid'>p</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-310"></a> <span class='hs-conid'>ArgTensorRef</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Tensor Ref"</span>
|
||||
<a name="line-311"></a> <span class='hs-conid'>ArgTensorValue</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Tensor Value"</span>
|
||||
<a name="line-312"></a> <span class='hs-conid'>ArgTensorEither</span> <span class='hs-varid'>v'</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"Tensor"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>strictText</span> <span class='hs-varid'>v'</span>
|
||||
<a name="line-313"></a> <span class='hs-conid'>ArgResource</span> <span class='hs-keyglyph'>-></span> <span class='hs-str'>"ResourceHandle"</span>
|
||||
<a name="line-314"></a> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>case</span> <span class='hs-varid'>t</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-315"></a> <span class='hs-conid'>ArgTypeFixed</span> <span class='hs-varid'>dt</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>strictText</span> <span class='hs-varop'>$</span> <span class='hs-varid'>dtTypeToHaskell</span> <span class='hs-varid'>dt</span>
|
||||
<a name="line-316"></a> <span class='hs-conid'>ArgTypeAttr</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varid'>n</span>
|
||||
<a name="line-317"></a> <span class='hs-keyword'>in</span> <span class='hs-varid'>v</span> <span class='hs-varop'><+></span> <span class='hs-varid'>a</span>
|
||||
<a name="line-318"></a>
|
||||
<a name="line-319"></a><a name="attrComment"></a><span class='hs-definition'>attrComment</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Attr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-320"></a><span class='hs-definition'>attrComment</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>argComment'</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>attrDescription</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-321"></a>
|
||||
<a name="line-322"></a><a name="argComment"></a><span class='hs-definition'>argComment</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ParsedArg</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-323"></a><span class='hs-definition'>argComment</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>argComment'</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedArgName</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>parsedArgDescription</span> <span class='hs-varid'>a</span><span class='hs-layout'>)</span>
|
||||
<a name="line-324"></a>
|
||||
<a name="line-325"></a><a name="argComment'"></a><span class='hs-definition'>argComment'</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Name</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'>Doc</span>
|
||||
<a name="line-326"></a><span class='hs-definition'>argComment'</span> <span class='hs-varid'>argName</span> <span class='hs-varid'>argDesc</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-327"></a> <span class='hs-varid'>bold</span> <span class='hs-layout'>(</span><span class='hs-varid'>renderTFName</span> <span class='hs-varid'>argName</span><span class='hs-layout'>)</span> <span class='hs-varop'><></span> <span class='hs-varid'>splitMultilineText</span> <span class='hs-layout'>(</span><span class='hs-str'>":"</span> <span class='hs-varop'><+></span><span class='hs-layout'>)</span> <span class='hs-varid'>argDesc</span>
|
||||
<a name="line-328"></a>
|
||||
<a name="line-329"></a><a name="bold"></a><span class='hs-definition'>bold</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Doc</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-330"></a><span class='hs-definition'>bold</span> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"__"</span> <span class='hs-varop'><></span> <span class='hs-varid'>n</span> <span class='hs-varop'><></span> <span class='hs-str'>"__"</span>
|
||||
<a name="line-331"></a>
|
||||
<a name="line-332"></a><a name="resultComment"></a><span class='hs-comment'>-- | Comment for the outputs of an op.</span>
|
||||
<a name="line-333"></a><span class='hs-comment'>-- For example:</span>
|
||||
<a name="line-334"></a><span class='hs-comment'>-- -- ^ (__output1__, __output2__)</span>
|
||||
<a name="line-335"></a><span class='hs-comment'>-- -- </span>
|
||||
<a name="line-336"></a><span class='hs-comment'>-- -- * __output1__: description1</span>
|
||||
<a name="line-337"></a><span class='hs-comment'>-- --</span>
|
||||
<a name="line-338"></a><span class='hs-comment'>-- -- * __output2__: description2</span>
|
||||
<a name="line-339"></a><span class='hs-definition'>resultComment</span> <span class='hs-keyglyph'>::</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>ParsedArg</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-340"></a><span class='hs-definition'>resultComment</span> <span class='hs-varid'>os</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>stack</span> <span class='hs-varop'>$</span> <span class='hs-varid'>flatten</span> <span class='hs-varid'>commentSummary</span> <span class='hs-conop'>:</span> <span class='hs-varid'>map</span> <span class='hs-varid'>commentDetails</span> <span class='hs-varid'>os</span>
|
||||
<a name="line-341"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-342"></a> <span class='hs-varid'>commentSummary</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"-- ^"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>tuple</span> <span class='hs-keyglyph'>[</span><span class='hs-varid'>bold</span> <span class='hs-layout'>(</span><span class='hs-varid'>renderTFName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>parsedArgName</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-keyglyph'><-</span> <span class='hs-varid'>os</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-343"></a> <span class='hs-varid'>commentDetails</span> <span class='hs-varid'>o</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-344"></a> <span class='hs-varid'>stack</span> <span class='hs-keyglyph'>[</span> <span class='hs-str'>"--"</span>
|
||||
<a name="line-345"></a> <span class='hs-layout'>,</span> <span class='hs-str'>"-- *"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>argComment</span> <span class='hs-varid'>o</span>
|
||||
<a name="line-346"></a> <span class='hs-keyglyph'>]</span>
|
||||
<a name="line-347"></a>
|
||||
<a name="line-348"></a><a name="tensorArgConstraint"></a><span class='hs-comment'>-- | Constraints for a given type parameter.</span>
|
||||
<a name="line-349"></a><span class='hs-comment'>-- E.g.: ["TensorType t"] or ["TensorType t", "OneOf [Int64, Float] t"]</span>
|
||||
<a name="line-350"></a><span class='hs-definition'>tensorArgConstraint</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Attr</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>DataType</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-></span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>Doc</span><span class='hs-keyglyph'>]</span>
|
||||
<a name="line-351"></a><span class='hs-definition'>tensorArgConstraint</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-352"></a> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-str'>"TensorType"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>n</span>
|
||||
<a name="line-353"></a> <span class='hs-conop'>:</span> <span class='hs-keyword'>if</span> <span class='hs-varid'>null</span> <span class='hs-varid'>typeList</span>
|
||||
<a name="line-354"></a> <span class='hs-keyword'>then</span> <span class='hs-conid'>[]</span>
|
||||
<a name="line-355"></a> <span class='hs-keyword'>else</span> <span class='hs-keyglyph'>[</span><span class='hs-str'>"OneOf"</span> <span class='hs-varop'><+></span> <span class='hs-str'>"'"</span> <span class='hs-varop'><></span> <span class='hs-varid'>brackets</span> <span class='hs-layout'>(</span><span class='hs-varid'>commasep</span> <span class='hs-varid'>typeList</span><span class='hs-layout'>)</span> <span class='hs-varop'><+></span> <span class='hs-varid'>n</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
|
||||
<a name="line-356"></a> <span class='hs-keyword'>where</span>
|
||||
<a name="line-357"></a> <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>renderHaskellName</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrName</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-358"></a> <span class='hs-varid'>typeList</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>map</span> <span class='hs-varid'>strictText</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-359"></a> <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-conid'>Set</span><span class='hs-varop'>.</span><span class='hs-varid'>fromList</span> <span class='hs-varop'>$</span>
|
||||
<a name="line-360"></a> <span class='hs-varid'>map</span> <span class='hs-varid'>dtTypeToHaskell</span> <span class='hs-varop'>$</span> <span class='hs-varid'>attrInfo</span> <span class='hs-varid'>a</span>
|
||||
<a name="line-361"></a>
|
||||
<a name="line-362"></a><a name="dtTypeToHaskell"></a><span class='hs-comment'>-- NOTE: The cases of this function should be kept in sync with</span>
|
||||
<a name="line-363"></a><span class='hs-comment'>-- TensorFlow.Types.AllTensorTypes.</span>
|
||||
<a name="line-364"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>DataType</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span>
|
||||
<a name="line-365"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_BOOL</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Bool"</span>
|
||||
<a name="line-366"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_BFLOAT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word16"</span>
|
||||
<a name="line-367"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_COMPLEX128</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"(Data.Complex.Complex Double)"</span>
|
||||
<a name="line-368"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_COMPLEX64</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"(Data.Complex.Complex Float)"</span>
|
||||
<a name="line-369"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_DOUBLE</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Double"</span>
|
||||
<a name="line-370"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_FLOAT</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Float"</span>
|
||||
<a name="line-371"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_INT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int16"</span>
|
||||
<a name="line-372"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_INT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int32"</span>
|
||||
<a name="line-373"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_INT64</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int64"</span>
|
||||
<a name="line-374"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_INT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int8"</span>
|
||||
<a name="line-375"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_QINT32</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int32"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-376"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_QINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word8"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-377"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_QINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Int.Int16"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-378"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_QUINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word16"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-379"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_QUINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word8"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-380"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_STRING</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.ByteString.ByteString"</span>
|
||||
<a name="line-381"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_UINT16</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word16"</span>
|
||||
<a name="line-382"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_HALF</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word16"</span> <span class='hs-comment'>-- TODO(gnezdo): make unique</span>
|
||||
<a name="line-383"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_UINT8</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Data.Word.Word8"</span>
|
||||
<a name="line-384"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-conid'>DT_RESOURCE</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-385"></a> <span class='hs-varid'>error</span> <span class='hs-str'>"ResourceHandle must be prevented from getting here."</span>
|
||||
<a name="line-386"></a><span class='hs-definition'>dtTypeToHaskell</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-387"></a> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>pack</span> <span class='hs-varop'>$</span> <span class='hs-str'>"Unsupported type in dtTypeToHaskell: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>show</span> <span class='hs-varid'>x</span>
|
||||
<a name="line-388"></a>
|
||||
<a name="line-389"></a><a name="haddockComment"></a><span class='hs-comment'>-- | haddockComment escapes TensorFlow doc strings into haddock.</span>
|
||||
<a name="line-390"></a><span class='hs-comment'>-- TODO(gnezdo): deal with the markup.</span>
|
||||
<a name="line-391"></a><span class='hs-definition'>haddockComment</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'>Doc</span>
|
||||
<a name="line-392"></a><span class='hs-definition'>haddockComment</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>strictText</span>
|
||||
<a name="line-393"></a>
|
||||
<a name="line-394"></a><a name="multilineComment"></a><span class='hs-comment'>-- | Generate a multiline comment. For example:</span>
|
||||
<a name="line-395"></a><span class='hs-comment'>-- summary'</span>
|
||||
<a name="line-396"></a><span class='hs-comment'>-- --</span>
|
||||
<a name="line-397"></a><span class='hs-comment'>-- -- detail_line1</span>
|
||||
<a name="line-398"></a><span class='hs-comment'>-- -- detail_line2</span>
|
||||
<a name="line-399"></a><span class='hs-comment'>-- -- ...</span>
|
||||
<a name="line-400"></a><span class='hs-definition'>multilineComment</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'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span>
|
||||
<a name="line-401"></a><span class='hs-definition'>multilineComment</span> <span class='hs-varid'>summary'</span> <span class='hs-varid'>detail</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-402"></a> <span class='hs-varid'>haddockComment</span> <span class='hs-varid'>summary'</span> <span class='hs-varop'></></span>
|
||||
<a name="line-403"></a> <span class='hs-varid'>splitMultilineText</span> <span class='hs-varid'>insertParagraphAndComment</span> <span class='hs-varid'>detail</span>
|
||||
<a name="line-404"></a> <span class='hs-keyword'>where</span> <span class='hs-varid'>insertParagraphAndComment</span> <span class='hs-varid'>x</span> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"--"</span> <span class='hs-varop'></></span> <span class='hs-str'>"--"</span> <span class='hs-varop'><+></span> <span class='hs-varid'>x</span>
|
||||
<a name="line-405"></a>
|
||||
<a name="line-406"></a><a name="splitMultilineText"></a><span class='hs-comment'>-- | Converts the given multi-line detail string into</span>
|
||||
<a name="line-407"></a><span class='hs-comment'>-- a multi-line haddock. Applies the given lead to the</span>
|
||||
<a name="line-408"></a><span class='hs-comment'>-- first line. Returns an empty document for empty detail.</span>
|
||||
<a name="line-409"></a><span class='hs-definition'>splitMultilineText</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Doc</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Doc</span><span class='hs-layout'>)</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'>Doc</span>
|
||||
<a name="line-410"></a><span class='hs-definition'>splitMultilineText</span> <span class='hs-varid'>lead</span> <span class='hs-varid'>detail</span> <span class='hs-keyglyph'>=</span>
|
||||
<a name="line-411"></a> <span class='hs-keyword'>case</span> <span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-varid'>lines</span> <span class='hs-varid'>detail</span> <span class='hs-keyword'>of</span>
|
||||
<a name="line-412"></a> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>empty</span>
|
||||
<a name="line-413"></a> <span class='hs-layout'>(</span><span class='hs-varid'>l</span> <span class='hs-conop'>:</span> <span class='hs-varid'>ls</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-></span> <span class='hs-varid'>stack</span> <span class='hs-varop'>$</span> <span class='hs-varid'>lead</span> <span class='hs-layout'>(</span><span class='hs-varid'>haddockComment</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span>
|
||||
<a name="line-414"></a> <span class='hs-conop'>:</span> <span class='hs-varid'>map</span> <span class='hs-layout'>(</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'>haddockComment</span><span class='hs-layout'>)</span> <span class='hs-varid'>ls</span>
|
||||
<a name="line-415"></a>
|
||||
<a name="line-416"></a><a name="indentation"></a><span class='hs-definition'>indentation</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span>
|
||||
<a name="line-417"></a><span class='hs-definition'>indentation</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>4</span>
|
||||
</pre></body>
|
||||
</html>
|
||||
|
|
@ -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 {}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue