提交 86d21acd authored 作者: kvmanohar22's avatar kvmanohar22

modified numpy imports to one common form

上级 f06f537a
......@@ -8,7 +8,7 @@ U{http://www-users.cs.umn.edu/~saad/software/SPARSKIT/paper.ps}.
"""
# COPIED FROM hpu/icml09/sp.py
from __future__ import absolute_import, print_function, division
import numpy
import numpy as np
import scipy
from scipy import sparse as scipy_sparse
from six.moves import xrange
......@@ -81,18 +81,17 @@ class ConvolutionIndices(Op):
raise Exception("ws is obsolete and it must be always True")
(dx, dy) = strides
N = numpy
# inshp contains either 2 entries (height,width) or 3 (nfeatures,h,w)
# in the first case, default nfeatures to 1
if N.size(inshp) == 2:
if np.size(inshp) == 2:
inshp = (1,) + inshp
inshp = N.array(inshp)
kshp = N.array(kshp)
ksize = N.prod(kshp)
inshp = np.array(inshp)
kshp = np.array(kshp)
ksize = np.prod(kshp)
kern = ksize - 1 - N.arange(ksize)
kern = ksize - 1 - np.arange(ksize)
# size of output image if doing proper convolution
# (mode='full',dx=dy=0) outshp is the actual output shape
......@@ -102,32 +101,32 @@ class ConvolutionIndices(Op):
s = -1
else:
s = 1
outshp = N.int64(N.ceil((inshp[1:] + s * kshp - s * 1) \
/ N.array([dy, dx], dtype='float')))
outshp = np.int64(np.ceil((inshp[1:] + s * kshp - s * 1) \
/ np.array([dy, dx], dtype='float')))
if any(outshp <= 0):
err = 'Invalid kernel', kshp, 'and/or step size', (dx, dy),\
'for given input shape', inshp
raise ValueError(err)
outsize = N.prod(outshp)
insize = N.prod(inshp)
outsize = np.prod(outshp)
insize = np.prod(inshp)
# range of output units over which to iterate
if mode == 'valid':
lbound = N.array([kshp[0] - 1, kshp[1] - 1])
lbound = np.array([kshp[0] - 1, kshp[1] - 1])
ubound = lbound + (inshp[1:] - kshp + 1)
else:
lbound = N.zeros(2)
lbound = np.zeros(2)
ubound = fulloutshp
# coordinates of image in "fulloutshp" coordinates
topleft = N.array([kshp[0] - 1, kshp[1] - 1])
topleft = np.array([kshp[0] - 1, kshp[1] - 1])
# bound when counting the receptive field
botright = topleft + inshp[1:]
# sparse matrix specifics...
if ws:
spmatshp = (outsize * N.prod(kshp) * inshp[0], insize)
spmatshp = (outsize * np.prod(kshp) * inshp[0], insize)
else:
spmatshp = (nkern * outsize, insize)
spmat = scipy_sparse.lil_matrix(spmatshp)
......@@ -152,17 +151,17 @@ class ConvolutionIndices(Op):
# FOR EACH OUTPUT PIXEL...
# loop over output image height
for oy in N.arange(lbound[0], ubound[0], dy):
for oy in np.arange(lbound[0], ubound[0], dy):
# loop over output image width
for ox in N.arange(lbound[1], ubound[1], dx):
for ox in np.arange(lbound[1], ubound[1], dx):
# kern[l] is filter value to apply at (oj,oi)
# for (iy,ix)
l = 0
# ... ITERATE OVER INPUT UNITS IN RECEPTIVE FIELD
for ky in oy + N.arange(kshp[0]):
for kx in ox + N.arange(kshp[1]):
for ky in oy + np.arange(kshp[0]):
for kx in ox + np.arange(kshp[1]):
# verify if we are still within image
# boundaries. Equivalent to
......@@ -173,13 +172,13 @@ class ConvolutionIndices(Op):
# convert to "valid" input space
# coords used to determine column
# index to write to in sparse mat
iy, ix = N.array((ky, kx)) - topleft
iy, ix = np.array((ky, kx)) - topleft
# determine raster-index of input pixel...
# taking into account multiple
# input features
col = iy * inshp[2] + ix + \
fmapi * N.prod(inshp[1:])
fmapi * np.prod(inshp[1:])
# convert oy,ox values to output
# space coordinates
......@@ -188,7 +187,7 @@ class ConvolutionIndices(Op):
else:
(y, x) = (oy, ox) - topleft
# taking into account step size
(y, x) = N.array([y, x]) / (dy, dx)
(y, x) = np.array([y, x]) / (dy, dx)
# convert to row index of sparse matrix
if ws:
......@@ -228,7 +227,7 @@ class ConvolutionIndices(Op):
if ws:
kmap = None
else:
kmap = N.zeros(ntaps, dtype='int')
kmap = np.zeros(ntaps, dtype='int')
k = 0
# print 'TEMPORARY BUGFIX: REMOVE !!!'
for j in xrange(spmat.shape[1]):
......@@ -259,7 +258,7 @@ class ConvolutionIndices(Op):
indices, indptr, spmatshp, outshp = self.evaluate(inshp, kshp)
out_indices[0] = indices
out_indptr[0] = indptr
spmat_shape[0] = numpy.asarray(spmatshp)
spmat_shape[0] = np.asarray(spmatshp)
convolution_indices = ConvolutionIndices()
......@@ -318,13 +317,12 @@ def convolve(kerns, kshp, nkern, images, imgshp, step=(1, 1), bias=None,
:TODO: test for 1D and think of how to do n-d convolutions
"""
N = numpy
# start by computing output dimensions, size, etc
kern_size = N.int64(N.prod(kshp))
kern_size = np.int64(np.prod(kshp))
# inshp contains either 2 entries (height,width) or 3 (nfeatures,h,w)
# in the first case, default nfeatures to 1
if N.size(imgshp) == 2:
if np.size(imgshp) == 2:
imgshp = (1,) + imgshp
# construct indices and index pointers for sparse matrix, which,
......@@ -334,12 +332,12 @@ def convolve(kerns, kshp, nkern, images, imgshp, step=(1, 1), bias=None,
convolution_indices.conv_eval(imgshp, kshp, step, mode)
# build sparse matrix, then generate stack of image patches
csc = theano.sparse.CSM(sptype)(N.ones(indices.size), indices,
csc = theano.sparse.CSM(sptype)(np.ones(indices.size), indices,
indptr, spmat_shape)
patches = (sparse.structured_dot(csc, images.T)).T
# compute output of linear classifier
pshape = tensor.stack([images.shape[0] * tensor.as_tensor(N.prod(outshp)),\
pshape = tensor.stack([images.shape[0] * tensor.as_tensor(np.prod(outshp)),\
tensor.as_tensor(imgshp[0] * kern_size)])
patch_stack = tensor.reshape(patches, pshape, ndim=2)
......@@ -354,14 +352,14 @@ def convolve(kerns, kshp, nkern, images, imgshp, step=(1, 1), bias=None,
# now to have feature maps in raster order ...
# go from bsize*outshp x nkern to bsize x nkern*outshp
newshp = tensor.stack([images.shape[0],\
tensor.as_tensor(N.prod(outshp)),\
tensor.as_tensor(np.prod(outshp)),\
tensor.as_tensor(nkern)])
tensout = tensor.reshape(output, newshp, ndim=3)
output = tensor.DimShuffle((False,) * tensout.ndim, (0, 2, 1))(tensout)
if flatten:
output = tensor.flatten(output, 2)
return output, N.hstack((nkern, outshp))
return output, np.hstack((nkern, outshp))
def max_pool(images, imgshp, maxpoolshp):
......@@ -380,12 +378,11 @@ def max_pool(images, imgshp, maxpoolshp):
:return: out1, symbolic result (2D tensor)
:return: out2, logical shape of the output
"""
N = numpy
poolsize = N.int64(N.prod(maxpoolshp))
poolsize = np.int64(np.prod(maxpoolshp))
# imgshp contains either 2 entries (height,width) or 3 (nfeatures,h,w)
# in the first case, default nfeatures to 1
if N.size(imgshp) == 2:
if np.size(imgshp) == 2:
imgshp = (1,) + imgshp
# construct indices and index pointers for sparse matrix, which,
......@@ -401,12 +398,12 @@ def max_pool(images, imgshp, maxpoolshp):
# print 'outshp = ', outshp
# build sparse matrix, then generate stack of image patches
csc = theano.sparse.CSM(sptype)(N.ones(indices.size), indices,
csc = theano.sparse.CSM(sptype)(np.ones(indices.size), indices,
indptr, spmat_shape)
patches = sparse.structured_dot(csc, images.T).T
pshape = tensor.stack([images.shape[0] *\
tensor.as_tensor(N.prod(outshp)),
tensor.as_tensor(np.prod(outshp)),
tensor.as_tensor(imgshp[0]),
tensor.as_tensor(poolsize)])
patch_stack = tensor.reshape(patches, pshape, ndim=3)
......@@ -414,7 +411,7 @@ def max_pool(images, imgshp, maxpoolshp):
out1 = tensor.max(patch_stack, axis=2)
pshape = tensor.stack([images.shape[0],
tensor.as_tensor(N.prod(outshp)),
tensor.as_tensor(np.prod(outshp)),
tensor.as_tensor(imgshp[0])])
out2 = tensor.reshape(out1, pshape, ndim=3)
......
from __future__ import absolute_import, print_function, division
import numpy
import numpy as np
from six.moves import xrange
import theano
import scipy.sparse
......@@ -74,7 +74,7 @@ class Poisson(gof.op.Op):
assert _is_sparse(x)
assert x.format in ["csr", "csc"]
out[0] = x.copy()
out[0].data = numpy.asarray(numpy.random.poisson(out[0].data),
out[0].data = np.asarray(np.random.poisson(out[0].data),
dtype=x.dtype)
out[0].eliminate_zeros()
......@@ -123,7 +123,7 @@ class Binomial(gof.op.Op):
def perform(self, node, inputs, outputs):
(n, p, shape) = inputs
(out,) = outputs
binomial = numpy.random.binomial(n, p, size=shape)
binomial = np.random.binomial(n, p, size=shape)
csx_matrix = getattr(scipy.sparse, self.format + '_matrix')
out[0] = csx_matrix(binomial, dtype=self.dtype)
......@@ -195,14 +195,14 @@ class Multinomial(gof.op.Op):
if n.ndim == 0:
for i in xrange(p.shape[0]):
k, l = p.indptr[i], p.indptr[i + 1]
out[0].data[k:l] = numpy.random.multinomial(n, p.data[k:l])
out[0].data[k:l] = np.random.multinomial(n, p.data[k:l])
elif n.ndim == 1:
if n.shape[0] != p.shape[0]:
raise ValueError('The number of element of n must be '
'the same as the number of row of p.')
for i in xrange(p.shape[0]):
k, l = p.indptr[i], p.indptr[i + 1]
out[0].data[k:l] = numpy.random.multinomial(n[i], p.data[k:l])
out[0].data[k:l] = np.random.multinomial(n[i], p.data[k:l])
def grad(self, inputs, outputs_gradients):
comment_n = "No gradient exists for the number of samples in class\
......
......@@ -11,7 +11,7 @@ if not theano.sparse.enable_sparse:
import scipy.sparse
from scipy.signal import convolve2d
import scipy.sparse as sparse
import numpy
import numpy as np
from six.moves import xrange
from theano import function, tensor
......@@ -43,8 +43,8 @@ class TestSP(unittest.TestCase):
bias = tensor.dvector()
kerns = tensor.dmatrix()
input = tensor.dmatrix()
rng = numpy.random.RandomState(3423489)
filters = rng.randn(nkern, numpy.prod(kshp))
rng = np.random.RandomState(3423489)
filters = rng.randn(nkern, np.prod(kshp))
biasvals = rng.randn(nkern)
for mode in ('FAST_COMPILE', 'FAST_RUN'):
......@@ -57,12 +57,12 @@ class TestSP(unittest.TestCase):
f = function([kerns, bias, input], output, mode=mode)
# now test with real values
img2d = numpy.arange(bsize * numpy.prod(imshp)).reshape(( \
img2d = np.arange(bsize * np.prod(imshp)).reshape(( \
bsize,) + imshp)
img1d = img2d.reshape(bsize, -1)
# create filters (need to be flipped to use convolve2d)
filtersflipped = numpy.zeros((nkern,) + kshp)
filtersflipped = np.zeros((nkern,) + kshp)
for k in range(nkern):
it = reversed(filters[k, :])
for i in range(kshp[0]):
......@@ -71,11 +71,11 @@ class TestSP(unittest.TestCase):
# compute output with convolve2d
if conv_mode == 'valid':
fulloutshp = numpy.array(imshp) - numpy.array(kshp) + 1
fulloutshp = np.array(imshp) - np.array(kshp) + 1
else:
fulloutshp = numpy.array(imshp) + numpy.array(kshp) - 1
fulloutshp = np.array(imshp) + np.array(kshp) - 1
ntime1 = time.time()
refout = numpy.zeros((bsize,)+tuple(fulloutshp)+(nkern,))
refout = np.zeros((bsize,)+tuple(fulloutshp)+(nkern,))
for b in range(bsize):
for n in range(nkern):
refout[b, ..., n] = convolve2d(img2d[b, :, :],
......@@ -88,7 +88,7 @@ class TestSP(unittest.TestCase):
bench1 += biasvals.reshape(1, 1, nkern)
# swap the last two dimensions (output needs to be nkern x outshp)
bench1 = numpy.swapaxes(bench1, 1, 2)
bench1 = np.swapaxes(bench1, 1, 2)
ttime1 = time.time()
out1 = f(filters, biasvals, img1d)
ttot += time.time() - ttime1
......@@ -101,13 +101,13 @@ class TestSP(unittest.TestCase):
#downprop = function([kerns,input], vis, mode=mode)
#visval = downprop(filters,img1d)
# test downward propagation -- reference implementation
#pshape = (img1d.shape[0],numpy.prod(outshp[1:]),numpy.prod(kshp))
#patchstack = numpy.zeros(pshape)
# for bi in numpy.arange(pshape[0]): # batch index
#pshape = (img1d.shape[0],np.prod(outshp[1:]),np.prod(kshp))
#patchstack = np.zeros(pshape)
# for bi in np.arange(pshape[0]): # batch index
#abspos = 0
# for outy in numpy.arange(outshp[1]):
# for outx in numpy.arange(outshp[2]):
# for ni in numpy.arange(nkern):
# for outy in np.arange(outshp[1]):
# for outx in np.arange(outshp[2]):
# for ni in np.arange(nkern):
# print 'filters[n,:].shape = ', filters[n,:].shape
# print 'out1[bi,abspos].shape =',out1[bi,abspos].shape
#patchstack[bi,abspos,:] = filters[n,:]*out1[bi,abspos]
......@@ -115,13 +115,13 @@ class TestSP(unittest.TestCase):
#patchstack = patchstack.reshape(1,-1)
# indices, indptr, spmat_shape, sptype, outshp = \
# sp.convolution_indices.conv_eval(imshp,kshp,ss,conv_mode)
#spmat = sparse.csc_matrix((numpy.ones_like(indices),indices,indptr),spmat_shape)
#visref = numpy.dot(patchstack, spmat.todense())
#spmat = sparse.csc_matrix((np.ones_like(indices),indices,indptr),spmat_shape)
#visref = np.dot(patchstack, spmat.todense())
# print 'visval = ', visval
# print 'visref = ', visref
#assert numpy.all(visref==visval)
#assert np.all(visref==visval)
# print '**** Convolution Profiling Results (',mode,') ****'
......@@ -143,10 +143,10 @@ class TestSP(unittest.TestCase):
# symbolic stuff
kerns = [tensor.dmatrix(), tensor.dmatrix()]
input = tensor.dmatrix()
rng = numpy.random.RandomState(3423489)
rng = np.random.RandomState(3423489)
# build actual input images
img2d = numpy.arange(bsize*numpy.prod(imshp)).reshape((bsize,)+imshp)
img2d = np.arange(bsize*np.prod(imshp)).reshape((bsize,)+imshp)
img1d = img2d.reshape(bsize, -1)
for mode in ('FAST_COMPILE', 'FAST_RUN'):
......@@ -157,8 +157,8 @@ class TestSP(unittest.TestCase):
nkerns[0], input, imshp, ss[0], mode=conv_mode)
l1propup = function([kerns[0], input], l1hid, mode=mode)
#l1kernvals = numpy.random.rand(nkerns[0],numpy.prod(kshp[0]))
l1kernvals = numpy.arange(nkerns[0]*numpy.prod(kshp[0])).reshape(nkerns[0], numpy.prod(kshp[0]))
#l1kernvals = np.random.rand(nkerns[0],np.prod(kshp[0]))
l1kernvals = np.arange(nkerns[0]*np.prod(kshp[0])).reshape(nkerns[0], np.prod(kshp[0]))
l1hidval = l1propup(l1kernvals, img1d)
# actual values
......@@ -166,17 +166,17 @@ class TestSP(unittest.TestCase):
nkerns[1], l1hid, l1shp, ss[1], mode=conv_mode)
l2propup = function([kerns[1], l1hid], l2hid, mode=mode)
#l2kernvals = numpy.random.rand(nkerns[1],numpy.prod(kshp[1])*nkerns[0])
l2kernvals = numpy.arange(nkerns[1]*numpy.prod(kshp[1])*nkerns[0]).reshape(nkerns[1], numpy.prod(kshp[1])*nkerns[0])
#l2kernvals = np.random.rand(nkerns[1],np.prod(kshp[1])*nkerns[0])
l2kernvals = np.arange(nkerns[1]*np.prod(kshp[1])*nkerns[0]).reshape(nkerns[1], np.prod(kshp[1])*nkerns[0])
# for debugging, we bring things back to integers
l1hidval = numpy.arange(numpy.size(l1hidval)).reshape(l1hidval.shape)
l1hidval = np.arange(np.size(l1hidval)).reshape(l1hidval.shape)
l2hidval = l2propup(l2kernvals, l1hidval)
def test_maxpool(self):
# generate flatted images
maxpoolshps = ((2, 2), (3, 3), (4, 4), (5, 5), (6, 6))
imval = numpy.random.rand(4, 5, 10, 10)
imval = np.random.rand(4, 5, 10, 10)
images = tensor.dmatrix()
for maxpoolshp in maxpoolshps:
......@@ -187,10 +187,10 @@ class TestSP(unittest.TestCase):
output_val = f(imval.reshape(imval.shape[0], -1))
# numeric verification
my_output_val = numpy.zeros((imval.shape[0], imval.shape[1],
my_output_val = np.zeros((imval.shape[0], imval.shape[1],
imval.shape[2] // maxpoolshp[0],
imval.shape[3] // maxpoolshp[1]))
assert numpy.prod(my_output_val.shape[1:]) == numpy.prod(numpy.r_[imval.shape[1], outshp])
assert np.prod(my_output_val.shape[1:]) == np.prod(np.r_[imval.shape[1], outshp])
for n in range(imval.shape[0]):
for k in range(imval.shape[1]):
......@@ -198,9 +198,9 @@ class TestSP(unittest.TestCase):
for j in range(imval.shape[3] // maxpoolshp[1]):
ii, jj = i*maxpoolshp[0], j*maxpoolshp[1]
patch = imval[n, k, ii:ii+maxpoolshp[0], jj:jj+maxpoolshp[1]]
my_output_val[n, k, i, j] = numpy.max(patch)
my_output_val[n, k, i, j] = np.max(patch)
my_output_val = my_output_val.reshape(imval.shape[0], -1)
assert numpy.all(output_val == my_output_val)
assert np.all(output_val == my_output_val)
def mp(input):
output, outshp = sp.max_pool(input, imval.shape[1:], maxpoolshp)
......
......@@ -2,7 +2,7 @@ from __future__ import absolute_import, print_function, division
import unittest
import theano
import numpy
import numpy as np
import scipy.sparse as sp
from theano import sparse
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论