mirror of
https://github.com/tensorflow/haskell.git
synced 2024-09-28 01:07:22 +02:00
487 lines
79 KiB
HTML
487 lines
79 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><span id="line-2"></span><span class="hs-comment">--</span><span>
|
||
|
</span><span id="line-3"></span><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the "License");</span><span>
|
||
|
</span><span id="line-4"></span><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span>
|
||
|
</span><span id="line-5"></span><span class="hs-comment">-- You may obtain a copy of the License at</span><span>
|
||
|
</span><span id="line-6"></span><span class="hs-comment">--</span><span>
|
||
|
</span><span id="line-7"></span><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span>
|
||
|
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
|
||
|
</span><span id="line-9"></span><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span>
|
||
|
</span><span id="line-10"></span><span class="hs-comment">-- distributed under the License is distributed on an "AS IS" BASIS,</span><span>
|
||
|
</span><span id="line-11"></span><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span>
|
||
|
</span><span id="line-12"></span><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span>
|
||
|
</span><span id="line-13"></span><span class="hs-comment">-- limitations under the License.</span><span>
|
||
|
</span><span id="line-14"></span><span>
|
||
|
</span><span id="line-15"></span><span class="hs-comment">-- | TensorBoard Summary generation. Provides type safe wrappers around raw</span><span>
|
||
|
</span><span id="line-16"></span><span class="hs-comment">-- string emitting CoreOps.</span><span>
|
||
|
</span><span id="line-17"></span><span class="hs-comment">--</span><span>
|
||
|
</span><span id="line-18"></span><span class="hs-comment">-- Example use:</span><span>
|
||
|
</span><span id="line-19"></span><span class="hs-comment">--</span><span>
|
||
|
</span><span id="line-20"></span><span class="hs-comment">-- > -- Call summary functions while constructing the graph.</span><span>
|
||
|
</span><span id="line-21"></span><span class="hs-comment">-- > createModel = do</span><span>
|
||
|
</span><span id="line-22"></span><span class="hs-comment">-- > loss <- -- ...</span><span>
|
||
|
</span><span id="line-23"></span><span class="hs-comment">-- > TF.scalarSummary loss</span><span>
|
||
|
</span><span id="line-24"></span><span class="hs-comment">-- ></span><span>
|
||
|
</span><span id="line-25"></span><span class="hs-comment">-- > -- Write summaries to an EventWriter.</span><span>
|
||
|
</span><span id="line-26"></span><span class="hs-comment">-- > train = TF.withEventWriter "/path/to/logs" $ \eventWriter -> do</span><span>
|
||
|
</span><span id="line-27"></span><span class="hs-comment">-- > summaryTensor <- TF.build TF.allSummaries</span><span>
|
||
|
</span><span id="line-28"></span><span class="hs-comment">-- > forM_ [1..] $ \step -> do</span><span>
|
||
|
</span><span id="line-29"></span><span class="hs-comment">-- > if (step % 100 == 0)</span><span>
|
||
|
</span><span id="line-30"></span><span class="hs-comment">-- > then do</span><span>
|
||
|
</span><span id="line-31"></span><span class="hs-comment">-- > ((), summaryBytes) <- TF.run (trainStep, summaryTensor)</span><span>
|
||
|
</span><span id="line-32"></span><span class="hs-comment">-- > let summary = decodeMessageOrDie (TF.unScalar summaryBytes)</span><span>
|
||
|
</span><span id="line-33"></span><span class="hs-comment">-- > TF.logSummary eventWriter step summary</span><span>
|
||
|
</span><span id="line-34"></span><span class="hs-comment">-- > else TF.run_ trainStep</span><span>
|
||
|
</span><span id="line-35"></span><span>
|
||
|
</span><span id="line-36"></span><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
|
||
|
</span><span id="line-37"></span><span class="hs-pragma">{-# LANGUAGE TypeOperators #-}</span><span>
|
||
|
</span><span id="line-38"></span><span>
|
||
|
</span><span id="line-39"></span><span>
|
||
|
</span><span id="line-40"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow.Logging</span><span>
|
||
|
</span><span id="line-41"></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier">EventWriter</span></a></span><span>
|
||
|
</span><span id="line-42"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#withEventWriter"><span class="hs-identifier">withEventWriter</span></a></span><span>
|
||
|
</span><span id="line-43"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier">logEvent</span></a></span><span>
|
||
|
</span><span id="line-44"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#logGraph"><span class="hs-identifier">logGraph</span></a></span><span>
|
||
|
</span><span id="line-45"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#logSummary"><span class="hs-identifier">logSummary</span></a></span><span>
|
||
|
</span><span id="line-46"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">SummaryTensor</span></span><span>
|
||
|
</span><span id="line-47"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#histogramSummary"><span class="hs-identifier">histogramSummary</span></a></span><span>
|
||
|
</span><span id="line-48"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#imageSummary"><span class="hs-identifier">imageSummary</span></a></span><span>
|
||
|
</span><span id="line-49"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#scalarSummary"><span class="hs-identifier">scalarSummary</span></a></span><span>
|
||
|
</span><span id="line-50"></span><span> </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#mergeAllSummaries"><span class="hs-identifier">mergeAllSummaries</span></a></span><span>
|
||
|
</span><span id="line-51"></span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
|
||
|
</span><span id="line-52"></span><span>
|
||
|
</span><span id="line-53"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Concurrent</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">forkFinally</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Concurrent.MVar</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MVar</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">newEmptyMVar</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">readMVar</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">putMVar</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Concurrent.STM</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">atomically</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-56"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Concurrent.STM.TBMQueue</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">TBMQueue</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">newTBMQueueIO</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">closeTBMQueue</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">writeTBMQueue</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Catch</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadMask</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">bracket</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.IO.Class</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadIO</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">liftIO</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-59"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Control.Monad.Trans.Resource</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">runResourceT</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-60"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.ByteString</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">ByteString</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-61"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Conduit</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-operator">(.|)</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-62"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Conduit.TQueue</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">sourceTBMQueue</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-63"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.ProtoLens.Default</span></span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">def</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-64"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Int</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Int64</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-65"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Word</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Word8</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">Word16</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-66"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.ProtoLens</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">encodeMessage</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-67"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Time.Clock</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">getCurrentTime</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-68"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Data.Time.Clock.POSIX</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">utcTimeToPOSIXSeconds</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-69"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Lens.Family2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-operator">(.~)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-operator">(&)</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-70"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Network.HostName</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">getHostName</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-71"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Framework.Summary</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Summary</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Util.Event</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Event</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Proto.Tensorflow.Core.Util.Event_Fields</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">fileVersion</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">graphDef</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">step</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">summary</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">wallTime</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-74"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">System.Directory</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">createDirectoryIfMissing</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-75"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">System.FilePath</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-operator">(</>)</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-76"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.Build</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">MonadBuild</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">Build</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">asGraphDef</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-77"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.Ops</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">scalar</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-78"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.Records.Conduit</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">sinkTFRecords</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-79"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.Tensor</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">Tensor</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">render</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">SummaryTensor</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">addSummary</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">collectAllSummaries</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-80"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.Types</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">TensorType</span></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">type</span><span class="annot"><span class="hs-operator">(/=)</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier">OneOf</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-81"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><span class="hs-identifier">Text.Printf</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">printf</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-82"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.ByteString.Lazy</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">L</span></span><span>
|
||
|
</span><span id="line-83"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Conduit</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Conduit</span></span><span>
|
||
|
</span><span id="line-84"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Conduit.List</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Conduit</span></span><span>
|
||
|
</span><span id="line-85"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">Data.Text</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">T</span></span><span>
|
||
|
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><span class="hs-identifier">TensorFlow.GenOps.Core</span></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">CoreOps</span></span><span>
|
||
|
</span><span id="line-87"></span><span>
|
||
|
</span><span id="line-88"></span><span class="hs-comment">-- | Handle for logging TensorBoard events safely from multiple threads.</span><span>
|
||
|
</span><span id="line-89"></span><span class="hs-keyword">data</span><span> </span><span id="EventWriter"><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-var">EventWriter</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="EventWriter"><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-var">EventWriter</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">TBMQueue</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Event</span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">MVar</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-90"></span><span>
|
||
|
</span><span id="line-91"></span><span class="hs-comment">-- | Writes Event protocol buffers to event files.</span><span>
|
||
|
</span><span id="line-92"></span><span id="local-6989586621679144298"><span id="local-6989586621679144299"><span class="annot"><a href="TensorFlow.Logging.html#withEventWriter"><span class="hs-identifier hs-type">withEventWriter</span></a></span><span> </span><span class="hs-glyph">::</span><span>
|
||
|
</span><span id="line-93"></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">MonadIO</span></span><span> </span><span class="annot"><a href="#local-6989586621679144299"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadMask</span></span><span> </span><span class="annot"><a href="#local-6989586621679144299"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-94"></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">FilePath</span></span><span>
|
||
|
</span><span id="line-95"></span><span> </span><span class="hs-comment">-- ^ logdir. Local filesystem directory where event file will be written.</span><span>
|
||
|
</span><span id="line-96"></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144299"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679144298"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-97"></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144299"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679144298"><span class="hs-identifier hs-type">a</span></a></span></span></span><span>
|
||
|
</span><span id="line-98"></span><span id="withEventWriter"><span class="annot"><span class="annottext">withEventWriter :: FilePath -> (EventWriter -> m a) -> m a
|
||
|
</span><a href="TensorFlow.Logging.html#withEventWriter"><span class="hs-identifier hs-var hs-var">withEventWriter</span></a></span></span><span> </span><span id="local-6989586621679144297"><span class="annot"><span class="annottext">logdir :: FilePath
|
||
|
</span><a href="#local-6989586621679144297"><span class="hs-identifier hs-var">logdir</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
|
||
|
</span><span id="line-99"></span><span> </span><span class="annot"><span class="annottext">m EventWriter
|
||
|
-> (EventWriter -> m ()) -> (EventWriter -> m a) -> m a
|
||
|
forall (m :: * -> *) a c b.
|
||
|
MonadMask m =>
|
||
|
m a -> (a -> m c) -> (a -> m b) -> m b
|
||
|
</span><span class="hs-identifier hs-var">bracket</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IO EventWriter -> m EventWriter
|
||
|
forall (m :: * -> *) a. MonadIO m => IO a -> m a
|
||
|
</span><span class="hs-identifier hs-var">liftIO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FilePath -> IO EventWriter
|
||
|
</span><a href="TensorFlow.Logging.html#newEventWriter"><span class="hs-identifier hs-var">newEventWriter</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144297"><span class="hs-identifier hs-var">logdir</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IO () -> m ()
|
||
|
forall (m :: * -> *) a. MonadIO m => IO a -> m a
|
||
|
</span><span class="hs-identifier hs-var">liftIO</span></span><span> </span><span class="annot"><span class="annottext">(IO () -> m ()) -> (EventWriter -> IO ()) -> EventWriter -> m ()
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">EventWriter -> IO ()
|
||
|
</span><a href="TensorFlow.Logging.html#closeEventWriter"><span class="hs-identifier hs-var">closeEventWriter</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-100"></span><span>
|
||
|
</span><span id="line-101"></span><span class="annot"><a href="TensorFlow.Logging.html#newEventWriter"><span class="hs-identifier hs-type">newEventWriter</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">FilePath</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span>
|
||
|
</span><span id="line-102"></span><span id="newEventWriter"><span class="annot"><span class="annottext">newEventWriter :: FilePath -> IO EventWriter
|
||
|
</span><a href="TensorFlow.Logging.html#newEventWriter"><span class="hs-identifier hs-var hs-var">newEventWriter</span></a></span></span><span> </span><span id="local-6989586621679144293"><span class="annot"><span class="annottext">logdir :: FilePath
|
||
|
</span><a href="#local-6989586621679144293"><span class="hs-identifier hs-var">logdir</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
|
||
|
</span><span id="line-103"></span><span> </span><span class="annot"><span class="annottext">Bool -> FilePath -> IO ()
|
||
|
</span><span class="hs-identifier hs-var">createDirectoryIfMissing</span></span><span> </span><span class="annot"><span class="annottext">Bool
|
||
|
</span><span class="hs-identifier hs-var">True</span></span><span> </span><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144293"><span class="hs-identifier hs-var">logdir</span></a></span><span>
|
||
|
</span><span id="line-104"></span><span> </span><span id="local-6989586621679144292"><span class="annot"><span class="annottext">Double
|
||
|
</span><a href="#local-6989586621679144292"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">IO Double
|
||
|
</span><a href="TensorFlow.Logging.html#doubleWallTime"><span class="hs-identifier hs-var">doubleWallTime</span></a></span><span>
|
||
|
</span><span id="line-105"></span><span> </span><span id="local-6989586621679144290"><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144290"><span class="hs-identifier hs-var">hostname</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">IO FilePath
|
||
|
</span><span class="hs-identifier hs-var">getHostName</span></span><span>
|
||
|
</span><span id="line-106"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679144289"><span class="annot"><span class="annottext">filename :: FilePath
|
||
|
</span><a href="#local-6989586621679144289"><span class="hs-identifier hs-var hs-var">filename</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FilePath -> Integer -> FilePath -> FilePath
|
||
|
forall r. PrintfType r => FilePath -> r
|
||
|
</span><span class="hs-identifier hs-var">printf</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144293"><span class="hs-identifier hs-var">logdir</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath -> FilePath -> FilePath
|
||
|
</span><span class="hs-operator hs-var"></></span></span><span> </span><span class="annot"><span class="hs-string">"events.out.tfevents.%010d.%s"</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-107"></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Double -> Integer
|
||
|
forall a b. (RealFrac a, Integral b) => a -> b
|
||
|
</span><span class="hs-identifier hs-var">truncate</span></span><span> </span><span class="annot"><span class="annottext">Double
|
||
|
</span><a href="#local-6989586621679144292"><span class="hs-identifier hs-var">t</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Integer</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144290"><span class="hs-identifier hs-var">hostname</span></a></span><span>
|
||
|
</span><span id="line-108"></span><span> </span><span class="hs-comment">-- Asynchronously consume events from a queue.</span><span>
|
||
|
</span><span id="line-109"></span><span> </span><span class="hs-comment">-- We use a bounded queue to ensure the producer doesn't get too far ahead</span><span>
|
||
|
</span><span id="line-110"></span><span> </span><span class="hs-comment">-- of the consumer. The buffer size was picked arbitrarily.</span><span>
|
||
|
</span><span id="line-111"></span><span> </span><span id="local-6989586621679144287"><span class="annot"><span class="annottext">TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144287"><span class="hs-identifier hs-var">q</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">Int -> IO (TBMQueue Event)
|
||
|
forall a. Int -> IO (TBMQueue a)
|
||
|
</span><span class="hs-identifier hs-var">newTBMQueueIO</span></span><span> </span><span class="annot"><span class="hs-number">1024</span></span><span>
|
||
|
</span><span id="line-112"></span><span> </span><span class="hs-comment">-- Use an MVar to signal that the worker thread has completed.</span><span>
|
||
|
</span><span id="line-113"></span><span> </span><span id="local-6989586621679144286"><span class="annot"><span class="annottext">MVar ()
|
||
|
</span><a href="#local-6989586621679144286"><span class="hs-identifier hs-var">done</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">IO (MVar ())
|
||
|
forall a. IO (MVar a)
|
||
|
</span><span class="hs-identifier hs-var">newEmptyMVar</span></span><span>
|
||
|
</span><span id="line-114"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679144285"><span class="annot"><span class="annottext">writer :: EventWriter
|
||
|
</span><a href="#local-6989586621679144285"><span class="hs-identifier hs-var hs-var">writer</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TBMQueue Event -> MVar () -> EventWriter
|
||
|
</span><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-var">EventWriter</span></a></span><span> </span><span class="annot"><span class="annottext">TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144287"><span class="hs-identifier hs-var">q</span></a></span><span> </span><span class="annot"><span class="annottext">MVar ()
|
||
|
</span><a href="#local-6989586621679144286"><span class="hs-identifier hs-var">done</span></a></span><span>
|
||
|
</span><span id="line-115"></span><span> </span><span id="local-6989586621679144284"><span class="annot"><span class="annottext">consumeQueue :: IO ()
|
||
|
</span><a href="#local-6989586621679144284"><span class="hs-identifier hs-var hs-var">consumeQueue</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ResourceT IO () -> IO ()
|
||
|
forall (m :: * -> *) a. MonadUnliftIO m => ResourceT m a -> m a
|
||
|
</span><span class="hs-identifier hs-var">runResourceT</span></span><span> </span><span class="annot"><span class="annottext">(ResourceT IO () -> IO ()) -> ResourceT IO () -> IO ()
|
||
|
forall a b. (a -> b) -> a -> b
|
||
|
</span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">ConduitT () Void (ResourceT IO) () -> ResourceT IO ()
|
||
|
forall (m :: * -> *) r. Monad m => ConduitT () Void m r -> m r
|
||
|
</span><span class="hs-identifier hs-var">Conduit.runConduit</span></span><span> </span><span class="annot"><span class="annottext">(ConduitT () Void (ResourceT IO) () -> ResourceT IO ())
|
||
|
-> ConduitT () Void (ResourceT IO) () -> ResourceT IO ()
|
||
|
forall a b. (a -> b) -> a -> b
|
||
|
</span><span class="hs-operator hs-var">$</span></span><span>
|
||
|
</span><span id="line-116"></span><span> </span><span class="annot"><span class="annottext">TBMQueue Event -> ConduitT () Event (ResourceT IO) ()
|
||
|
forall (m :: * -> *) a z.
|
||
|
MonadIO m =>
|
||
|
TBMQueue a -> ConduitT z a m ()
|
||
|
</span><span class="hs-identifier hs-var">sourceTBMQueue</span></span><span> </span><span class="annot"><span class="annottext">TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144287"><span class="hs-identifier hs-var">q</span></a></span><span>
|
||
|
</span><span id="line-117"></span><span> </span><span class="annot"><span class="annottext">ConduitT () Event (ResourceT IO) ()
|
||
|
-> ConduitM Event Void (ResourceT IO) ()
|
||
|
-> ConduitT () Void (ResourceT IO) ()
|
||
|
forall (m :: * -> *) a b c r.
|
||
|
Monad m =>
|
||
|
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
|
||
|
</span><span class="hs-operator hs-var">.|</span></span><span> </span><span class="annot"><span class="annottext">(Event -> ByteString)
|
||
|
-> ConduitT Event ByteString (ResourceT IO) ()
|
||
|
forall (m :: * -> *) a b. Monad m => (a -> b) -> ConduitT a b m ()
|
||
|
</span><span class="hs-identifier hs-var">Conduit.map</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -> ByteString
|
||
|
</span><span class="hs-identifier hs-var">L.fromStrict</span></span><span> </span><span class="annot"><span class="annottext">(ByteString -> ByteString)
|
||
|
-> (Event -> ByteString) -> Event -> ByteString
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Event -> ByteString
|
||
|
forall msg. Message msg => msg -> ByteString
|
||
|
</span><span class="hs-identifier hs-var">encodeMessage</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-118"></span><span> </span><span class="annot"><span class="annottext">ConduitT Event ByteString (ResourceT IO) ()
|
||
|
-> ConduitM ByteString Void (ResourceT IO) ()
|
||
|
-> ConduitM Event Void (ResourceT IO) ()
|
||
|
forall (m :: * -> *) a b c r.
|
||
|
Monad m =>
|
||
|
ConduitM a b m () -> ConduitM b c m r -> ConduitM a c m r
|
||
|
</span><span class="hs-operator hs-var">.|</span></span><span> </span><span class="annot"><span class="annottext">FilePath -> ConduitM ByteString Void (ResourceT IO) ()
|
||
|
forall (m :: * -> *) o.
|
||
|
MonadResource m =>
|
||
|
FilePath -> ConduitT ByteString o m ()
|
||
|
</span><span class="hs-identifier hs-var">sinkTFRecords</span></span><span> </span><span class="annot"><span class="annottext">FilePath
|
||
|
</span><a href="#local-6989586621679144289"><span class="hs-identifier hs-var">filename</span></a></span><span>
|
||
|
</span><span id="line-119"></span><span> </span><span class="annot"><span class="annottext">ThreadId
|
||
|
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">IO () -> (Either SomeException () -> IO ()) -> IO ThreadId
|
||
|
forall a. IO a -> (Either SomeException a -> IO ()) -> IO ThreadId
|
||
|
</span><span class="hs-identifier hs-var">forkFinally</span></span><span> </span><span class="annot"><span class="annottext">IO ()
|
||
|
</span><a href="#local-6989586621679144284"><span class="hs-identifier hs-var">consumeQueue</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span class="hs-identifier">_</span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="annottext">MVar () -> () -> IO ()
|
||
|
forall a. MVar a -> a -> IO ()
|
||
|
</span><span class="hs-identifier hs-var">putMVar</span></span><span> </span><span class="annot"><span class="annottext">MVar ()
|
||
|
</span><a href="#local-6989586621679144286"><span class="hs-identifier hs-var">done</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-120"></span><span> </span><span class="annot"><span class="annottext">EventWriter -> Event -> IO ()
|
||
|
forall (m :: * -> *). MonadIO m => EventWriter -> Event -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier hs-var">logEvent</span></a></span><span> </span><span class="annot"><span class="annottext">EventWriter
|
||
|
</span><a href="#local-6989586621679144285"><span class="hs-identifier hs-var">writer</span></a></span><span> </span><span class="annot"><span class="annottext">(Event -> IO ()) -> Event -> IO ()
|
||
|
forall a b. (a -> b) -> a -> b
|
||
|
</span><span class="hs-operator hs-var">$</span></span><span> </span><span class="annot"><span class="annottext">Event
|
||
|
forall a. Message a => a
|
||
|
</span><span class="hs-identifier hs-var">def</span></span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event Double
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "wallTime" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">wallTime</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event Double)
|
||
|
-> Double -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">Double
|
||
|
</span><a href="#local-6989586621679144292"><span class="hs-identifier hs-var">t</span></a></span><span>
|
||
|
</span><span id="line-121"></span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event Text
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "fileVersion" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">fileVersion</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event Text)
|
||
|
-> Text -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">FilePath -> Text
|
||
|
</span><span class="hs-identifier hs-var">T.pack</span></span><span> </span><span class="annot"><span class="hs-string">"brain.Event:2"</span></span><span>
|
||
|
</span><span id="line-122"></span><span> </span><span class="annot"><span class="annottext">EventWriter -> IO EventWriter
|
||
|
forall (m :: * -> *) a. Monad m => a -> m a
|
||
|
</span><span class="hs-identifier hs-var">return</span></span><span> </span><span class="annot"><span class="annottext">EventWriter
|
||
|
</span><a href="#local-6989586621679144285"><span class="hs-identifier hs-var">writer</span></a></span><span>
|
||
|
</span><span id="line-123"></span><span>
|
||
|
</span><span id="line-124"></span><span class="annot"><a href="TensorFlow.Logging.html#closeEventWriter"><span class="hs-identifier hs-type">closeEventWriter</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-125"></span><span id="closeEventWriter"><span class="annot"><span class="annottext">closeEventWriter :: EventWriter -> IO ()
|
||
|
</span><a href="TensorFlow.Logging.html#closeEventWriter"><span class="hs-identifier hs-var hs-var">closeEventWriter</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span id="local-6989586621679144279"><span class="annot"><span class="annottext">q :: TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144279"><span class="hs-identifier hs-var">q</span></a></span></span><span> </span><span id="local-6989586621679144278"><span class="annot"><span class="annottext">done :: MVar ()
|
||
|
</span><a href="#local-6989586621679144278"><span class="hs-identifier hs-var">done</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
|
||
|
</span><span id="line-126"></span><span> </span><span class="annot"><span class="annottext">STM () -> IO ()
|
||
|
forall a. STM a -> IO a
|
||
|
</span><span class="hs-identifier hs-var">atomically</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TBMQueue Event -> STM ()
|
||
|
forall a. TBMQueue a -> STM ()
|
||
|
</span><span class="hs-identifier hs-var">closeTBMQueue</span></span><span> </span><span class="annot"><span class="annottext">TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144279"><span class="hs-identifier hs-var">q</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">IO () -> IO () -> IO ()
|
||
|
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
|
||
|
</span><span class="hs-operator hs-var">>></span></span><span> </span><span class="annot"><span class="annottext">MVar () -> IO ()
|
||
|
forall a. MVar a -> IO a
|
||
|
</span><span class="hs-identifier hs-var">readMVar</span></span><span> </span><span class="annot"><span class="annottext">MVar ()
|
||
|
</span><a href="#local-6989586621679144278"><span class="hs-identifier hs-var">done</span></a></span><span>
|
||
|
</span><span id="line-127"></span><span>
|
||
|
</span><span id="line-128"></span><span class="hs-comment">-- | Logs the given Event protocol buffer.</span><span>
|
||
|
</span><span id="line-129"></span><span id="local-6989586621679144433"><span class="annot"><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier hs-type">logEvent</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadIO</span></span><span> </span><span class="annot"><a href="#local-6989586621679144433"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Event</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144433"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span>
|
||
|
</span><span id="line-130"></span><span id="logEvent"><span class="annot"><span class="annottext">logEvent :: EventWriter -> Event -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier hs-var hs-var">logEvent</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span id="local-6989586621679144277"><span class="annot"><span class="annottext">q :: TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144277"><span class="hs-identifier hs-var">q</span></a></span></span><span> </span><span class="hs-identifier">_</span><span class="hs-special">)</span><span> </span><span id="local-6989586621679144276"><span class="annot"><span class="annottext">pb :: Event
|
||
|
</span><a href="#local-6989586621679144276"><span class="hs-identifier hs-var">pb</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IO () -> m ()
|
||
|
forall (m :: * -> *) a. MonadIO m => IO a -> m a
|
||
|
</span><span class="hs-identifier hs-var">liftIO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">STM () -> IO ()
|
||
|
forall a. STM a -> IO a
|
||
|
</span><span class="hs-identifier hs-var">atomically</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TBMQueue Event -> Event -> STM ()
|
||
|
forall a. TBMQueue a -> a -> STM ()
|
||
|
</span><span class="hs-identifier hs-var">writeTBMQueue</span></span><span> </span><span class="annot"><span class="annottext">TBMQueue Event
|
||
|
</span><a href="#local-6989586621679144277"><span class="hs-identifier hs-var">q</span></a></span><span> </span><span class="annot"><span class="annottext">Event
|
||
|
</span><a href="#local-6989586621679144276"><span class="hs-identifier hs-var">pb</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-131"></span><span>
|
||
|
</span><span id="line-132"></span><span class="hs-comment">-- | Logs the graph for the given 'Build' action.</span><span>
|
||
|
</span><span id="line-133"></span><span id="local-6989586621679144274"><span id="local-6989586621679144275"><span class="annot"><a href="TensorFlow.Logging.html#logGraph"><span class="hs-identifier hs-type">logGraph</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadIO</span></span><span> </span><span class="annot"><a href="#local-6989586621679144275"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Build</span></span><span> </span><span class="annot"><a href="#local-6989586621679144274"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144275"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span><span>
|
||
|
</span><span id="line-134"></span><span id="logGraph"><span class="annot"><span class="annottext">logGraph :: EventWriter -> Build a -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logGraph"><span class="hs-identifier hs-var hs-var">logGraph</span></a></span></span><span> </span><span id="local-6989586621679144273"><span class="annot"><span class="annottext">writer :: EventWriter
|
||
|
</span><a href="#local-6989586621679144273"><span class="hs-identifier hs-var">writer</span></a></span></span><span> </span><span id="local-6989586621679144272"><span class="annot"><span class="annottext">build :: Build a
|
||
|
</span><a href="#local-6989586621679144272"><span class="hs-identifier hs-var">build</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
|
||
|
</span><span id="line-135"></span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679144271"><span class="annot"><span class="annottext">graph :: GraphDef
|
||
|
</span><a href="#local-6989586621679144271"><span class="hs-identifier hs-var hs-var">graph</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Build a -> GraphDef
|
||
|
forall a. Build a -> GraphDef
|
||
|
</span><span class="hs-identifier hs-var">asGraphDef</span></span><span> </span><span class="annot"><span class="annottext">Build a
|
||
|
</span><a href="#local-6989586621679144272"><span class="hs-identifier hs-var">build</span></a></span><span>
|
||
|
</span><span id="line-136"></span><span> </span><span id="local-6989586621679144270"><span class="annot"><span class="annottext">graphBytes :: ByteString
|
||
|
</span><a href="#local-6989586621679144270"><span class="hs-identifier hs-var hs-var">graphBytes</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GraphDef -> ByteString
|
||
|
forall msg. Message msg => msg -> ByteString
|
||
|
</span><span class="hs-identifier hs-var">encodeMessage</span></span><span> </span><span class="annot"><span class="annottext">GraphDef
|
||
|
</span><a href="#local-6989586621679144271"><span class="hs-identifier hs-var">graph</span></a></span><span>
|
||
|
</span><span id="line-137"></span><span> </span><span id="local-6989586621679144269"><span class="annot"><span class="annottext">graphEvent :: Event
|
||
|
</span><a href="#local-6989586621679144269"><span class="hs-identifier hs-var hs-var">graphEvent</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Event
|
||
|
forall a. Message a => a
|
||
|
</span><span class="hs-identifier hs-var">def</span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Event</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event ByteString
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "graphDef" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">graphDef</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event ByteString)
|
||
|
-> ByteString -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">ByteString
|
||
|
</span><a href="#local-6989586621679144270"><span class="hs-identifier hs-var">graphBytes</span></a></span><span>
|
||
|
</span><span id="line-138"></span><span> </span><span class="annot"><span class="annottext">EventWriter -> Event -> m ()
|
||
|
forall (m :: * -> *). MonadIO m => EventWriter -> Event -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier hs-var">logEvent</span></a></span><span> </span><span class="annot"><span class="annottext">EventWriter
|
||
|
</span><a href="#local-6989586621679144273"><span class="hs-identifier hs-var">writer</span></a></span><span> </span><span class="annot"><span class="annottext">Event
|
||
|
</span><a href="#local-6989586621679144269"><span class="hs-identifier hs-var">graphEvent</span></a></span><span>
|
||
|
</span><span id="line-139"></span><span>
|
||
|
</span><span id="line-140"></span><span class="hs-comment">-- | Logs the given Summary event with an optional global step (use 0 if not</span><span>
|
||
|
</span><span id="line-141"></span><span class="hs-comment">-- applicable).</span><span>
|
||
|
</span><span id="line-142"></span><span id="local-6989586621679144268"><span class="annot"><a href="TensorFlow.Logging.html#logSummary"><span class="hs-identifier hs-type">logSummary</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadIO</span></span><span> </span><span class="annot"><a href="#local-6989586621679144268"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="TensorFlow.Logging.html#EventWriter"><span class="hs-identifier hs-type">EventWriter</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int64</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Summary</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144268"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span>
|
||
|
</span><span id="line-143"></span><span id="logSummary"><span class="annot"><span class="annottext">logSummary :: EventWriter -> Int64 -> Summary -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logSummary"><span class="hs-identifier hs-var hs-var">logSummary</span></a></span></span><span> </span><span id="local-6989586621679144267"><span class="annot"><span class="annottext">writer :: EventWriter
|
||
|
</span><a href="#local-6989586621679144267"><span class="hs-identifier hs-var">writer</span></a></span></span><span> </span><span id="local-6989586621679144266"><span class="annot"><span class="annottext">step' :: Int64
|
||
|
</span><a href="#local-6989586621679144266"><span class="hs-identifier hs-var">step'</span></a></span></span><span> </span><span id="local-6989586621679144265"><span class="annot"><span class="annottext">summaryProto :: Summary
|
||
|
</span><a href="#local-6989586621679144265"><span class="hs-identifier hs-var">summaryProto</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
|
||
|
</span><span id="line-144"></span><span> </span><span id="local-6989586621679144264"><span class="annot"><span class="annottext">Double
|
||
|
</span><a href="#local-6989586621679144264"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph"><-</span><span> </span><span class="annot"><span class="annottext">IO Double -> m Double
|
||
|
forall (m :: * -> *) a. MonadIO m => IO a -> m a
|
||
|
</span><span class="hs-identifier hs-var">liftIO</span></span><span> </span><span class="annot"><span class="annottext">IO Double
|
||
|
</span><a href="TensorFlow.Logging.html#doubleWallTime"><span class="hs-identifier hs-var">doubleWallTime</span></a></span><span>
|
||
|
</span><span id="line-145"></span><span> </span><span class="annot"><span class="annottext">EventWriter -> Event -> m ()
|
||
|
forall (m :: * -> *). MonadIO m => EventWriter -> Event -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#logEvent"><span class="hs-identifier hs-var">logEvent</span></a></span><span> </span><span class="annot"><span class="annottext">EventWriter
|
||
|
</span><a href="#local-6989586621679144267"><span class="hs-identifier hs-var">writer</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Event
|
||
|
forall a. Message a => a
|
||
|
</span><span class="hs-identifier hs-var">def</span></span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event Double
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "wallTime" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">wallTime</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event Double)
|
||
|
-> Double -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">Double
|
||
|
</span><a href="#local-6989586621679144264"><span class="hs-identifier hs-var">t</span></a></span><span>
|
||
|
</span><span id="line-146"></span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event Int64
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "step" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">step</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event Int64)
|
||
|
-> Int64 -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">Int64
|
||
|
</span><a href="#local-6989586621679144266"><span class="hs-identifier hs-var">step'</span></a></span><span>
|
||
|
</span><span id="line-147"></span><span> </span><span class="annot"><span class="annottext">Event -> (Event -> Event) -> Event
|
||
|
forall s t. s -> (s -> t) -> t
|
||
|
</span><span class="hs-operator hs-var">&</span></span><span> </span><span class="annot"><span class="annottext">forall (f :: * -> *). Identical f => LensLike' f Event Summary
|
||
|
forall (f :: * -> *) s a.
|
||
|
(Functor f, HasField s "summary" a) =>
|
||
|
LensLike' f s a
|
||
|
</span><span class="hs-identifier hs-var">summary</span></span><span> </span><span class="annot"><span class="annottext">(forall (f :: * -> *). Identical f => LensLike' f Event Summary)
|
||
|
-> Summary -> Event -> Event
|
||
|
forall s t a b. Setter s t a b -> b -> s -> t
|
||
|
</span><span class="hs-operator hs-var">.~</span></span><span> </span><span class="annot"><span class="annottext">Summary
|
||
|
</span><a href="#local-6989586621679144265"><span class="hs-identifier hs-var">summaryProto</span></a></span><span>
|
||
|
</span><span id="line-148"></span><span> </span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-149"></span><span>
|
||
|
</span><span id="line-150"></span><span class="hs-comment">-- Number of seconds since epoch.</span><span>
|
||
|
</span><span id="line-151"></span><span class="annot"><a href="TensorFlow.Logging.html#doubleWallTime"><span class="hs-identifier hs-type">doubleWallTime</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Double</span></span><span>
|
||
|
</span><span id="line-152"></span><span id="doubleWallTime"><span class="annot"><span class="annottext">doubleWallTime :: IO Double
|
||
|
</span><a href="TensorFlow.Logging.html#doubleWallTime"><span class="hs-identifier hs-var hs-var">doubleWallTime</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UTCTime -> Double
|
||
|
forall a. Fractional a => UTCTime -> a
|
||
|
</span><a href="#local-6989586621679144263"><span class="hs-identifier hs-var">asDouble</span></a></span><span> </span><span class="annot"><span class="annottext">(UTCTime -> Double) -> IO UTCTime -> IO Double
|
||
|
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
|
||
|
</span><span class="hs-operator hs-var"><$></span></span><span> </span><span class="annot"><span class="annottext">IO UTCTime
|
||
|
</span><span class="hs-identifier hs-var">getCurrentTime</span></span><span>
|
||
|
</span><span id="line-153"></span><span> </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679144263"><span class="annot"><span class="annottext">asDouble :: UTCTime -> a
|
||
|
</span><a href="#local-6989586621679144263"><span class="hs-identifier hs-var hs-var">asDouble</span></a></span></span><span> </span><span id="local-6989586621679144261"><span class="annot"><span class="annottext">t :: UTCTime
|
||
|
</span><a href="#local-6989586621679144261"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Rational -> a
|
||
|
forall a. Fractional a => Rational -> a
|
||
|
</span><span class="hs-identifier hs-var">fromRational</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">POSIXTime -> Rational
|
||
|
forall a. Real a => a -> Rational
|
||
|
</span><span class="hs-identifier hs-var">toRational</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UTCTime -> POSIXTime
|
||
|
</span><span class="hs-identifier hs-var">utcTimeToPOSIXSeconds</span></span><span> </span><span class="annot"><span class="annottext">UTCTime
|
||
|
</span><a href="#local-6989586621679144261"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-154"></span><span>
|
||
|
</span><span id="line-155"></span><span class="hs-comment">-- | Adds a 'CoreOps.histogramSummary' node. The tag argument is intentionally</span><span>
|
||
|
</span><span id="line-156"></span><span class="hs-comment">-- limited to a single value for simplicity.</span><span>
|
||
|
</span><span id="line-157"></span><span id="local-6989586621679144258"><span id="local-6989586621679144259"><span id="local-6989586621679144260"><span class="annot"><a href="TensorFlow.Logging.html#histogramSummary"><span class="hs-identifier hs-type">histogramSummary</span></a></span><span> </span><span class="hs-glyph">::</span><span>
|
||
|
</span><span id="line-158"></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">MonadBuild</span></span><span> </span><span class="annot"><a href="#local-6989586621679144260"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">TensorType</span></span><span> </span><span class="annot"><a href="#local-6989586621679144259"><span class="hs-identifier hs-type">t</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679144259"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">/=</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">ByteString</span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679144259"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">/=</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-159"></span><span> </span><span class="hs-comment">-- OneOf '[Int16, Int32, Int64, Int8, Word16, Word8, Double, Float] t)</span><span>
|
||
|
</span><span id="line-160"></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">ByteString</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Tensor</span></span><span> </span><span class="annot"><a href="#local-6989586621679144258"><span class="hs-identifier hs-type">v</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679144259"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144260"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span></span><span>
|
||
|
</span><span id="line-161"></span><span id="histogramSummary"><span class="annot"><span class="annottext">histogramSummary :: ByteString -> Tensor v t -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#histogramSummary"><span class="hs-identifier hs-var hs-var">histogramSummary</span></a></span></span><span> </span><span id="local-6989586621679144257"><span class="annot"><span class="annottext">tag :: ByteString
|
||
|
</span><a href="#local-6989586621679144257"><span class="hs-identifier hs-var">tag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> m ()
|
||
|
forall (m :: * -> *) (v :: * -> *).
|
||
|
(MonadBuild m, TensorKind v) =>
|
||
|
Tensor v ByteString -> m ()
|
||
|
</span><span class="hs-identifier hs-var">addSummary</span></span><span> </span><span class="annot"><span class="annottext">(Tensor Build ByteString -> m ())
|
||
|
-> (Tensor v t -> Tensor Build ByteString) -> Tensor v t -> m ()
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> Tensor v t -> Tensor Build ByteString
|
||
|
forall (v'1 :: * -> *) (v'2 :: * -> *) t.
|
||
|
OneOf
|
||
|
'[Int16, Int32, Int64, Int8, Word16, Word32, Word64, Word8, Double,
|
||
|
Float]
|
||
|
t =>
|
||
|
Tensor v'1 ByteString -> Tensor v'2 t -> Tensor Build ByteString
|
||
|
</span><span class="hs-identifier hs-var">CoreOps.histogramSummary</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -> Tensor Build ByteString
|
||
|
forall a. TensorType a => a -> Tensor Build a
|
||
|
</span><span class="hs-identifier hs-var">scalar</span></span><span> </span><span class="annot"><span class="annottext">ByteString
|
||
|
</span><a href="#local-6989586621679144257"><span class="hs-identifier hs-var">tag</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-162"></span><span>
|
||
|
</span><span id="line-163"></span><span class="hs-comment">-- | Adds a 'CoreOps.imageSummary' node. The tag argument is intentionally</span><span>
|
||
|
</span><span id="line-164"></span><span class="hs-comment">-- limited to a single value for simplicity.</span><span>
|
||
|
</span><span id="line-165"></span><span id="local-6989586621679144253"><span id="local-6989586621679144254"><span id="local-6989586621679144255"><span class="annot"><a href="TensorFlow.Logging.html#imageSummary"><span class="hs-identifier hs-type">imageSummary</span></a></span><span> </span><span class="hs-glyph">::</span><span>
|
||
|
</span><span id="line-166"></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">OneOf</span></span><span> </span><span class="hs-special">'</span><span class="hs-special">[</span><span class="annot"><span class="hs-identifier hs-type">Word8</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Word16</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Float</span></span><span class="hs-special">]</span><span> </span><span class="annot"><a href="#local-6989586621679144255"><span class="hs-identifier hs-type">t</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadBuild</span></span><span> </span><span class="annot"><a href="#local-6989586621679144254"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-167"></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">ByteString</span></span><span>
|
||
|
</span><span id="line-168"></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Tensor</span></span><span> </span><span class="annot"><a href="#local-6989586621679144253"><span class="hs-identifier hs-type">v</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679144255"><span class="hs-identifier hs-type">t</span></a></span><span>
|
||
|
</span><span id="line-169"></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144254"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span></span><span>
|
||
|
</span><span id="line-170"></span><span>
|
||
|
</span><span id="line-171"></span><span id="imageSummary"><span class="annot"><span class="annottext">imageSummary :: ByteString -> Tensor v t -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#imageSummary"><span class="hs-identifier hs-var hs-var">imageSummary</span></a></span></span><span> </span><span id="local-6989586621679144252"><span class="annot"><span class="annottext">tag :: ByteString
|
||
|
</span><a href="#local-6989586621679144252"><span class="hs-identifier hs-var">tag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> m ()
|
||
|
forall (m :: * -> *) (v :: * -> *).
|
||
|
(MonadBuild m, TensorKind v) =>
|
||
|
Tensor v ByteString -> m ()
|
||
|
</span><span class="hs-identifier hs-var">addSummary</span></span><span> </span><span class="annot"><span class="annottext">(Tensor Build ByteString -> m ())
|
||
|
-> (Tensor v t -> Tensor Build ByteString) -> Tensor v t -> m ()
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> Tensor v t -> Tensor Build ByteString
|
||
|
forall (v'1 :: * -> *) (v'2 :: * -> *) t.
|
||
|
OneOf '[Word16, Word8, Double, Float] t =>
|
||
|
Tensor v'1 ByteString -> Tensor v'2 t -> Tensor Build ByteString
|
||
|
</span><span class="hs-identifier hs-var">CoreOps.imageSummary</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -> Tensor Build ByteString
|
||
|
forall a. TensorType a => a -> Tensor Build a
|
||
|
</span><span class="hs-identifier hs-var">scalar</span></span><span> </span><span class="annot"><span class="annottext">ByteString
|
||
|
</span><a href="#local-6989586621679144252"><span class="hs-identifier hs-var">tag</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-172"></span><span>
|
||
|
</span><span id="line-173"></span><span class="hs-comment">-- | Adds a 'CoreOps.scalarSummary' node.</span><span>
|
||
|
</span><span id="line-174"></span><span id="local-6989586621679144248"><span id="local-6989586621679144249"><span id="local-6989586621679144250"><span class="annot"><a href="TensorFlow.Logging.html#scalarSummary"><span class="hs-identifier hs-type">scalarSummary</span></a></span><span> </span><span class="hs-glyph">::</span><span>
|
||
|
</span><span id="line-175"></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">TensorType</span></span><span> </span><span class="annot"><a href="#local-6989586621679144250"><span class="hs-identifier hs-type">t</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679144250"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">/=</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">ByteString</span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679144250"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="annot"><span class="hs-operator hs-type">/=</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadBuild</span></span><span> </span><span class="annot"><a href="#local-6989586621679144249"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-176"></span><span> </span><span class="hs-comment">-- (TensorType t,</span><span>
|
||
|
</span><span id="line-177"></span><span> </span><span class="hs-comment">-- OneOf '[Int16, Int32, Int64, Int8, Word16, Word8, Double, Float] t)</span><span>
|
||
|
</span><span id="line-178"></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><span class="hs-identifier hs-type">ByteString</span></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Tensor</span></span><span> </span><span class="annot"><a href="#local-6989586621679144248"><span class="hs-identifier hs-type">v</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679144250"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="hs-glyph">-></span><span> </span><span class="annot"><a href="#local-6989586621679144249"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span></span></span><span>
|
||
|
</span><span id="line-179"></span><span id="scalarSummary"><span class="annot"><span class="annottext">scalarSummary :: ByteString -> Tensor v t -> m ()
|
||
|
</span><a href="TensorFlow.Logging.html#scalarSummary"><span class="hs-identifier hs-var hs-var">scalarSummary</span></a></span></span><span> </span><span id="local-6989586621679144247"><span class="annot"><span class="annottext">tag :: ByteString
|
||
|
</span><a href="#local-6989586621679144247"><span class="hs-identifier hs-var">tag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> m ()
|
||
|
forall (m :: * -> *) (v :: * -> *).
|
||
|
(MonadBuild m, TensorKind v) =>
|
||
|
Tensor v ByteString -> m ()
|
||
|
</span><span class="hs-identifier hs-var">addSummary</span></span><span> </span><span class="annot"><span class="annottext">(Tensor Build ByteString -> m ())
|
||
|
-> (Tensor v t -> Tensor Build ByteString) -> Tensor v t -> m ()
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> Tensor v t -> Tensor Build ByteString
|
||
|
forall (v'1 :: * -> *) (v'2 :: * -> *) t.
|
||
|
OneOf
|
||
|
'[Int16, Int32, Int64, Int8, Word16, Word32, Word64, Word8, Double,
|
||
|
Float]
|
||
|
t =>
|
||
|
Tensor v'1 ByteString -> Tensor v'2 t -> Tensor Build ByteString
|
||
|
</span><span class="hs-identifier hs-var">CoreOps.scalarSummary</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ByteString -> Tensor Build ByteString
|
||
|
forall a. TensorType a => a -> Tensor Build a
|
||
|
</span><span class="hs-identifier hs-var">scalar</span></span><span> </span><span class="annot"><span class="annottext">ByteString
|
||
|
</span><a href="#local-6989586621679144247"><span class="hs-identifier hs-var">tag</span></a></span><span class="hs-special">)</span><span>
|
||
|
</span><span id="line-180"></span><span>
|
||
|
</span><span id="line-181"></span><span class="hs-comment">-- | Merge all summaries accumulated in the 'Build' into one summary.</span><span>
|
||
|
</span><span id="line-182"></span><span id="local-6989586621679144245"><span class="annot"><a href="TensorFlow.Logging.html#mergeAllSummaries"><span class="hs-identifier hs-type">mergeAllSummaries</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">MonadBuild</span></span><span> </span><span class="annot"><a href="#local-6989586621679144245"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">=></span><span> </span><span class="annot"><a href="#local-6989586621679144245"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">SummaryTensor</span></span></span><span>
|
||
|
</span><span id="line-183"></span><span id="mergeAllSummaries"><span class="annot"><span class="annottext">mergeAllSummaries :: m SummaryTensor
|
||
|
</span><a href="TensorFlow.Logging.html#mergeAllSummaries"><span class="hs-identifier hs-var hs-var">mergeAllSummaries</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">m [SummaryTensor]
|
||
|
forall (m :: * -> *). MonadBuild m => m [SummaryTensor]
|
||
|
</span><span class="hs-identifier hs-var">collectAllSummaries</span></span><span> </span><span class="annot"><span class="annottext">m [SummaryTensor]
|
||
|
-> ([SummaryTensor] -> m SummaryTensor) -> m SummaryTensor
|
||
|
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
|
||
|
</span><span class="hs-operator hs-var">>>=</span></span><span> </span><span class="annot"><span class="annottext">Tensor Build ByteString -> m SummaryTensor
|
||
|
forall (m :: * -> *) a.
|
||
|
MonadBuild m =>
|
||
|
Tensor Build a -> m (Tensor Value a)
|
||
|
</span><span class="hs-identifier hs-var">render</span></span><span> </span><span class="annot"><span class="annottext">(Tensor Build ByteString -> m SummaryTensor)
|
||
|
-> ([SummaryTensor] -> Tensor Build ByteString)
|
||
|
-> [SummaryTensor]
|
||
|
-> m SummaryTensor
|
||
|
forall b c a. (b -> c) -> (a -> b) -> a -> c
|
||
|
</span><span class="hs-operator hs-var">.</span></span><span> </span><span class="annot"><span class="annottext">[SummaryTensor] -> Tensor Build ByteString
|
||
|
forall (v'1 :: * -> *).
|
||
|
[Tensor v'1 ByteString] -> Tensor Build ByteString
|
||
|
</span><span class="hs-identifier hs-var">CoreOps.mergeSummary</span></span><span>
|
||
|
</span><span id="line-184"></span></pre></body></html>
|