examples/ is based on KasperskyLab/knp at 55470ed6 with local changes to the mnist-learn altai/blifat models, cuda-backend CMake and model_loader. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
/**
|
|
* @file annotated_network.h
|
|
* @brief Network with annotations.
|
|
* @kaspersky_support D. Postnikov
|
|
* @date 03.02.2026
|
|
* @license Apache 2.0
|
|
* @copyright © 2026 AO Kaspersky Lab
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <knp/framework/network.h>
|
|
|
|
#include <map>
|
|
#include <set>
|
|
#include <string>
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
|
|
/**
|
|
* @brief A network with annotations.
|
|
*/
|
|
struct AnnotatedNetwork
|
|
{
|
|
/**
|
|
* @brief Core network structure.
|
|
*/
|
|
knp::framework::Network network_;
|
|
|
|
/// Annotation metadata structure providing additional network context.
|
|
struct Annotation
|
|
{
|
|
/**
|
|
* @brief Output UIDs.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::vector<knp::core::UID> output_uids_;
|
|
|
|
/**
|
|
* @brief Projections from rasterized channeled population.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::vector<knp::core::UID> projections_from_raster_;
|
|
|
|
/**
|
|
* @brief Projection from class channeled populations (label populations).
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::vector<knp::core::UID> projections_from_classes_;
|
|
|
|
/**
|
|
* @brief Populations that should be kept during inference.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::set<knp::core::UID> inference_population_uids_;
|
|
|
|
/**
|
|
* @brief Projections that should be kept during inference.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::set<knp::core::UID> inference_internal_projection_;
|
|
|
|
/**
|
|
* @brief For each compound network: sender and receiver UID vectors for WTA mechanisms.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::vector<std::pair<std::vector<knp::core::UID>, std::vector<knp::core::UID>>> wta_data_;
|
|
|
|
/**
|
|
* @brief WTA border indices defining competition boundaries (for example, [2,4,6]).
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
std::vector<size_t> wta_borders_;
|
|
}
|
|
/**
|
|
* @brief Annotation data associated with the network.
|
|
*/
|
|
// cppcheck-suppress unusedStructMember
|
|
data_;
|
|
};
|