2016-06-28 22 views
0

私はコンボリューションが、その後私は、入力画像すなわち...トランスポーズを使用した場合の違いは何ですか?

img_ = img.reshape(1, 3, l, w) 

Without Tansposeトランスポーズしない場合、私はこの

rng = numpy.random.RandomState(23455) 
input = T.tensor4(name='input') 
w_shp = (2, 3, 9, 9) 
w_bound = numpy.sqrt(3 * 9 * 9) 
print w_bound 
W = theano.shared(numpy.asarray(
      rng.uniform(
       low=-1.0/w_bound, 
       high=1.0/w_bound, 
       size=w_shp), 
      dtype=input.dtype), name ='W') 
b_shp = (2,) 
b = theano.shared(numpy.asarray(
      rng.uniform(low=-.5, high=.5, size=b_shp), 
      dtype=input.dtype), name ='b') 

conv_out = conv2d(input, W,subsample=(2,2)) 
pooled=downsample.max_pool_2d(conv_out,(2,2),ignore_border=True) 
output = T.nnet.sigmoid(pooled + b.dimshuffle('x', 0, 'x', 'x')) 
f = theano.function([input], output) 
img = Image.open('2.jpg') 
img = numpy.asarray(img, dtype='float64')/256. 
l,w,r=img.shape 
img_ = img.transpose(2, 0, 1).reshape(1, 3, l, w) 
print img_.shape 
filtered_img = f(img_) 
pylab.subplot(1, 3, 1); pylab.axis('off'); pylab.imshow(img) 
pylab.gray(); 
pylab.subplot(1, 3, 2); pylab.axis('off'); pylab.imshow(filtered_img[0, 1, :, :]) 
pylab.subplot(1, 3, 3); pylab.axis('off'); pylab.imshow(filtered_img[0, 0, :, :]) 

After convolution

を試してみてくださいthis..whenに遭遇したどのように機能するかを学んでいました

誰かが違いを説明できますか?

答えて

0

元の画像は、寸法(ピクセル行、ピクセル列、チャンネル)を持つ3D配列です。チャンネルはカラーチャンネル(RGBなど)です。 img.transpose(2, 0, 1)は、配列の次元を(チャネル、ピクセル行、ピクセル列)に並べ替えます。残りのコードではこの最初の注文が必要です。これは、畳み込みがピクセルの空間上で、各チャネルについて起こることを保証する。転置を省略すると、ピクセル座標とチャネルが混在します。

+0

ええ、それを得ました!ありがとうございました – Sush

関連する問題