1
0
mirror of https://github.com/tensorflow/haskell.git synced 2024-06-29 16:08:34 +02:00
tensorflow-haskell/docs/haddock/tensorflow-0.2.0.0/src/TensorFlow.Tensor.html
2018-08-13 21:05:49 -07:00

201 lines
60 KiB
HTML

<!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><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- Copyright 2016 TensorFlow authors.</span><span>
</span><a name="line-2"></a><span class="hs-comment">--</span><span>
</span><a name="line-3"></a><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- You may obtain a copy of the License at</span><span>
</span><a name="line-6"></a><span class="hs-comment">--</span><span>
</span><a name="line-7"></a><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span>
</span><a name="line-8"></a><span class="hs-comment">--</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span><span>
</span><a name="line-11"></a><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span>
</span><a name="line-12"></a><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span>
</span><a name="line-13"></a><span class="hs-comment">-- limitations under the License.</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
</span><a name="line-16"></a><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><a name="line-17"></a><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><a name="line-18"></a><span class="hs-pragma">{-# LANGUAGE FunctionalDependencies #-}</span><span>
</span><a name="line-19"></a><span class="hs-pragma">{-# LANGUAGE GADTs #-}</span><span>
</span><a name="line-20"></a><span class="hs-pragma">{-# LANGUAGE DeriveFunctor #-}</span><span>
</span><a name="line-21"></a><span class="hs-pragma">{-# LANGUAGE KindSignatures #-}</span><span>
</span><a name="line-22"></a><span class="hs-pragma">{-# LANGUAGE MultiParamTypeClasses #-}</span><span>
</span><a name="line-23"></a><span class="hs-pragma">{-# LANGUAGE OverloadedStrings #-}</span><span>
</span><a name="line-24"></a><span class="hs-pragma">{-# LANGUAGE Rank2Types #-}</span><span>
</span><a name="line-25"></a><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><a name="line-26"></a><span class="hs-pragma">{-# LANGUAGE TypeOperators #-}</span><span>
</span><a name="line-27"></a><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span> </span><span class="hs-comment">-- For the Render class</span><span>
</span><a name="line-28"></a><span>
</span><a name="line-29"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Tensor</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-30"></a><span>
</span><a name="line-31"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">ByteString</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">ByteString</span><span class="hs-special">)</span><span>
</span><a name="line-32"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">String</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">IsString</span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-33"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Text</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Text</span><span>
</span><a name="line-34"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Lens</span><span class="hs-operator">.</span><span class="hs-identifier">Family2</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">^.</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-35"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Lens</span><span class="hs-operator">.</span><span class="hs-identifier">Family2</span><span class="hs-operator">.</span><span class="hs-identifier">State</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">%=</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-identifier hs-var">use</span><span class="hs-special">)</span><span>
</span><a name="line-36"></a><span>
</span><a name="line-37"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Proto</span><span class="hs-operator">.</span><span class="hs-identifier">Tensorflow</span><span class="hs-operator">.</span><span class="hs-identifier">Core</span><span class="hs-operator">.</span><span class="hs-identifier">Framework</span><span class="hs-operator">.</span><span class="hs-identifier">NodeDef</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">device</span><span class="hs-special">)</span><span>
</span><a name="line-38"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Build.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Build</span></a><span>
</span><a name="line-39"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Output.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Output</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#outputNodeName"><span class="hs-identifier hs-var">outputNodeName</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-type">Device</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-40"></a><span class="hs-keyword">import</span><span> </span><a href="TensorFlow.Types.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Types</span></a><span>
</span><a name="line-41"></a><span> </span><span class="hs-special">(</span><span> </span><a href="TensorFlow.Types.html#TensorType"><span class="hs-identifier hs-type">TensorType</span></a><span>
</span><a name="line-42"></a><span> </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-type">TensorData</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-43"></a><span> </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><a name="line-44"></a><span> </span><span class="hs-special">)</span><span>
</span><a name="line-45"></a><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><a href="TensorFlow.Internal.FFI.html"><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Internal</span><span class="hs-operator">.</span><span class="hs-identifier">FFI</span></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">FFI</span><span>
</span><a name="line-46"></a><span>
</span><a name="line-47"></a><span class="hs-comment">-- | A named output of a TensorFlow operation.</span><span>
</span><a name="line-48"></a><span class="hs-comment">--</span><span>
</span><a name="line-49"></a><span class="hs-comment">-- The type parameter @a@ is the type of the elements in the 'Tensor'. The</span><span>
</span><a name="line-50"></a><span class="hs-comment">-- parameter @v@ is either:</span><span>
</span><a name="line-51"></a><span class="hs-comment">--</span><span>
</span><a name="line-52"></a><span class="hs-comment">-- * 'Build': An unrendered, immutable value.</span><span>
</span><a name="line-53"></a><span class="hs-comment">-- * 'Value': A rendered, immutable value.</span><span>
</span><a name="line-54"></a><span class="hs-comment">-- * 'Ref': A rendered stateful handle (e.g., a variable).</span><span>
</span><a name="line-55"></a><span class="hs-comment">--</span><span>
</span><a name="line-56"></a><span class="hs-comment">-- Note that 'expr', 'value', 'render' and 'renderValue' can help convert between</span><span>
</span><a name="line-57"></a><span class="hs-comment">-- the different types of 'Tensor'.</span><span>
</span><a name="line-58"></a><span class="hs-keyword">data</span><span> </span><a name="Tensor"><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier">Tensor</span></a></a><span> </span><a name="local-6989586621679119638"><a href="#local-6989586621679119638"><span class="hs-identifier">v</span></a></a><span> </span><a name="local-6989586621679119639"><a href="#local-6989586621679119639"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-59"></a><span> </span><a name="Tensor"><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier">Tensor</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="#local-6989586621679119640"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">{</span><a name="tensorOutput"><a href="TensorFlow.Tensor.html#tensorOutput"><span class="hs-identifier">tensorOutput</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679119640"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119640"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679119641"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-60"></a><span>
</span><a name="line-61"></a><span class="hs-keyword">newtype</span><span> </span><a name="Value"><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier">Value</span></a></a><span> </span><a name="local-6989586621679119637"><a href="#local-6989586621679119637"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Value"><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier">Value</span></a></a><span> </span><span class="hs-special">{</span><a name="runValue"><a href="TensorFlow.Tensor.html#runValue"><span class="hs-identifier">runValue</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679119637"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">}</span><span>
</span><a name="line-62"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-identifier hs-type">Functor</span><span>
</span><a name="line-63"></a><span>
</span><a name="line-64"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-65"></a><span> </span><a name="local-3458764513820541680"><span class="hs-identifier">pure</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span>
</span><a name="line-66"></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span> </span><a name="local-6989586621679119649"><a href="#local-6989586621679119649"><span class="hs-identifier">f</span></a></a><span> </span><a name="local-3458764513820541679"><span class="hs-operator">&lt;*&gt;</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span> </span><a name="local-6989586621679119650"><a href="#local-6989586621679119650"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679119649"><span class="hs-identifier hs-var">f</span></a><span> </span><a href="#local-6989586621679119650"><span class="hs-identifier hs-var">x</span></a><span>
</span><a name="line-67"></a><span>
</span><a name="line-68"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-69"></a><span> </span><a name="local-6989586621679119647"><a href="#local-6989586621679119647"><span class="hs-identifier">f</span></a></a><span> </span><a name="local-3458764513820541099"><span class="hs-operator">&gt;&gt;=</span></a><span> </span><a name="local-6989586621679119648"><a href="#local-6989586621679119648"><span class="hs-identifier">g</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679119648"><span class="hs-identifier hs-var">g</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">runValue</span><span> </span><a href="#local-6989586621679119647"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-70"></a><span>
</span><a name="line-71"></a><span class="hs-keyword">newtype</span><span> </span><a name="Ref"><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier">Ref</span></a></a><span> </span><a name="local-6989586621679119636"><a href="#local-6989586621679119636"><span class="hs-identifier">a</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Ref"><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier">Ref</span></a></a><span> </span><span class="hs-special">{</span><a name="runRef"><a href="TensorFlow.Tensor.html#runRef"><span class="hs-identifier">runRef</span></a></a><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679119636"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">}</span><span>
</span><a name="line-72"></a><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-identifier hs-type">Functor</span><span>
</span><a name="line-73"></a><span>
</span><a name="line-74"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Applicative</span><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-75"></a><span> </span><a name="local-3458764513820541680"><span class="hs-identifier">pure</span></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-var">Ref</span></a><span>
</span><a name="line-76"></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-var">Ref</span></a><span> </span><a name="local-6989586621679119645"><a href="#local-6989586621679119645"><span class="hs-identifier">f</span></a></a><span> </span><a name="local-3458764513820541679"><span class="hs-operator">&lt;*&gt;</span></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-var">Ref</span></a><span> </span><a name="local-6989586621679119646"><a href="#local-6989586621679119646"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-var">Ref</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679119645"><span class="hs-identifier hs-var">f</span></a><span> </span><a href="#local-6989586621679119646"><span class="hs-identifier hs-var">x</span></a><span>
</span><a name="line-77"></a><span>
</span><a name="line-78"></a><span class="hs-keyword">instance</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-79"></a><span> </span><a name="local-6989586621679119643"><a href="#local-6989586621679119643"><span class="hs-identifier">f</span></a></a><span> </span><a name="local-3458764513820541099"><span class="hs-operator">&gt;&gt;=</span></a><span> </span><a name="local-6989586621679119644"><a href="#local-6989586621679119644"><span class="hs-identifier">g</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679119644"><span class="hs-identifier hs-var">g</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">runRef</span><span> </span><a href="#local-6989586621679119643"><span class="hs-identifier hs-var">f</span></a><span>
</span><a name="line-80"></a><span>
</span><a name="line-81"></a><span class="hs-comment">-- | Cast a 'Tensor Ref' into a 'Tensor Value'. This behaves like a no-op.</span><span>
</span><a name="line-82"></a><span class="hs-identifier">value</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span> </span><a href="#local-6989586621679119675"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><a href="#local-6989586621679119675"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-83"></a><a name="value"><a href="TensorFlow.Tensor.html#value"><span class="hs-identifier">value</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679119676"><a href="#local-6989586621679119676"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">runRef</span><span> </span><a href="#local-6989586621679119676"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-84"></a><span>
</span><a name="line-85"></a><span class="hs-identifier">renderValue</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a><span> </span><a href="#local-6989586621679119672"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119673"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679119674"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679119672"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><a href="#local-6989586621679119674"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-86"></a><a name="renderValue"><a href="TensorFlow.Tensor.html#renderValue"><span class="hs-identifier">renderValue</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679119677"><a href="#local-6989586621679119677"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#render"><span class="hs-identifier hs-var">render</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier hs-var">toBuild</span></a><span> </span><a href="#local-6989586621679119677"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-87"></a><span>
</span><a name="line-88"></a><span class="hs-comment">-- | A pair of a 'Tensor' and some data that should be fed into that 'Tensor'</span><span>
</span><a name="line-89"></a><span class="hs-comment">-- when running the graph.</span><span>
</span><a name="line-90"></a><span class="hs-keyword">data</span><span> </span><a name="Feed"><a href="TensorFlow.Tensor.html#Feed"><span class="hs-identifier">Feed</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a name="Feed"><a href="TensorFlow.Tensor.html#Feed"><span class="hs-identifier">Feed</span></a></a><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span> </span><a href="TensorFlow.Internal.FFI.html#TensorData"><span class="hs-identifier hs-type">FFI</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">TensorData</span></a><span>
</span><a name="line-91"></a><span>
</span><a name="line-92"></a><span class="hs-comment">-- | A class ensuring that a given tensor is rendered, i.e., has a fixed</span><span>
</span><a name="line-93"></a><span class="hs-comment">-- name, device, etc.</span><span>
</span><a name="line-94"></a><span class="hs-keyword">class</span><span> </span><a name="Rendered"><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier">Rendered</span></a></a><span> </span><a name="local-6989586621679119634"><a href="#local-6989586621679119634"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-95"></a><span> </span><span class="hs-identifier">renderedOutput</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679119634"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679119635"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span>
</span><a name="line-96"></a><span>
</span><a name="line-97"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-98"></a><span> </span><a name="local-8214565720323894515"><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier">renderedOutput</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">runValue</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">tensorOutput</span><span>
</span><a name="line-99"></a><span>
</span><a name="line-100"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-101"></a><span> </span><a name="local-8214565720323894515"><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier">renderedOutput</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">runRef</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">tensorOutput</span><span>
</span><a name="line-102"></a><span>
</span><a name="line-103"></a><span class="hs-identifier">tensorNodeName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><a href="#local-6989586621679119670"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679119670"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679119671"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Output.html#NodeName"><span class="hs-identifier hs-type">NodeName</span></a><span>
</span><a name="line-104"></a><a name="tensorNodeName"><a href="TensorFlow.Tensor.html#tensorNodeName"><span class="hs-identifier">tensorNodeName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">outputNodeName</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier hs-var">renderedOutput</span></a><span>
</span><a name="line-105"></a><span>
</span><a name="line-106"></a><span>
</span><a name="line-107"></a><span class="hs-comment">-- | Create a 'Feed' for feeding the given data into a 'Tensor' when running</span><span>
</span><a name="line-108"></a><span class="hs-comment">-- the graph.</span><span>
</span><a name="line-109"></a><span class="hs-comment">--</span><span>
</span><a name="line-110"></a><span class="hs-comment">-- Note that if a 'Tensor' is rendered, its identity may change; so feeding the</span><span>
</span><a name="line-111"></a><span class="hs-comment">-- rendered 'Tensor' may be different than feeding the original 'Tensor'.</span><span>
</span><a name="line-112"></a><span class="hs-identifier">feed</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><a href="#local-6989586621679119668"><span class="hs-identifier hs-type">t</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679119668"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679119669"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-type">TensorData</span></a><span> </span><a href="#local-6989586621679119669"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Feed"><span class="hs-identifier hs-type">Feed</span></a><span>
</span><a name="line-113"></a><a name="feed"><a href="TensorFlow.Tensor.html#feed"><span class="hs-identifier">feed</span></a></a><span> </span><a name="local-6989586621679119678"><a href="#local-6989586621679119678"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Types.html#TensorData"><span class="hs-identifier hs-var">TensorData</span></a><span> </span><a name="local-6989586621679119679"><a href="#local-6989586621679119679"><span class="hs-identifier">td</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Feed"><span class="hs-identifier hs-var">Feed</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier hs-var">renderedOutput</span></a><span> </span><a href="#local-6989586621679119678"><span class="hs-identifier hs-var">t</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679119679"><span class="hs-identifier hs-var">td</span></a><span>
</span><a name="line-114"></a><span>
</span><a name="line-115"></a><span class="hs-comment">-- | Create a 'Tensor' for a given name. This can be used to reference nodes</span><span>
</span><a name="line-116"></a><span class="hs-comment">-- in a 'GraphDef' that was loaded via 'addGraphDef'.</span><span>
</span><a name="line-117"></a><span class="hs-comment">-- TODO(judahjacobson): add more safety checks here.</span><span>
</span><a name="line-118"></a><span class="hs-identifier">tensorFromName</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="#local-6989586621679119666"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-identifier hs-type">Text</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119666"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679119667"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-119"></a><a name="tensorFromName"><a href="TensorFlow.Tensor.html#tensorFromName"><span class="hs-identifier">tensorFromName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">pure</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">fromString</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier hs-var">Text</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">unpack</span><span>
</span><a name="line-120"></a><span>
</span><a name="line-121"></a><span class="hs-comment">-- | Like 'tensorFromName', but type-restricted to 'Value'.</span><span>
</span><a name="line-122"></a><span class="hs-identifier">tensorValueFromName</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Text</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><a href="#local-6989586621679119665"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-123"></a><a name="tensorValueFromName"><a href="TensorFlow.Tensor.html#tensorValueFromName"><span class="hs-identifier">tensorValueFromName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#tensorFromName"><span class="hs-identifier hs-var">tensorFromName</span></a><span>
</span><a name="line-124"></a><span>
</span><a name="line-125"></a><span class="hs-comment">-- | Like 'tensorFromName', but type-restricted to 'Ref'.</span><span>
</span><a name="line-126"></a><span class="hs-identifier">tensorRefFromName</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Text</span><span class="hs-operator hs-type">.</span><span class="hs-identifier hs-type">Text</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span> </span><a href="#local-6989586621679119664"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-127"></a><a name="tensorRefFromName"><a href="TensorFlow.Tensor.html#tensorRefFromName"><span class="hs-identifier">tensorRefFromName</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#tensorFromName"><span class="hs-identifier hs-var">tensorFromName</span></a><span>
</span><a name="line-128"></a><span>
</span><a name="line-129"></a><span class="hs-keyword">type</span><span> </span><a name="TensorList"><a href="TensorFlow.Tensor.html#TensorList"><span class="hs-identifier">TensorList</span></a></a><span> </span><a name="local-6989586621679119633"><a href="#local-6989586621679119633"><span class="hs-identifier">v</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Types.html#ListOf"><span class="hs-identifier hs-type">ListOf</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119633"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">)</span><span>
</span><a name="line-130"></a><span>
</span><a name="line-131"></a><span class="hs-identifier">tensorListOutputs</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119662"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#TensorList"><span class="hs-identifier hs-type">TensorList</span></a><span> </span><a href="#local-6989586621679119662"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><a href="TensorFlow.Output.html#Output"><span class="hs-identifier hs-type">Output</span></a><span class="hs-special">]</span><span>
</span><a name="line-132"></a><a name="tensorListOutputs"><a href="TensorFlow.Tensor.html#tensorListOutputs"><span class="hs-identifier">tensorListOutputs</span></a></a><span> </span><a href="TensorFlow.Types.html#Nil"><span class="hs-identifier hs-var">Nil</span></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><a name="line-133"></a><span class="hs-identifier">tensorListOutputs</span><span> </span><span class="hs-special">(</span><a name="local-6989586621679119680"><a href="#local-6989586621679119680"><span class="hs-identifier">t</span></a></a><span> </span><a href="TensorFlow.Types.html#%3A%2F"><span class="hs-operator hs-var">:/</span></a><span> </span><a name="local-6989586621679119681"><a href="#local-6989586621679119681"><span class="hs-identifier">ts</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier hs-var">renderedOutput</span></a><span> </span><a href="#local-6989586621679119680"><span class="hs-identifier hs-var">t</span></a><span> </span><span class="hs-glyph">:</span><span> </span><a href="TensorFlow.Tensor.html#tensorListOutputs"><span class="hs-identifier hs-var">tensorListOutputs</span></a><span> </span><a href="#local-6989586621679119681"><span class="hs-identifier hs-var">ts</span></a><span>
</span><a name="line-134"></a><span>
</span><a name="line-135"></a><span class="hs-comment">-- | Places all nodes rendered in the given 'Build' action on the same</span><span>
</span><a name="line-136"></a><span class="hs-comment">-- device as the given Tensor (see also 'withDevice'). Make sure that</span><span>
</span><a name="line-137"></a><span class="hs-comment">-- the action has side effects of rendering the desired tensors. A pure</span><span>
</span><a name="line-138"></a><span class="hs-comment">-- return would not have the desired effect.</span><span>
</span><a name="line-139"></a><span class="hs-identifier">colocateWith</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a><span> </span><a href="#local-6989586621679119658"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Tensor.html#Rendered"><span class="hs-identifier hs-type">Rendered</span></a><span> </span><a href="#local-6989586621679119659"><span class="hs-identifier hs-type">t</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679119659"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679119660"><span class="hs-identifier hs-type">b</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679119658"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679119661"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679119658"><span class="hs-identifier hs-type">m</span></a><span> </span><a href="#local-6989586621679119661"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-140"></a><a name="colocateWith"><a href="TensorFlow.Tensor.html#colocateWith"><span class="hs-identifier">colocateWith</span></a></a><span> </span><a name="local-6989586621679119682"><a href="#local-6989586621679119682"><span class="hs-identifier">t</span></a></a><span> </span><a name="local-6989586621679119683"><a href="#local-6989586621679119683"><span class="hs-identifier">x</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-141"></a><span> </span><a name="local-6989586621679119684"><a href="#local-6989586621679119684"><span class="hs-identifier">d</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Output.html#Device"><span class="hs-identifier hs-var">Device</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-special">(</span><span class="hs-operator hs-var">^.</span><span> </span><span class="hs-identifier hs-var">device</span><span class="hs-special">)</span><span>
</span><a name="line-142"></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Build.html#lookupNode"><span class="hs-identifier hs-var">lookupNode</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier">outputNodeName</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Tensor.html#renderedOutput"><span class="hs-identifier hs-var">renderedOutput</span></a><span> </span><a href="#local-6989586621679119682"><span class="hs-identifier hs-var">t</span></a><span class="hs-special">)</span><span>
</span><a name="line-143"></a><span> </span><a href="TensorFlow.Build.html#withDevice"><span class="hs-identifier hs-var">withDevice</span></a><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">Just</span><span> </span><a href="#local-6989586621679119684"><span class="hs-identifier hs-var">d</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679119683"><span class="hs-identifier hs-var">x</span></a><span>
</span><a name="line-144"></a><span>
</span><a name="line-145"></a><span>
</span><a name="line-146"></a><span class="hs-comment">-- | Render a 'Tensor', fixing its name, scope, device and control inputs from</span><span>
</span><a name="line-147"></a><span class="hs-comment">-- the 'MonadBuild' context. Also renders any dependencies of the 'Tensor' that</span><span>
</span><a name="line-148"></a><span class="hs-comment">-- weren't already rendered.</span><span>
</span><a name="line-149"></a><span class="hs-comment">--</span><span>
</span><a name="line-150"></a><span class="hs-comment">-- This operation is idempotent; calling 'render' on the same input in the same</span><span>
</span><a name="line-151"></a><span class="hs-comment">-- context will produce the same result. However, rendering the same</span><span>
</span><a name="line-152"></a><span class="hs-comment">-- @Tensor Build@ in two different contexts may result in two different</span><span>
</span><a name="line-153"></a><span class="hs-comment">-- @Tensor Value@s.</span><span>
</span><a name="line-154"></a><span class="hs-identifier">render</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a><span> </span><a href="#local-6989586621679119656"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><a href="#local-6989586621679119657"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679119656"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><a href="#local-6989586621679119657"><span class="hs-identifier hs-type">a</span></a><span class="hs-special">)</span><span>
</span><a name="line-155"></a><a name="render"><a href="TensorFlow.Tensor.html#render"><span class="hs-identifier">render</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679119685"><a href="#local-6989586621679119685"><span class="hs-identifier">t</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a><span> </span><a href="#local-6989586621679119685"><span class="hs-identifier hs-var">t</span></a><span>
</span><a name="line-156"></a><span>
</span><a name="line-157"></a><span class="hs-comment">-- TODO: better name.</span><span>
</span><a name="line-158"></a><span class="hs-identifier">expr</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="#local-6989586621679119654"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119654"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679119655"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><a href="#local-6989586621679119655"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-159"></a><a name="expr"><a href="TensorFlow.Tensor.html#expr"><span class="hs-identifier">expr</span></a></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><a name="local-6989586621679119686"><a href="#local-6989586621679119686"><span class="hs-identifier">o</span></a></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier hs-var">toBuild</span></a><span> </span><a href="#local-6989586621679119686"><span class="hs-identifier hs-var">o</span></a><span>
</span><a name="line-160"></a><span>
</span><a name="line-161"></a><span class="hs-comment">-- | Records the given summary action in Build for retrieval with</span><span>
</span><a name="line-162"></a><span class="hs-comment">-- Summary protocol buffer in string form. For safety, use the</span><span>
</span><a name="line-163"></a><span class="hs-comment">-- pre-composed functions: Logging.scalarSummary and</span><span>
</span><a name="line-164"></a><span class="hs-comment">-- Logging.histogramSummary.</span><span>
</span><a name="line-165"></a><span class="hs-identifier">addSummary</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a><span> </span><a href="#local-6989586621679119652"><span class="hs-identifier hs-type">m</span></a><span class="hs-special">,</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="#local-6989586621679119653"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119653"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-identifier hs-type">ByteString</span><span> </span><span class="hs-comment">-- ^ A 'SummaryTensor'</span><span>
</span><a name="line-166"></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="#local-6989586621679119652"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><a name="line-167"></a><a name="addSummary"><a href="TensorFlow.Tensor.html#addSummary"><span class="hs-identifier">addSummary</span></a></a><span> </span><a name="local-6989586621679119687"><a href="#local-6989586621679119687"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-168"></a><span> </span><span class="hs-comment">-- TODO: more generic way</span><span>
</span><a name="line-169"></a><span> </span><a name="local-6989586621679119688"><a href="#local-6989586621679119688"><span class="hs-identifier">o</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier hs-var">toBuild</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier">tensorOutput</span><span> </span><a href="#local-6989586621679119687"><span class="hs-identifier hs-var">t</span></a><span>
</span><a name="line-170"></a><span> </span><a href="TensorFlow.Build.html#summaries"><span class="hs-identifier hs-var">summaries</span></a><span> </span><span class="hs-operator hs-var">%=</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679119688"><span class="hs-identifier hs-var">o</span></a><span> </span><span class="hs-glyph">:</span><span class="hs-special">)</span><span>
</span><a name="line-171"></a><span>
</span><a name="line-172"></a><span class="hs-comment">-- | Retrieves the summary ops collected thus far. Typically this only</span><span>
</span><a name="line-173"></a><span class="hs-comment">-- happens once, but if 'TensorFlow.Session.buildWithSummary' is used</span><span>
</span><a name="line-174"></a><span class="hs-comment">-- repeatedly, the values accumulate.</span><span>
</span><a name="line-175"></a><span class="hs-identifier">collectAllSummaries</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Build.html#MonadBuild"><span class="hs-identifier hs-type">MonadBuild</span></a><span> </span><a href="#local-6989586621679119651"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679119651"><span class="hs-identifier hs-type">m</span></a><span> </span><span class="hs-special">[</span><a href="TensorFlow.Tensor.html#SummaryTensor"><span class="hs-identifier hs-type">SummaryTensor</span></a><span class="hs-special">]</span><span>
</span><a name="line-176"></a><a name="collectAllSummaries"><a href="TensorFlow.Tensor.html#collectAllSummaries"><span class="hs-identifier">collectAllSummaries</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Build.html#build"><span class="hs-identifier hs-var">build</span></a><span> </span><span class="hs-operator hs-var">$</span><span> </span><span class="hs-identifier hs-var">map</span><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-var">Tensor</span></a><span> </span><span class="hs-operator hs-var">.</span><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-var">Value</span></a><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">&lt;$&gt;</span><span> </span><span class="hs-identifier hs-var">use</span><span> </span><a href="TensorFlow.Build.html#summaries"><span class="hs-identifier hs-var">summaries</span></a><span>
</span><a name="line-177"></a><span>
</span><a name="line-178"></a><span class="hs-comment">-- | Synonym for the tensors that return serialized Summary proto.</span><span>
</span><a name="line-179"></a><span class="hs-keyword">type</span><span> </span><a name="SummaryTensor"><a href="TensorFlow.Tensor.html#SummaryTensor"><span class="hs-identifier">SummaryTensor</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><span class="hs-identifier hs-type">ByteString</span><span>
</span><a name="line-180"></a><span>
</span><a name="line-181"></a><span class="hs-comment">-- | An internal class for kinds of Tensors.</span><span>
</span><a name="line-182"></a><span class="hs-keyword">class</span><span> </span><span class="hs-identifier hs-type">Monad</span><span> </span><a href="#local-6989586621679119631"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a name="TensorKind"><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier">TensorKind</span></a></a><span> </span><a name="local-6989586621679119631"><a href="#local-6989586621679119631"><span class="hs-identifier">v</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-183"></a><span> </span><span class="hs-identifier">toBuild</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="#local-6989586621679119631"><span class="hs-identifier hs-type">v</span></a><span> </span><a href="#local-6989586621679119632"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><a href="#local-6989586621679119632"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-184"></a><span>
</span><a name="line-185"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="TensorFlow.Tensor.html#Value"><span class="hs-identifier hs-type">Value</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-186"></a><span> </span><a name="local-8214565720323894511"><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier">toBuild</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">runValue</span><span>
</span><a name="line-187"></a><span>
</span><a name="line-188"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="TensorFlow.Tensor.html#Ref"><span class="hs-identifier hs-type">Ref</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-189"></a><span> </span><a name="local-8214565720323894511"><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier">toBuild</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><span class="hs-operator hs-var">.</span><span> </span><span class="hs-identifier">runRef</span><span>
</span><a name="line-190"></a><span>
</span><a name="line-191"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-192"></a><span> </span><a name="local-8214565720323894511"><a href="TensorFlow.Tensor.html#toBuild"><span class="hs-identifier">toBuild</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">id</span><span>
</span><a name="line-193"></a><span>
</span><a name="line-194"></a><span>
</span><a name="line-195"></a><span class="hs-comment">-- | Types which can be converted to `Tensor`.</span><span>
</span><a name="line-196"></a><span class="hs-keyword">class</span><span> </span><a name="ToTensor"><a href="TensorFlow.Tensor.html#ToTensor"><span class="hs-identifier">ToTensor</span></a></a><span> </span><a name="local-6989586621679119629"><a href="#local-6989586621679119629"><span class="hs-identifier">t</span></a></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-197"></a><span> </span><span class="hs-identifier">toTensor</span><span> </span><span class="hs-glyph">::</span><span> </span><a href="TensorFlow.Types.html#TensorType"><span class="hs-identifier hs-type">TensorType</span></a><span> </span><a href="#local-6989586621679119630"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="#local-6989586621679119629"><span class="hs-identifier hs-type">t</span></a><span> </span><a href="#local-6989586621679119630"><span class="hs-identifier hs-type">a</span></a><span> </span><span class="hs-glyph">-&gt;</span><span> </span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="TensorFlow.Build.html#Build"><span class="hs-identifier hs-type">Build</span></a><span> </span><a href="#local-6989586621679119630"><span class="hs-identifier hs-type">a</span></a><span>
</span><a name="line-198"></a><span>
</span><a name="line-199"></a><span class="hs-keyword">instance</span><span> </span><a href="TensorFlow.Tensor.html#TensorKind"><span class="hs-identifier hs-type">TensorKind</span></a><span> </span><a href="#local-6989586621679119642"><span class="hs-identifier hs-type">v</span></a><span> </span><span class="hs-glyph">=&gt;</span><span> </span><a href="TensorFlow.Tensor.html#ToTensor"><span class="hs-identifier hs-type">ToTensor</span></a><span> </span><span class="hs-special">(</span><a href="TensorFlow.Tensor.html#Tensor"><span class="hs-identifier hs-type">Tensor</span></a><span> </span><a href="#local-6989586621679119642"><span class="hs-identifier hs-type">v</span></a><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-200"></a><span> </span><a name="local-8214565720323894509"><a href="TensorFlow.Tensor.html#toTensor"><span class="hs-identifier">toTensor</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="TensorFlow.Tensor.html#expr"><span class="hs-identifier hs-var">expr</span></a><span>
</span><a name="line-201"></a></pre></body></html>