FloorPlanTransformation / util /lua /convert_to_json.lua
rawanessam's picture
Upload 79 files
e9fe176 verified
require 'nn'
require 'cunn'
require 'cudnn'
require 'fbnn'
require 'fbcunn'
local cjson = require 'cjson'
-- Convert a file to json.
local pl = require'pl.import_into'()
local function merge(t_dst, t_src)
for i, v in ipairs(t_src) do
table.insert(t_dst, v)
end
return t_dst
end
local function extract_array(t)
local all_array = {}
if type(t) == 'table' then
for i, v in ipairs(t) do
merge(all_array, extract_array(v))
end
elseif torch.typename(t) and torch.typename(t):match('Tensor') then
t:apply(function (x) table.insert(all_array, x) end)
else
error("Input is not a table or a tensor!")
end
return all_array
end
local function recursive_save(t, name_prefix)
local all_array = {}
local all_save = {}
print(name_prefix)
if type(t) == 'table' then
for k, v in pairs(t) do
if type(k) == 'string' then
save_content = recursive_save(v, name_prefix .. "_" .. k)
for kk, vv in pairs(save_content) do
all_save[kk] = vv
end
elseif type(k) == 'number' then
-- Save v with the existing prefix.
-- For tensor, save every element.
merge(all_array, extract_array(v))
end
end
else
all_array = extract_array(t)
end
if #all_array > 0 then all_save[name_prefix] = all_array end
return all_save
end
local opt = pl.lapp[[
-i,--input (default "") Input model
-o,--outputprefix (default "") Output model
]]
local save_content = recursive_save(torch.load(opt.input), opt.outputprefix)
for name, content in pairs(save_content) do
local f = assert(io.open(name, "w"))
f:write(cjson.encode(content))
f:close()
end