2016-12-30 10 views
0

現在、私はこのコードを使用していますが、それは本当に遅いです:Theanoで最も近い最近隣のアップサンプリングを行うには?

def resizeNN(inp, scale): 
    b, ch, row, col = inp.shape 
    out = T.zeros((b, ch, row * scale, col * scale)) 
    for y range(scale): 
     for x range(scale): 
     out = T.inc_subtensor(out[:, :, y::scale, x::scale], inp) 

    return out 

はそれをスピードアップする方法はありますか?

答えて

1

このコードはよりベクトル化されています。これがどのくらい速く再形成されるかわからない。

def resizeNN(inp, scale): 
    inp_shp = T.shape(inp) 
    return T.tile(inp.dimshuffle(0,1,2,3,'x','x'), 
     (scale,scale)).transpose(
      0,1,2,4,3,5).reshape(
       inp_shp[0], inp_shp[1], 
       inp_shp[2]*scale, inp_shp[3]*scale)