// Copyright (c) ONNX Project Contributors // // SPDX-License-Identifier: Apache-2.0 // Adapter for Sum in default domain from version 8 to 7 #pragma once #include #include #include "onnx/version_converter/adapters/adapter.h" namespace ONNX_NAMESPACE::version_conversion { class Sum_8_7 final : public Adapter { public: explicit Sum_8_7() : Adapter("Sum", OpSetID(8), OpSetID(7)) {} void adapt_sum_8_7(const std::shared_ptr& /*unused*/, Node* node) const { // Throw an exception if any broadcasting occurs const ArrayRef& inputs = node->inputs(); // Determine if inputs are of different sizes for (size_t i = 1; i < inputs.size(); i++) { std::vector A_sizes = inputs[i - 1]->sizes(); std::vector B_sizes = inputs[i]->sizes(); assert_numpy_multibroadcastable(A_sizes, B_sizes); } } Node* adapt(std::shared_ptr graph, Node* node) const override { adapt_sum_8_7(graph, node); return node; } }; } // namespace ONNX_NAMESPACE::version_conversion