chromium/components/assist_ranker/nn_classifier_test_util.h

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_ASSIST_RANKER_NN_CLASSIFIER_TEST_UTIL_H_
#define COMPONENTS_ASSIST_RANKER_NN_CLASSIFIER_TEST_UTIL_H_

#include <vector>

#include "components/assist_ranker/proto/nn_classifier.pb.h"

namespace assist_ranker {
namespace nn_classifier {

// Creates a NNClassifierModel proto using a specified set of biases and
// weights.
NNClassifierModel CreateModel(
    const std::vector<float>& hidden_biases,
    const std::vector<std::vector<float>>& hidden_weights,
    const std::vector<float>& logits_biases,
    const std::vector<std::vector<float>>& logits_weights);

// Performs inference on the input vector using the specified model, and
// checks that the expected scores are output.
bool CheckInference(const NNClassifierModel& model,
                    const std::vector<float>& input,
                    const std::vector<float>& expected_scores);

// Creates a NNClassiferModel that implements eXclusive-OR. True results
// are > 1, false results are < -1. This is a simple classification problem
// that cannot be solved linearly, so is a good test for a neural network.
NNClassifierModel CreateXorClassifierModel();

}  // namespace nn_classifier
}  // namespace assist_ranker

#endif  // COMPONENTS_ASSIST_RANKER_NN_CLASSIFIER_TEST_UTIL_H_