私はこの出力をどのように取得するのか分かりません。このコードを実行すると、nn.ClassNLLCriterion
となります。たぶん異なるルア/トーチバージョン?
とにかく、この情報を文字列に入れたい場合は、自分で抽出する必要があります。これは簡単なループをやって行うことができます。
for k,v in pairs(criterion) do
print(k,v)
end
あなたは空想の印刷出力をしたいなら、私はあなたが(コメントで示唆@nobodyなど)TREPLのコードを見てお勧めします。それはすべてLuaにあるので、複製がとても簡単です。より正確には、彼らのsizestr()、print_new()、およびprintvar()の機能を推奨します。それらを単に印刷する代わりに変更するだけで、文字列を構成します。
そのsizestr機能を使用して簡単な例:
-- Copy/Paste from trepl/init.lua
local function sizestr(x)
local strt = {}
if _G.torch.typename(x):find('torch.*Storage') then
return _G.torch.typename(x):match('torch%.(.+)') .. ' - size: ' .. x:size()
end
if x:nDimension() == 0 then
table.insert(strt, _G.torch.typename(x):match('torch%.(.+)') .. ' - empty')
else
table.insert(strt, _G.torch.typename(x):match('torch%.(.+)') .. ' - size: ')
for i=1,x:nDimension() do
table.insert(strt, x:size(i))
if i ~= x:nDimension() then
table.insert(strt, 'x')
end
end
end
return table.concat(strt)
end
local function sutoringu(elem)
local str = ''
if torch.isTensor(elem) then
str = sizestr(elem)
else
str = tostring(elem)
end
return str
end
local str = '{\n'
local tab = ' '
for k,v in pairs(criterion) do
str = str .. tab .. k .. ' : ' .. sutoringu(v) .. '\n'
end
str = str .. '}'
print(str)
これは、プロセス内の文字列を構築し、望んだものと同じものを出力します。それは最適ではありませんが、それはスタートです。
私はトーチを知らないが、 'tostring(criterion)'を試してみる。 – lhf
'tostring(criterion)'は 'nn.ClassNLLCriterion'だけを返します。残念なことに追加の情報はありません – han4wluc
他に誰もアイデアがない場合は、' print'をどのように再定義したか、あるいは基準の '__tostring'物事はまだそのように働く)は、長いバージョンを吐くことに寛容にすることができます。それはソースにいくらかの掘り起こしを必要とするかもしれないが、実行可能でなければならない。 'debug.getinfo(getmetatable(criterion).__tostring、" S ")'が動作し、役に立つ情報が得られるかどうかを調べてください(情報が入ったテーブルがあり、 '__tostring'がLuaで書かれていると、ファイルと行の範囲を指定します; Cの場合は "[C]"と表示されます)。 (そして、 'print'で同じgetinfoを試してみてください)。 – nobody