2016-03-22 7 views
2

Ich habe mit Torch gearbeitet. Und mein aktuelles Programm erfordert, einen Tensor zu exportieren, der reduzierte Funktionsmatrix enthält. Ich habe versucht, Sie folgendermaßen vorgehen:Taschenlampe: Speichern Tensor zu CSV-Datei

torch.save('t.csv',torch.Tensor({{1,2},{3,4}}),'ascii') 

und der Ausgang war:

4 
1 
3 
V 1 
18 
torch.DoubleTensor 
2 
2 3 
3 1 
1 
4 
2 
3 
V 1 
19 
torch.DoubleStorage 
6 
1 2 3 4 5 6 

Erwartete Ausgabe:

1, 2, 3 
4, 5, 6 

Ich hoffe jemand hat eine Idee, wie ich tun kann, Dies?

Antwort

5

Beim Speichern von Tensor speichert Fackel nicht nur Daten, sondern auch - wie Sie sehen können - einige andere nützliche Informationen für die spätere Deserialisierung.

Wenn Sie CSV-Serialisierung benötigen, sind Sie gut, es selbst zu implementieren.

Zum Glück ist dies sehr einfach.

Hier ist ein kurzes Beispiel:

require 'torch' 

matrix = torch.Tensor(5,3) -- a 5x3 matrix 

matrix:random(1,10) -- matrix initialized with random numbers in [1,10] 

print(matrix) -- let's see the matrix content 

subtensor = matrix[{{1,3}, {2,3}}] -- let's create a view on the row 1 to 3, for which we take columns 2 to 3 (the view is a 3x2 matrix, note that values are bound to the original tensor) 

local out = assert(io.open("./dump.csv", "w")) -- open a file for serialization 

splitter = "," 
for i=1,subtensor:size(1) do 
    for j=1,subtensor:size(2) do 
     out:write(subtensor[i][j]) 
     if j == subtensor:size(2) then 
      out:write("\n") 
     else 
      out:write(splitter) 
     end 
    end 
end 

out:close() 

Die Ausgabe auf meinem Computer für die Matrix ist:

10 10 6 
    4 8 3 
    3 8 5 
    5 5 5 
    1 6 8 
[torch.DoubleTensor of size 5x3] 

und die Datei ausgegeben Inhalt:

10,6 
8,3 
8,5 

HTH

0

Sie können Tannen t wandle den Tensor unter Verwendung von torch.totable in eine Lua-Tabelle um. Verwenden Sie dann die csvigo-Bibliothek, um die Tabelle als eine CSV-Datei zu speichern. Dies könnte ein Workaround sein, aber ich hatte kein Problem damit.