Loading...
Searching...
No Matches
concatenation_layer.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (C) 2026 Artificial Intelligence Techniques, S.L. and Roberto López González
3
4#pragma once
5
8
9namespace opennn
10{
11
19
20class Concatenation final : public Layer
21{
22public:
23
24 Concatenation(const Shape& = {},
25 const vector<Index>& per_input_channels = {},
26 const string& = "concatenation_layer");
27
28 Shape get_output_shape() const override;
29
30 Index get_sources_number() const noexcept override { return ssize(concatenation.input_channels); }
31
32 vector<TensorSpec> get_backward_specs(Index) const override;
33
34 void set(const Shape&, const vector<Index>&, const string&);
35 bool accepts_input_rank(Index rank) const override { return is_one_of(rank, 3); }
36
38 {
40 "{} layer supports FP32 activations only; compile the network with Type::FP32.",
41 get_name());
42 }
43
44 void from_JSON(const JsonDocument&) override;
45 void load_state_from_JSON(const JsonDocument&) override;
46
47 void read_JSON_body(const Json*) override;
48 void write_JSON_body(JsonWriter&) const override;
49
50private:
51
52 const Json* legacy_body(const JsonDocument&) const;
53
54 ConcatenationOperator concatenation;
55};
56
57}
void on_compute_dtype_changed() override
Definition concatenation_layer.h:37
void read_JSON_body(const Json *) override
void set(const Shape &, const vector< Index > &, const string &)
void from_JSON(const JsonDocument &) override
void load_state_from_JSON(const JsonDocument &) override
Index get_sources_number() const noexcept override
Definition concatenation_layer.h:30
vector< TensorSpec > get_backward_specs(Index) const override
bool accepts_input_rank(Index rank) const override
Definition concatenation_layer.h:35
void write_JSON_body(JsonWriter &) const override
Shape get_output_shape() const override
Concatenation(const Shape &={}, const vector< Index > &per_input_channels={}, const string &="concatenation_layer")
Definition json.h:75
Definition json.h:92
Definition json.h:24
Type get_compute_dtype() const noexcept
Definition layer.h:157
Layer(LayerType type, Trainability trainability=Trainability::Trainable)
Definition layer.h:210
const string & get_name() const
Definition configuration.h:10
constexpr bool is_one_of(const T &value, const Candidates &... candidates)
Definition opennn_types.h:273
@ FP32
Definition configuration.h:13
ForwardPropagationMode
Definition forward_propagation.h:33
#define throw_if(condition,...)
Definition opennn_types.h:243
Definition back_propagation.h:19
Definition concatenation_layer.h:13
void back_propagate(ForwardPropagation &, BackPropagation &, size_t) const override
void forward_propagate(ForwardPropagation &, size_t, ForwardPropagationMode) override
vector< Index > input_channels
Definition concatenation_layer.h:14
Definition forward_propagation.h:52
Definition operator.h:28
Definition tensor_types.h:172