1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! Regularization layers and the shared training-mode infrastructure that backs them
//!
//! Re-exports the 3 families of regularization layers. Defines the macros that generate their
//! common training-mode methods, plus a private `validation` submodule of parameter and
//! input-shape checks shared across the layers.
//!
//! The families are:
//! - dropout: [`Dropout`](crate::neural_network::layers::regularization::dropout::dropout::Dropout)
//! and the spatial variants [`SpatialDropout1D`](crate::neural_network::layers::regularization::dropout::spatial_dropout_1d::SpatialDropout1D),
//! [`SpatialDropout2D`](crate::neural_network::layers::regularization::dropout::spatial_dropout_2d::SpatialDropout2D),
//! and [`SpatialDropout3D`](crate::neural_network::layers::regularization::dropout::spatial_dropout_3d::SpatialDropout3D)
//! - noise injection: [`GaussianNoise`](crate::neural_network::layers::regularization::noise_injection::gaussian_noise::GaussianNoise)
//! and [`GaussianDropout`](crate::neural_network::layers::regularization::noise_injection::gaussian_dropout::GaussianDropout)
//! - normalization: [`BatchNormalization`](crate::neural_network::layers::regularization::normalization::batch_normalization::BatchNormalization),
//! [`LayerNormalization`](crate::neural_network::layers::regularization::normalization::layer_normalization::LayerNormalization),
//! [`GroupNormalization`](crate::neural_network::layers::regularization::normalization::group_normalization::GroupNormalization),
//! and [`InstanceNormalization`](crate::neural_network::layers::regularization::normalization::instance_normalization::InstanceNormalization)
//!
//! Every layer behaves differently in training versus inference. The module defines 2 macros to
//! toggle the shared `training` field. `mode_dependent_layer_set_training` generates the inherent
//! `set_training` method. `mode_dependent_layer_trait` generates the
//! `set_training_if_mode_dependent` trait method that calls it.
/// Dropout layers for neural networks
/// Noise injection layers for neural networks
/// Normalization layers for neural networks
/// Input validation functions for regularization layers
pub use *;
pub use *;
pub use *;
/// Defines a layer-specific `set_training` method for toggling training mode
///
/// The generated method sets the `training` field to `true` (training) or `false`
/// (inference). This drives behavior in the forward and backward passes
pub use mode_dependent_layer_set_training;
/// Defines the trait method `set_training_if_mode_dependent` for a layer whose behavior
/// depends on training versus inference mode
pub use mode_dependent_layer_trait;