def test_clone_changes_predictions(nH, nI): model1 = Linear(nH) model = clone(model1, 10) ones = numpy.ones((10, nI), dtype="f") model.initialize(X=ones) output_from_cloned = model.predict(ones) output_from_orig = model1.predict(ones) assert output_from_cloned.sum() != output_from_orig.sum()
def test_predict_weights(X, expected): W = numpy.asarray([1.0, 0.0, 0.0, 1.0], dtype="f").reshape((2, 2)) bias = numpy.asarray([0.0, 0.0], dtype="f") model = Linear(W.shape[0], W.shape[1]) model.set_param("W", W) model.set_param("b", bias) scores = model.predict(X.reshape((1, -1))) assert_allclose(scores.ravel(), expected)
def test_predict_extensive(W_b_input): W, b, input_ = W_b_input nr_out, nr_in = W.shape model = Linear(nr_out, nr_in) model.set_param("W", W) model.set_param("b", b) einsummed = numpy.einsum( "bi,oi->bo", numpy.asarray(input_, dtype="float32"), numpy.asarray(W, dtype="float32"), optimize=False, ) expected_output = einsummed + b predicted_output = model.predict(input_) assert_allclose(predicted_output, expected_output, rtol=1e-04, atol=0.0001)