local dt = require "decisiontree._env"
-local ipc = require 'libipc'
local DataSet = torch.class("dt.DataSet", dt)
assert(torch.isTensor(inputs))
featureIds:range(1,inputs:size(2))
- local wq = ipc.workqueue()
for i=1,inputs:size(2) do
- wq:write({i, inputs:select(2, i)})
- end
- for i=1,self.nThreads do
- wq:write(nil)
- end
-
- ipc.map(self.nThreads, function(wq)
- while true do
- local data = wq:read()
- if data == nil then break end
- local featureId = data[1]
- local values = data[2]
- local sortFeatureValues, sortExampleIds = values:sort(1, false)
- sortFeatureValues = nil
- wq:write({featureId, sortExampleIds})
- collectgarbage()
- end
- end, wq)
-
- for _=1,inputs:size(2) do
- local data = wq:read()
- local featureId = data[1]
- local sortedFeatureExampleIds = data[2]
+ local featureId = i
+ local values = inputs:select(2, i)
+ local _, sortedFeatureExampleIds = values:sort(1, false)
dataset[featureId] = sortedFeatureExampleIds
end
end
timer:reset()
local stop, validLoss, bestDecisionForest = self:validate(trainSet, validSet, decisionForest, bestDecisionForest)
if dt.PROFILE then print("validate tree time: "..timer:time().real) end
- if verbose then print(string.format("Loss: train=%7.4f, valid=%7.4f", trainLoss, validLoss)) end
+ if verbose then print(string.format("Loss: train=%7.4f, valid=%7.4f", 0, validLoss)) end
if stop then
if verbose then print(string.format("GBDT early stopped on tree %d", treeId)) end
break
require 'paths'
-require 'xlua'
+--require 'xlua'
require 'string'
require 'os'
-require 'sys'
-require 'image'
-require 'lfs'
+--require 'sys'
require 'nn'
-- these actually return local variables but we will re-require them
require 'decisiontree.utils'
-- for multi-threading
-require 'decisiontree.WorkPool'
+--require 'decisiontree.WorkPool'
-- abstract classes
require 'decisiontree.DecisionTree'
require 'decisiontree.GradientBoostState' -- TreeState subclass
-- unit tests and benchmarks
-require 'decisiontree.test'
-require 'decisiontree.benchmark'
+--require 'decisiontree.test'
+--require 'decisiontree.benchmark'
-- nn.Module
require 'decisiontree.DFD'