Fixing incorrect numpy references in ConvLinear tests.
This commit is contained in:
parent
eef54933c1
commit
5e20946f20
46
mlp/utils.py
46
mlp/utils.py
@ -67,7 +67,7 @@ def verify_layer_gradient(layer, x, eps=1e-4, tol=1e-6):
|
|||||||
|
|
||||||
|
|
||||||
def test_conv_linear_fprop(layer, kernel_order='ioxy', kernels_first=True,
|
def test_conv_linear_fprop(layer, kernel_order='ioxy', kernels_first=True,
|
||||||
dtype=np.float):
|
dtype=numpy.float):
|
||||||
"""
|
"""
|
||||||
Tests forward propagation method of a convolutional layer.
|
Tests forward propagation method of a convolutional layer.
|
||||||
|
|
||||||
@ -110,14 +110,14 @@ def test_conv_linear_fprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
ValueError
|
ValueError
|
||||||
Raised if `kernel_order` is not a valid order string.
|
Raised if `kernel_order` is not a valid order string.
|
||||||
"""
|
"""
|
||||||
inputs = np.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
inputs = numpy.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
||||||
kernels = np.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
kernels = numpy.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
||||||
if kernel_order == 'oixy':
|
if kernel_order == 'oixy':
|
||||||
kernels = kernels.swapaxes(0, 1)
|
kernels = kernels.swapaxes(0, 1)
|
||||||
elif kernel_order != 'ioxy':
|
elif kernel_order != 'ioxy':
|
||||||
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
||||||
biases = np.arange(2).astype(dtype)
|
biases = numpy.arange(2).astype(dtype)
|
||||||
true_output = np.array(
|
true_output = numpy.array(
|
||||||
[[[[ 496., 466., 436.],
|
[[[[ 496., 466., 436.],
|
||||||
[ 376., 346., 316.],
|
[ 376., 346., 316.],
|
||||||
[ 256., 226., 196.]],
|
[ 256., 226., 196.]],
|
||||||
@ -142,7 +142,7 @@ def test_conv_linear_fprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
'Correct shape is {0} but returned shape is {1}.'
|
'Correct shape is {0} but returned shape is {1}.'
|
||||||
.format(true_output.shape, layer_output.shape)
|
.format(true_output.shape, layer_output.shape)
|
||||||
)
|
)
|
||||||
assert np.allclose(layer_output, true_output), (
|
assert numpy.allclose(layer_output, true_output), (
|
||||||
'Layer fprop does not give correct output. '
|
'Layer fprop does not give correct output. '
|
||||||
'Correct output is {0}\n but returned output is {1}.'
|
'Correct output is {0}\n but returned output is {1}.'
|
||||||
.format(true_output, layer_output)
|
.format(true_output, layer_output)
|
||||||
@ -153,7 +153,7 @@ def test_conv_linear_fprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
|
|
||||||
|
|
||||||
def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
||||||
dtype=np.float):
|
dtype=numpy.float):
|
||||||
"""
|
"""
|
||||||
Tests input gradients backpropagation method of a convolutional layer.
|
Tests input gradients backpropagation method of a convolutional layer.
|
||||||
|
|
||||||
@ -196,15 +196,15 @@ def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
ValueError
|
ValueError
|
||||||
Raised if `kernel_order` is not a valid order string.
|
Raised if `kernel_order` is not a valid order string.
|
||||||
"""
|
"""
|
||||||
inputs = np.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
inputs = numpy.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
||||||
kernels = np.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
kernels = numpy.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
||||||
if kernel_order == 'oixy':
|
if kernel_order == 'oixy':
|
||||||
kernels = kernels.swapaxes(0, 1)
|
kernels = kernels.swapaxes(0, 1)
|
||||||
elif kernel_order != 'ioxy':
|
elif kernel_order != 'ioxy':
|
||||||
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
||||||
biases = np.arange(2).astype(dtype)
|
biases = numpy.arange(2).astype(dtype)
|
||||||
igrads = np.arange(-20, 16).reshape((2, 2, 3, 3)).astype(dtype)
|
igrads = numpy.arange(-20, 16).reshape((2, 2, 3, 3)).astype(dtype)
|
||||||
true_ograds = np.array(
|
true_ograds = numpy.array(
|
||||||
[[[[ 328., 605., 567., 261.],
|
[[[[ 328., 605., 567., 261.],
|
||||||
[ 534., 976., 908., 414.],
|
[ 534., 976., 908., 414.],
|
||||||
[ 426., 772., 704., 318.],
|
[ 426., 772., 704., 318.],
|
||||||
@ -241,7 +241,7 @@ def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
'Correct shape is {0} but returned shape is {1}.'
|
'Correct shape is {0} but returned shape is {1}.'
|
||||||
.format(igrads.shape, layer_deltas.shape)
|
.format(igrads.shape, layer_deltas.shape)
|
||||||
)
|
)
|
||||||
assert np.allclose(layer_deltas, igrads), (
|
assert numpy.allclose(layer_deltas, igrads), (
|
||||||
'Layer bprop does not give correct deltas output. '
|
'Layer bprop does not give correct deltas output. '
|
||||||
'Correct output is {0}\n but returned output is {1}.'
|
'Correct output is {0}\n but returned output is {1}.'
|
||||||
.format(igrads, layer_deltas)
|
.format(igrads, layer_deltas)
|
||||||
@ -251,7 +251,7 @@ def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
'Correct shape is {0} but returned shape is {1}.'
|
'Correct shape is {0} but returned shape is {1}.'
|
||||||
.format(true_ograds.shape, layer_ograds.shape)
|
.format(true_ograds.shape, layer_ograds.shape)
|
||||||
)
|
)
|
||||||
assert np.allclose(layer_ograds, true_ograds), (
|
assert numpy.allclose(layer_ograds, true_ograds), (
|
||||||
'Layer bprop does not give correct ograds output. '
|
'Layer bprop does not give correct ograds output. '
|
||||||
'Correct output is {0}\n but returned output is {1}.'
|
'Correct output is {0}\n but returned output is {1}.'
|
||||||
.format(true_ograds, layer_ograds)
|
.format(true_ograds, layer_ograds)
|
||||||
@ -262,7 +262,7 @@ def test_conv_linear_bprop(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
|
|
||||||
|
|
||||||
def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
||||||
dtype=np.float):
|
dtype=numpy.float):
|
||||||
"""
|
"""
|
||||||
Tests parameter gradients backpropagation method of a convolutional layer.
|
Tests parameter gradients backpropagation method of a convolutional layer.
|
||||||
|
|
||||||
@ -305,11 +305,11 @@ def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
ValueError
|
ValueError
|
||||||
Raised if `kernel_order` is not a valid order string.
|
Raised if `kernel_order` is not a valid order string.
|
||||||
"""
|
"""
|
||||||
inputs = np.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
inputs = numpy.arange(96).reshape((2, 3, 4, 4)).astype(dtype)
|
||||||
kernels = np.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
kernels = numpy.arange(-12, 12).reshape((3, 2, 2, 2)).astype(dtype)
|
||||||
biases = np.arange(2).astype(dtype)
|
biases = numpy.arange(2).astype(dtype)
|
||||||
deltas = np.arange(-20, 16).reshape((2, 2, 3, 3)).astype(dtype)
|
deltas = numpy.arange(-20, 16).reshape((2, 2, 3, 3)).astype(dtype)
|
||||||
true_kernel_grads = np.array(
|
true_kernel_grads = numpy.array(
|
||||||
[[[[ 390., 264.],
|
[[[[ 390., 264.],
|
||||||
[ -114., -240.]],
|
[ -114., -240.]],
|
||||||
[[ 5088., 5124.],
|
[[ 5088., 5124.],
|
||||||
@ -327,7 +327,7 @@ def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
true_kernel_grads = true_kernel_grads.swapaxes(0, 1)
|
true_kernel_grads = true_kernel_grads.swapaxes(0, 1)
|
||||||
elif kernel_order != 'ioxy':
|
elif kernel_order != 'ioxy':
|
||||||
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
raise ValueError('kernel_order must be one of "ioxy" and "oixy"')
|
||||||
true_bias_grads = np.array([-126., 36.], dtype=dtype)
|
true_bias_grads = numpy.array([-126., 36.], dtype=dtype)
|
||||||
try:
|
try:
|
||||||
orig_params = layer.get_params()
|
orig_params = layer.get_params()
|
||||||
if kernels_first:
|
if kernels_first:
|
||||||
@ -340,7 +340,7 @@ def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
'Correct shape is {0} but returned shape is {1}.'
|
'Correct shape is {0} but returned shape is {1}.'
|
||||||
.format(true_kernel_grads.shape, layer_kernel_grads.shape)
|
.format(true_kernel_grads.shape, layer_kernel_grads.shape)
|
||||||
)
|
)
|
||||||
assert np.allclose(layer_kernel_grads, true_kernel_grads), (
|
assert numpy.allclose(layer_kernel_grads, true_kernel_grads), (
|
||||||
'Layer pgrads does not give correct kernel gradients output. '
|
'Layer pgrads does not give correct kernel gradients output. '
|
||||||
'Correct output is {0}\n but returned output is {1}.'
|
'Correct output is {0}\n but returned output is {1}.'
|
||||||
.format(true_kernel_grads, layer_kernel_grads)
|
.format(true_kernel_grads, layer_kernel_grads)
|
||||||
@ -350,7 +350,7 @@ def test_conv_linear_pgrads(layer, kernel_order='ioxy', kernels_first=True,
|
|||||||
'Correct shape is {0} but returned shape is {1}.'
|
'Correct shape is {0} but returned shape is {1}.'
|
||||||
.format(true_kernel_grads.shape, layer_kernel_grads.shape)
|
.format(true_kernel_grads.shape, layer_kernel_grads.shape)
|
||||||
)
|
)
|
||||||
assert np.allclose(layer_bias_grads, true_bias_grads), (
|
assert numpy.allclose(layer_bias_grads, true_bias_grads), (
|
||||||
'Layer pgrads does not give correct bias gradients output. '
|
'Layer pgrads does not give correct bias gradients output. '
|
||||||
'Correct output is {0}\n but returned output is {1}.'
|
'Correct output is {0}\n but returned output is {1}.'
|
||||||
.format(true_bias_grads, layer_bias_grads)
|
.format(true_bias_grads, layer_bias_grads)
|
||||||
|
Loading…
Reference in New Issue
Block a user