使用 Transpose 有什么不同?
What is the difference made by using Transpose?
我正在学习卷积的工作原理然后我遇到了这个..当我尝试这个时
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, :, :])
当我不转置输入图像时,即...
img_ = img.reshape(1, 3, l, w)
谁能解释一下有什么区别?
原始图像是一个 3d 数组,具有维度(像素行、像素列、通道)。通道是颜色通道(例如 RGB)。 img.transpose(2, 0, 1)
将数组的维度重新排序为(通道、像素行、像素列)。您的其余代码需要此初始排序。它确保卷积发生在每个通道的 space 像素上。如果省略转置,像素坐标和通道将相互混淆。
我正在学习卷积的工作原理然后我遇到了这个..当我尝试这个时
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, :, :])
当我不转置输入图像时,即...
img_ = img.reshape(1, 3, l, w)
谁能解释一下有什么区别?
原始图像是一个 3d 数组,具有维度(像素行、像素列、通道)。通道是颜色通道(例如 RGB)。 img.transpose(2, 0, 1)
将数组的维度重新排序为(通道、像素行、像素列)。您的其余代码需要此初始排序。它确保卷积发生在每个通道的 space 像素上。如果省略转置,像素坐标和通道将相互混淆。