def test_keras_backward(num_classes):
bounds = (0, 255)
channels = num_classes
model = Sequential()
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
model.add(GlobalAveragePooling2D(
data_format='channels_last', input_shape=(5, 5, channels)))
model = KerasModel(
model,
bounds=bounds,
predicts='logits')
test_image = np.random.rand(5, 5, channels).astype(np.float32)
test_grad_pre = np.random.rand(num_classes).astype(np.float32)
test_grad = model.backward(test_grad_pre, test_image)
assert test_grad.shape == test_image.shape
manual_grad = np.repeat(np.repeat(
(test_grad_pre / 25.).reshape((1, 1, -1)),
5, axis=0), 5, axis=1)
np.testing.assert_almost_equal(
test_grad,
manual_grad)
评论列表
文章目录