Added comments, a slightly more complicated model, and the header.
authorFrancois Fleuret <francois@fleuret.org>
Sun, 4 Dec 2016 16:03:29 +0000 (17:03 +0100)
committerFrancois Fleuret <francois@fleuret.org>
Sun, 4 Dec 2016 16:03:29 +0000 (17:03 +0100)
test-profiler.lua

index 44bbee1..2f1f0ec 100755 (executable)
@@ -1,17 +1,57 @@
 #!/usr/bin/env luajit
 
+--[[
+
+   Written by Francois Fleuret (francois@fleuret.org)
+
+   This is free and unencumbered software released into the public
+   domain.
+
+   Anyone is free to copy, modify, publish, use, compile, sell, or
+   distribute this software, either in source code form or as a
+   compiled binary, for any purpose, commercial or non-commercial, and
+   by any means.
+
+   In jurisdictions that recognize copyright laws, the author or
+   authors of this software dedicate any and all copyright interest in
+   the software to the public domain. We make this dedication for the
+   benefit of the public at large and to the detriment of our heirs
+   and successors. We intend this dedication to be an overt act of
+   relinquishment in perpetuity of all present and future rights to
+   this software under copyright law.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+   CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+   For more information, please refer to <http://unlicense.org/>
+
+]]--
+
 require 'torch'
 require 'nn'
 
 require 'profiler'
 
+-- Create a model
+
 local model = nn.Sequential()
-model:add(nn.Linear(1000, 1000))
-model:add(nn.ReLU())
-model:add(nn.Linear(1000, 100))
+   :add(nn.Sequential()
+           :add(nn.Linear(1000, 1000))
+           :add(nn.ReLU())
+       )
+   :add(nn.Linear(1000, 100))
+
+-- Decor it for profiling
 
 profiler.decor(model)
 
+-- Create the data and criterion
+
 local input = torch.Tensor(1000, 1000)
 local target = torch.Tensor(input:size(1), 100)
 local criterion = nn.MSECriterion()
@@ -20,8 +60,11 @@ local nbSamples = 0
 local modelTime = 0
 local dataTime = 0
 
+-- Loop five times through the data forward and backward
+
 for k = 1, 5 do
    local t1 = sys.clock()
+
    input:uniform(-1, 1)
    target:uniform()
 
@@ -40,6 +83,8 @@ for k = 1, 5 do
    nbSamples = nbSamples + input:size(1)
 end
 
+-- Print the accumulated timings
+
 profiler.print(model, nbSamples)
 
 print('----------------------------------------------------------------------')