Loading...
Searching...
No Matches
scaling_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
9
10namespace opennn
11{
12
13void scale(const TensorView&,
14 const TensorView&, const TensorView&,
15 const TensorView&, const TensorView&,
16 const TensorView&,
17 float, float,
18 TensorView&);
19
20void unscale(const TensorView&,
21 const TensorView&, const TensorView&,
22 const TensorView&, const TensorView&,
23 const TensorView&,
24 float, float,
25 TensorView&);
26
42
43class Scaling : public Layer, public FeatureScalingEndpoint
44{
45public:
46
47 Scaling(const Shape& = {});
49
50 Shape get_output_shape() const noexcept override { return input_shape; }
51
52 const vector<Descriptives>& get_descriptives() const noexcept { return descriptives; }
53 const vector<ScalerMethod>& get_scalers() const noexcept { return scalers; }
54
59
60 float get_min_range() const noexcept { return min_range; }
61 float get_max_range() const noexcept { return max_range; }
62 bool is_inverse() const noexcept { return scale_op.invert; }
63 VariableRole get_scaling_role() const noexcept override
64 {
66 }
67
69 {
71 }
72
73 void set(const Shape& = {});
74 bool accepts_input_rank(Index rank) const override { return is_one_of(rank, 1, 2, 3); }
75 bool skip_for_pre_scaled_input() const noexcept override { return true; }
76
77 void apply_input_shape(const Shape&) override;
78
79 void set_descriptives(const vector<Descriptives>&);
81 void set_scalers(const vector<string>&);
82 void set_scalers(const string&);
83 void set_feature_scaling(const FeatureScaling&) override;
84
85 bool is_passthrough() const;
86
87 vector<TensorSpec> get_forward_specs(Index) const override;
89
90 float* link_states(float*, Device) override;
91
92 void read_JSON_body(const Json*) override;
93 void write_JSON_body(JsonWriter&) const override;
94
95 string write_expression(const vector<string>&,
96 const vector<string>&) const override;
97
98protected:
99
100 Scaling(LayerType, bool invert);
101
102 vector<Descriptives> descriptives;
103 vector<ScalerMethod> scalers;
104 float min_range = -1.0f;
105 float max_range = 1.0f;
106
108 bool op_storage_dirty = true;
109
111
113 static string affine_expression(string_view input, const AffineMap&);
114 string write_scaling_expression(const vector<string>&, const vector<string>&, bool inverse) const;
115};
116
117}
Definition scaling.h:25
Definition json.h:92
Definition json.h:24
Layer(LayerType type, Trainability trainability=Trainability::Trainable)
Definition layer.h:210
Shape input_shape
Definition layer.h:219
bool is_inverse() const noexcept
Definition scaling_layer.h:62
void refresh_op_storage(Device)
VectorR get_maximums() const
Definition scaling_layer.h:56
bool is_passthrough() const
ScaleOperator scale_op
Definition scaling_layer.h:110
void forward_propagate(ForwardPropagation &, size_t, ForwardPropagationMode) override
float * link_states(float *, Device) override
VariableRole get_scaling_role() const noexcept override
Definition scaling_layer.h:63
vector< ScalerMethod > scalers
Definition scaling_layer.h:103
vector< TensorSpec > get_forward_specs(Index) const override
void set_scalers(ScalerMethod)
void set(const Shape &={})
void apply_input_shape(const Shape &) override
const vector< Descriptives > & get_descriptives() const noexcept
Definition scaling_layer.h:52
string write_expression(const vector< string > &, const vector< string > &) const override
static string affine_expression(string_view input, const AffineMap &)
float max_range
Definition scaling_layer.h:105
string write_scaling_expression(const vector< string > &, const vector< string > &, bool inverse) const
Buffer op_storage
Definition scaling_layer.h:107
bool skip_for_pre_scaled_input() const noexcept override
Definition scaling_layer.h:75
const vector< ScalerMethod > & get_scalers() const noexcept
Definition scaling_layer.h:53
Scaling(const Shape &={})
VectorR get_means() const
Definition scaling_layer.h:57
void set_scalers(const vector< string > &)
void set_scalers(const string &)
float get_min_range() const noexcept
Definition scaling_layer.h:60
void set_descriptives(const vector< Descriptives > &)
bool op_storage_dirty
Definition scaling_layer.h:108
VectorR get_standard_deviations() const
Shape get_output_shape() const noexcept override
Definition scaling_layer.h:50
VectorR get_minimums() const
Definition scaling_layer.h:55
void write_JSON_body(JsonWriter &) const override
FeatureScaling get_feature_scaling() const override
Definition scaling_layer.h:68
void set_feature_scaling(const FeatureScaling &) override
float min_range
Definition scaling_layer.h:104
void read_JSON_body(const Json *) override
Scaling(const Shape &, ScalerMethod)
bool accepts_input_rank(Index rank) const override
Definition scaling_layer.h:74
vector< Descriptives > descriptives
Definition scaling_layer.h:102
float get_max_range() const noexcept
Definition scaling_layer.h:61
Scaling(LayerType, bool invert)
Definition configuration.h:10
Device
Definition configuration.h:12
VariableRole
Definition variable.h:72
@ Input
Definition variable.h:74
@ Target
Definition variable.h:75
void unscale(const TensorView &, const TensorView &, const TensorView &, const TensorView &, const TensorView &, const TensorView &, float, float, TensorView &)
ScalerMethod
Definition variable.h:39
constexpr bool is_one_of(const T &value, const Candidates &... candidates)
Definition opennn_types.h:273
LayerType
Definition layer_registry.h:15
void scale(const TensorView &, const TensorView &, const TensorView &, const TensorView &, const TensorView &, const TensorView &, float, float, TensorView &)
ForwardPropagationMode
Definition forward_propagation.h:33
VectorR descriptives_field(const vector< Descriptives > &descriptives, float Descriptives::*member)
Definition statistics.h:27
Eigen::Matrix< float, Eigen::Dynamic, 1 > VectorR
Definition opennn_types.h:335
Definition scaling.h:84
Definition tensor_types.h:340
float minimum
Definition statistics.h:17
float mean
Definition statistics.h:21
float maximum
Definition statistics.h:19
Definition scaling.h:12
Definition forward_propagation.h:52
Definition operator.h:28
Definition scaling_layer.h:28
bool invert
Definition scaling_layer.h:29
float max_range
Definition scaling_layer.h:32
TensorView means
Definition scaling_layer.h:36
TensorView maximums
Definition scaling_layer.h:35
TensorView standard_deviations
Definition scaling_layer.h:37
void forward_propagate(ForwardPropagation &, size_t, ForwardPropagationMode) override
TensorView minimums
Definition scaling_layer.h:34
TensorView scalers
Definition scaling_layer.h:38
float min_range
Definition scaling_layer.h:31
Definition tensor_types.h:172
Definition tensor_types.h:540