2016-12-30 66 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)