2017-06-07 12 views
0

私は3次元のテンソルを持ち、すべての値が所定の範囲(この場合は0-1)に収まるようにしたいと考えています。これを行うためには、私はすでに次のコードを書かれている:テンソルフィットの値を与えられた範囲にする

function capTo1or0 (Tensor3d) 

     tensor_width=Tensor3d:size()[2] 
     tensor_height=Tensor3d:size()[3] 
     tensor_depth=Tensor3d:size()[1] 
     for i=1,tensor_width,1 do 
      for j=1,tensor_height,1 do 
       for k=1,tensor_depth,1 do 
        if(Tensor3d[k][i][j])>1 then 

         Tensor3d[k][i][j]=1 

        end 
        if(Tensor3d[k][i][j]<0.0) then 
         Tensor3d[k][i][j]=0.0   
        end 
       end 
      end 
     end 
     return Tensor3d 
    end 

をし、それは、ただ一つ問題がある作品:パフォーマンスがひどいです、私は、これを行う以上のループのいくつかのより良い方法が存在しなければならないことを知っていますアレイ全体を手動でループすることを伴わないテンソル操作のほうがはるかに高速であることを考えると、誰もがこれをより速くする方法を知っていますか?速いこれを行う方法を誰もが知っている1.

と下0と0の上限と1の上限を超えるすべての値の下ですべての値を置き換える

An example in this is say that I have a `2-3-3` array with the values 

    [1, 2, 0.5][0.5,0.2,-0.2] 
    [0.1,0.2,0.3][1, 1, 1 ] 
    [-2, -1, 2 ][0.2,-5,-1 ] 

then I expect an outcome of 
    [1, 1, 0.5][0.5,0.2,0] 
    [0.1,0.2,0.3][1, 1, 1 ] 
    [0, 0, 1 ] [0.2,0,-1 ] 

言う私はトーチを使用したことがないが、それはドキュメントだ
+0

アレイ/テンソルの周りにあまり理想的ではないフォーマットで申し訳ありませんが、フォーマットされていないコードについては不平を言っていましたが、キーワードが混乱していると思います。これ以上質問がある場合は、コメントを残してください。 – Thijser

答えて

1

:[RES] torch.clamp([RES、] tensor1、MIN_VALUE、MAX_VALUE)

クランプが http://torch7.readthedocs.io/en/rtd/maths/#torch.clamp

テンソル内のすべての要素を[min_value、 max_value]の範囲に設定します。すなわち:

y_i = x_i, if x_i >= min_value or x_i <= max_value 
    = min_value, if x_i < min_value 
    = max_value, if x_i > max_value 

z=torch.clamp(x,0,1)は、zに結果を配置します0と1の間

torch.clamp(z,x,0,1)有界X の結果と新しいテンソルを返します。

x:clamp(0,1)は、クランプ動作をその場で実行します( 結果をxに入れます)。

z:clamp(x,0,1)結果をzに入れます。

私はそれがあなたが探しているものだと思いますか?

+0

ああ、ありがとう、クランプ私が探していた単語です! – Thijser

関連する問題