Loading...
Searching...
No Matches
clamping_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
13
25
26class Clamping final : public Layer
27{
28public:
29
31
32 Clamping(const Shape& = {0},
33 ClampingMethod = ClampingMethod::Clamping,
34 const string& = "clamping_layer");
35
36 Shape get_input_shape() const noexcept override { return output_shape; }
37 Shape get_output_shape() const noexcept override { return output_shape; }
38
39 const ClampingMethod& get_clamping_method() const noexcept { return clamping.method; }
40
41 VectorR get_lower_bounds() const { return Map<const VectorR>(lower_bounds.data(), ssize(lower_bounds)); }
42 VectorR get_upper_bounds() const { return Map<const VectorR>(upper_bounds.data(), ssize(upper_bounds)); }
43
44 void set(const Shape& = {0},
45 ClampingMethod = ClampingMethod::Clamping,
46 const string& = "clamping_layer");
47
48 bool accepts_input_rank(Index rank) const override { return is_one_of(rank, 1, 2, 3); }
49 bool allows_successors() const noexcept override { return false; }
50
51 void apply_input_shape(const Shape&) override;
52
54 void set_clamping_method(const string&);
55
56 void set_lower_bound(Index, float);
57
58 void set_upper_bound(Index, float);
59
60 float* link_states(float*, Device) override;
61
62 void read_JSON_body(const Json*) override;
63 void write_JSON_body(JsonWriter&) const override;
64
65 string write_expression(const vector<string>&,
66 const vector<string>&) const override;
67
68private:
69
70 Shape output_shape;
71
72 vector<float> lower_bounds;
73 vector<float> upper_bounds;
74
75 Buffer op_storage;
76 bool op_storage_dirty = true;
77
78 ClampingOperator clamping;
79
80 void refresh_op_storage(Device);
81
82 static const EnumMap<ClampingMethod>& clamping_method_map();
83};
84
85}
void apply_input_shape(const Shape &) override
const ClampingMethod & get_clamping_method() const noexcept
Definition clamping_layer.h:39
Shape get_input_shape() const noexcept override
Definition clamping_layer.h:36
bool allows_successors() const noexcept override
Definition clamping_layer.h:49
bool accepts_input_rank(Index rank) const override
Definition clamping_layer.h:48
float * link_states(float *, Device) override
void read_JSON_body(const Json *) override
ClampingOperator::Method ClampingMethod
Definition clamping_layer.h:30
void write_JSON_body(JsonWriter &) const override
string write_expression(const vector< string > &, const vector< string > &) const override
void set_clamping_method(const ClampingMethod &)
VectorR get_upper_bounds() const
Definition clamping_layer.h:42
void set_upper_bound(Index, float)
VectorR get_lower_bounds() const
Definition clamping_layer.h:41
void set_clamping_method(const string &)
Clamping(const Shape &={0}, ClampingMethod=ClampingMethod::Clamping, const string &="clamping_layer")
void set_lower_bound(Index, float)
void set(const Shape &={0}, ClampingMethod=ClampingMethod::Clamping, const string &="clamping_layer")
Shape get_output_shape() const noexcept override
Definition clamping_layer.h:37
Definition enum_map.h:15
Definition json.h:92
Definition json.h:24
Layer(LayerType type, Trainability trainability=Trainability::Trainable)
Definition layer.h:210
Definition configuration.h:10
Device
Definition configuration.h:12
constexpr bool is_one_of(const T &value, const Candidates &... candidates)
Definition opennn_types.h:273
void apply_clamping(const TensorView &, const TensorView &, const TensorView &, TensorView &)
ForwardPropagationMode
Definition forward_propagation.h:33
Eigen::Matrix< float, Eigen::Dynamic, 1 > VectorR
Definition opennn_types.h:335
Definition tensor_types.h:340
Definition clamping_layer.h:15
void forward_propagate(ForwardPropagation &, size_t, ForwardPropagationMode) override
TensorView lower
Definition clamping_layer.h:20
TensorView upper
Definition clamping_layer.h:21
Method
Definition clamping_layer.h:16
@ Clamping
Definition clamping_layer.h:16
@ NoClamping
Definition clamping_layer.h:16
Method method
Definition clamping_layer.h:18
Definition forward_propagation.h:52
Definition operator.h:28
Definition tensor_types.h:172
Definition tensor_types.h:540