コード例 #1
0
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_one(test_grad_pre, test_image)
    assert test_grad.shape == test_image.shape

    manual_grad = np.repeat(np.repeat((test_grad_pre / 25.0).reshape(
        (1, 1, -1)),
                                      5,
                                      axis=0),
                            5,
                            axis=1)

    np.testing.assert_almost_equal(test_grad, manual_grad)