2016-03-22 71 views
2

私はトーチと一緒に作業しています。私の現在のプログラムでは、縮小された特徴行列を含むTensorをエクスポートする必要があります。 私は次のことをやってみました:トーチ:テンソルをCSVファイルに保存

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

と出力された:

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 

予想される出力:

1, 2, 3 
4, 5, 6 

私は誰かが私にできる方法として、アイデアを持って望んでいますこの?

答えて

5

テンソルを保存すると、トーチはデータだけでなく、表示されているように、後でデシリアライズするためのその他の有用な情報を保存します。

csvシリアライゼーションが必要な場合は、自分で実装するのがよいでしょう。

幸いにも、これは非常に簡単です。ここで

は簡単な例です:

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() 

行列のための私のコンピュータ上の出力は次のとおりです。

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

とファイルがコンテンツをダンプ:

10,6 
8,3 
8,5 

HTH

0

あなたもできますtorch.totableを使用してテンソルをLuaテーブルに変換します。その後、csvigoライブラリを使用して、テーブルをcsvファイルとして保存します。これは回避策かもしれませんが、私はそれに何の問題もありませんでした。

関連する問題