|
LBANN
0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
|
Neural network tensor operation. More...
#include <layer.hpp>
Public Member Functions | |
| void | write_proto (lbann_data::Layer &proto) const |
| Write layer to proto file. More... | |
| lbann_comm * | get_comm () const |
| int | get_grid_tag () const noexcept |
| Identifying tag for process grid. More... | |
| void | set_grid_tag (int tag) |
| Set process grid. More... | |
| virtual void | set_keep_error_signals (bool)=0 |
| Set whether to keep or dynamically reallocate error signals. More... | |
| bool | runs_inplace () const |
| If true, the layer will run in-place (the input and output activations point to the same tensor). Value is set during graph setup (in setup_pointers) based on layer traits and neighboring layers. More... | |
| bool | distconv_enabled () const |
| Indicate whether distconv is enabled. More... | |
Lifecycle | |
| Layer () | |
| virtual | ~Layer ()=default |
| virtual Layer * | copy () const =0 |
| Copy function. This function dynamically allocates memory for a layer instance and instantiates a copy. The caller is responsible for deallocating the instance. More... | |
Metadata modifiers | |
| void | set_name (const std::string name) |
| Set the layer instance's name. Each layer in a model should have a unique, preferably human-readable, name. More... | |
| void | set_model (model *m) |
| Set the model that manages this layer. More... | |
Metadata queries | |
| std::string | get_name () const |
| Get the layer instance's name. More... | |
| model * | get_model () const noexcept |
| Get a reference to the model that manages this layer. More... | |
| virtual std::string | get_type () const =0 |
| Get the layer type's name. More... | |
| virtual std::string | get_datatype_name () const =0 |
| Get a string representing the layer datatype. More... | |
| virtual description | get_description () const |
| Human-readable description. More... | |
| virtual data_layout | get_data_layout () const =0 |
| Get data layout of the data tensors. We assume that the data layouts of the previous activations, activations, previous error signals, and error signals are the same. Each concrete layer that is templated on its data layout should override this function to return its template parameter. More... | |
| virtual El::Device | get_device_allocation () const =0 |
| Get the device allocation for the data tensors. We assume that the decice allocation of the previous activations, activations, previous error signals, and error signals are the same. Each concrete layer that is templated on its device allocation should override this function to return its template parameter. More... | |
| int | get_expected_num_parent_layers () const noexcept |
| Get expected number of parent layers. A negative value indicates no limit. More... | |
| int | get_expected_num_child_layers () const noexcept |
| Get expected number of child layers. A negative value indicates no limit. More... | |
| virtual int | get_backprop_requirements () const |
| Returns the necessary tensors for computing backpropagation. More... | |
| ParallelStrategy & | get_parallel_strategy () noexcept |
| Get the parallel strategy for the layer. More... | |
| ParallelStrategy const & | get_parallel_strategy () const noexcept |
| Get the parallel strategy for the layer. More... | |
Metadata predicates | |
| virtual bool | can_run_inplace () const |
| If True, the computation can run in-place (feeding each input activations tensor as the corresponding output activations) More... | |
| bool | using_gpus () const noexcept |
| Whether the layer is using a GPU implementation. More... | |
Training support | |
| virtual void | forward_prop ()=0 |
| Forward propagation step. Apply a mathematical operation to input tensors to obtain output tensors. More... | |
| void | back_prop () |
| Backward propagation step. Given the objective function gradients w.r.t. the output tensors, compute the gradients w.r.t. the input tensors and w.r.t. the weights. This is essentially an application of the chain rule. More... | |
| bool | update () |
| Update step. Update the layer's internal members. Note that the optimization step for the weights happens elsewhere. More... | |
| virtual void | setup (size_t max_mini_batch_size, const std::vector< El::Grid *> &grids) |
| Setup layer members. More... | |
| virtual void | check_setup () |
| Check that the setup is reasonable. More... | |
Summarizer support | |
| void | summarize_stats (lbann_summary &summarizer, int step) |
| virtual void | summarize_matrices (lbann_summary &summarizer, int step)=0 |
| void | reset_counters () |
| Reset layer stat counters. More... | |
Subgraph stuff | |
| void | set_communication_flag (SubGraphCommunication type) |
| SubGraphCommunication | get_communication_flag () |
| void | set_num_spliting_groups (El::Int spliting_groups) |
| El::Int | get_num_spliting_groups () const |
| std::shared_ptr< El::Grid > | get_mygrid () const |
| void | reset_inter_subgrid_vc_comm (std::shared_ptr< El::mpi::Comm > mpi_comm) |
| void | set_subgraph_parallelism_execution () |
| bool | subgraph_parallelism_execution () const noexcept |
| void | set_run_layer_in_subgraph () |
| bool | get_run_layer_in_subgraph () const noexcept |
Parent/child accessors | |
| const Layer & | get_parent_layer (size_t index=0) const |
| const Layer & | get_child_layer (size_t index=0) const |
| std::vector< const Layer * > | get_parent_layers () const |
| std::vector< const Layer * > | get_child_layers () const |
| size_t | find_parent_layer_index (const Layer &l) const |
| size_t | find_child_layer_index (const Layer &l) const |
| int | get_num_parents () const noexcept |
| Get number of parent layers. More... | |
| int | get_num_children () const noexcept |
| Get number of child layers. More... | |
Layer pointer manipulation functions | |
| void | add_parent_layer (ViewingLayerPtr parent) |
| Add a parent layer. More... | |
| void | add_child_layer (ViewingLayerPtr child) |
| Add a child layer. More... | |
| void | replace_parent_layer (ViewingLayerPtr l, size_t index) |
| void | replace_child_layer (ViewingLayerPtr l, size_t index) |
| void | clear_parent_layers () |
| Remove pointers to parent layers. More... | |
| void | clear_child_layers () |
| Remove pointers to child layers. More... | |
| ViewingLayerPtr | get_parent_layer_pointer (size_t index) const |
| ViewingLayerPtr | get_child_layer_pointer (size_t index) const |
| virtual std::vector< ViewingLayerPtr > | get_layer_pointers () |
| List of pointers to other layers. More... | |
| virtual void | set_layer_pointers (std::vector< ViewingLayerPtr > layers) |
| Set list of pointers to other layers. More... | |
Weights access functions | |
| std::vector< ViewingWeightsPtr > | get_weights_pointers () const |
| List of pointers to weights. More... | |
| void | set_weights_pointers (std::vector< ViewingWeightsPtr > ptrs) |
| Set list of pointers to weights. More... | |
| void | replace_weights (Layer const &other_layer) |
| Replace weights with another Layer's weights. More... | |
Tensor access functions | |
| virtual const BaseDistMat & | get_activations (const Layer &child) const =0 |
| Get activation tensor corresponding to child layer. More... | |
| virtual const BaseDistMat & | get_error_signals (const Layer &parent) const =0 |
| Get error signal tensor corresponding to parent layer. More... | |
Tensor dimension access functions | |
| std::vector< int > | get_input_dims (size_t input_index=0) const |
| Get input tensor dimensions. More... | |
| int | get_input_size (size_t input_index=0) const |
| Get input tensor size. More... | |
| std::vector< int > | get_output_dims (size_t output_index=0) const |
| Get output tensor dimensions. More... | |
| int | get_output_size (size_t output_index=0) const |
| Get output tensor size. More... | |
| void | set_output_dims (std::vector< int > dims, size_t output_index=0) |
| Set output tensor dimensions. More... | |
| El::Int | infer_mini_batch_size_from_parents () const |
| virtual El::Int | current_output_mini_batch_size () const =0 |
| virtual El::Int | infer_mini_batch_size_from_parents_or_default_to_current () const =0 |
Hint layer access functions | |
| void | set_hint_layer (ViewingLayerPtr l) |
| Set hint layer. More... | |
| const Layer * | get_hint_layer () const |
| Get hint layer. More... | |
Freeze management functions | |
| void | freeze () |
| void | unfreeze () |
| bool | is_frozen () const |
Serialization | |
| template<typename ArchiveT > | |
| void | serialize (ArchiveT &ar) |
Protected Member Functions | |
| void | setup_grid () |
| Setup process grid. More... | |
| virtual void | setup_pointers () |
| Setup layer pointers. Called by the 'setup' function. Pointers to parent/child layers are assumed to be already initialized. More... | |
| virtual void | setup_dims () |
| Setup tensor dimensions Called by the 'setup' function. If there are any input tensors, the base method sets all uninitialized output tensor dimensions equal to the first input tensor dimensions. More... | |
| virtual void | setup_matrices (const std::vector< El::Grid *> &grids)=0 |
| Setup buffers for layer inputs and outputs. More... | |
| virtual void | setup_data (size_t max_mini_batch_size) |
| Setup layer data. Called by the 'setup' function. Memory is allocated for distributed matrices. More... | |
| virtual void | setup_gpu () |
| Setup GPU objects. Called by the 'setup' function if the layer is on GPUs. More... | |
| virtual void | fp_setup_inputs ()=0 |
| Setup input tensors. Called by the 'forward_prop' function. Each input tensor is setup as a view or copy of the corresponding parent layer's output tensor. More... | |
| virtual void | fp_setup_outputs ()=0 |
| Setup output tensors. Called by the 'forward_prop' function. Each output tensor is resized to match the mini-batch size. More... | |
| virtual void | fp_compute ()=0 |
| Apply layer operation. Called by the 'forward_prop' function. Given the input tensors, the output tensors are populated with computed values. More... | |
| virtual void | bp_setup_gradient_wrt_inputs ()=0 |
| Setup gradient w.r.t. input tensors. Called by the 'back_prop' function. Each gradient w.r.t. input tensor is resized to match the mini-batch size. More... | |
| virtual void | bp_compute () |
| Compute objective funciton gradients. Called by the 'back_prop' function. Given the input, output, and gradient w.r.t. output tensors, the gradient w.r.t. input tensors are populated with the computed values and the gradients w.r.t. the weights are sent to the appropriate optimizers. More... | |
| virtual bool | update_compute () |
| Perform the computation for the update step. Returns false if the layer must reset for a new training epoch. More... | |
Protected lifecycle functions | |
| Layer (Layer &&other)=default | |
| Layer (Layer const &other) | |
| Layer & | operator= (Layer &&other)=default |
| Layer & | operator= (Layer const &other) |
Weights-related accessors | |
| void | add_weights (ViewingWeightsPtr w) |
| size_t | num_weights () const noexcept |
| bool | has_weights () const noexcept |
| bool | has_weights (size_t idx) const noexcept |
| void | set_num_weights (size_t n) |
| void | set_weights (size_t idx, ViewingWeightsPtr w) |
| weights const & | get_weights (size_t idx) const |
| weights & | get_weights (size_t idx) |
| void | add_as_gradient_source () |
| void | remove_as_gradient_source () |
Protected Attributes | |
| int | m_expected_num_parent_layers = 1 |
| int | m_expected_num_child_layers = 1 |
| Expected number of child layers. A negative value indicates no limit. More... | |
| model * | m_model = nullptr |
| Reference to model managing this layer. More... | |
| bool | m_frozen |
| Avoid back prop if frozen. More... | |
| EvalType | m_fp_time |
| Time spent in forward propagation. More... | |
| EvalType | m_fp_compute_time |
| Time spent in the forward propagation computation. More... | |
| EvalType | m_bp_time |
| Time spent in backward propagation. More... | |
| EvalType | m_bp_compute_time |
| Time spent in the backward propagation computation. More... | |
| EvalType | m_update_time |
| Time spent in updates. More... | |
| std::string | m_name |
| Layer instance's name. Each layer in a model should have a unique, preferably human-readable, name. More... | |
| bool | m_runs_inplace = false |
| If true, the layer will run in-place (the input and output activations point to the same tensor). Value is set during graph setup (in setup_pointers) based on layer traits and neighboring layers. More... | |
| int | m_grid_tag = -1 |
| Identifying tag for process grid. More... | |
| SubGraphCommunication | subgraph_communication_method = PT2PT |
| bool | m_subgraph_parallelism_execution = false |
| bool | run_layer_in_subgraph = false |
| std::unique_ptr< std::set< int > > | m_subgrid_ranks |
| El::Int | m_num_spliting_groups = 1 |
| std::shared_ptr< El::mpi::Comm > | m_interSubGridVCComm |
Private Member Functions | |
| virtual void | write_specific_proto (lbann_data::Layer &proto) const =0 |
| Add layer specific data to prototext. More... | |
Private Attributes | |
| std::vector< ViewingLayerPtr > | m_parent_layers |
| References to parent layers. More... | |
| std::vector< ViewingLayerPtr > | m_child_layers |
| References to child layers. More... | |
| std::vector< ViewingWeightsPtr > | m_weights |
| References to layer weights. More... | |
| std::vector< std::vector< int > > | m_output_dims_list |
| Dimensions of output tensors. More... | |
| ViewingLayerPtr | m_hint_layer |
| Hint layer. During setup, the output tensor dimensions are set to match the first output tensor of the hint layer. Derived classes may do more elaborate setup based on the hint layer. More... | |
| ParallelStrategy | m_parallel_strategy |
| Parallel strategy for the layer. More... | |
Friends | |
| class | callback::sync_layers |
| class | KFAC |
| template<hydrogen::Device Device> | |
| class | kfac_block_fc_conv |
| template<hydrogen::Device Device> | |
| class | kfac_block_channelwise_fc |
| template<hydrogen::Device Device> | |
| class | kfac_block_bn |
| template<hydrogen::Device Device> | |
| class | kfac_block_gru |
Implementation details of back-prop. | |
| void | attempt_move_error_signal (Layer &parent, Layer const &child, std::unique_ptr< BaseDistMat > signal) |
| Move error signals from a child to its parent. More... | |
| void | attempt_view_error_signal (Layer &parent, Layer const &child, const BaseDistMat &signals) |
| void | deep_copy_error_signal (Layer &parent, Layer const &child, const BaseDistMat &signals) |
| virtual void | back_prop_impl_ ()=0 |
| Computes the core back-prop steps. More... | |
| virtual void | allocate_new_gradients_ ()=0 |
| Allocates new storage for the gradients that this layer will compute. More... | |
| virtual void | propagate_error_signals_to_parents_ ()=0 |
| Moves all error signals to their respective parents. More... | |
| virtual void | clear_prev_error_signals_ ()=0 |
| Releases the error signals propagated from the child layers. More... | |
| virtual void | move_or_copy_prev_error_signal_ (const Layer &child, std::unique_ptr< El::BaseDistMatrix > signal)=0 |
| Assumes ownership of the error signals from the specified child layer. More... | |
| virtual void | view_or_copy_prev_error_signal_ (const Layer &child, const El::BaseDistMatrix &signal)=0 |
| Attempts to view the error signals from the specified child layer. More... | |
| virtual void | deep_copy_prev_error_signal_ (const Layer &child, const El::BaseDistMatrix &signal)=0 |
| Deep-copy the error signals from the specified child layer. More... | |
Neural network tensor operation.
A layer takes input tensors ("previous activations") and applies a mathematical operation to obtain output tensors ("activations"). This operation often has trainable parameters called "weights." The previous activations are recieved from "parent layers" and the activations are sent to "child layers," making each layer a node in a directed graph. The layer graph and the weights are managed by a neural network model class. A layer should also be able to take objective function gradients w.r.t. the outputs ("previous error signals") and compute the objective function gradients w.r.t. the inputs ("error signals") and w.r.t. the weights. This allows the model to perform automatic differentiation and to apply first-order optimization methods to the weights.
| lbann::Layer::Layer | ( | ) |
|
virtualdefault |
|
protecteddefault |
|
protected |
|
protected |
| void lbann::Layer::add_child_layer | ( | ViewingLayerPtr | child | ) |
Add a child layer.
Does nothing if child is a null pointer, the same layer, or already a child.
| void lbann::Layer::add_parent_layer | ( | ViewingLayerPtr | parent | ) |
Add a parent layer.
Does nothing if parent is a null pointer, the same layer, or already a parent.
|
inlineprotected |
|
privatepure virtual |
Allocates new storage for the gradients that this layer will compute.
If the layer has persistent error signal information, this will simply clear the gradients.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
| void lbann::Layer::back_prop | ( | ) |
Backward propagation step. Given the objective function gradients w.r.t. the output tensors, compute the gradients w.r.t. the input tensors and w.r.t. the weights. This is essentially an application of the chain rule.
|
privatepure virtual |
Computes the core back-prop steps.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inlineprotectedvirtual |
Compute objective funciton gradients. Called by the 'back_prop' function. Given the input, output, and gradient w.r.t. output tensors, the gradient w.r.t. input tensors are populated with the computed values and the gradients w.r.t. the weights are sent to the appropriate optimizers.
Reimplemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, lbann::data_type_layer< TensorDataType >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::PermuteLayer< T >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::abstract_evaluation_layer< TensorDataType >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, and lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >.
|
protectedpure virtual |
Setup gradient w.r.t. input tensors. Called by the 'back_prop' function. Each gradient w.r.t. input tensor is resized to match the mini-batch size.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, lbann::data_type_layer< TensorDataType >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, and lbann::slice_layer< TensorDataType, Layout, Device >.
|
inlinevirtual |
If True, the computation can run in-place (feeding each input activations tensor as the corresponding output activations)
Reimplemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::PermuteLayer< T >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
|
virtual |
Check that the setup is reasonable.
Reimplemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inline |
|
inline |
|
privatepure virtual |
Releases the error signals propagated from the child layers.
At the conclusion of back-prop, the error signals propagated from the child layers are no longer needed. This ensures that the memory is released.
This function may do other work, but must respect the persistent error signal flag.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
pure virtual |
Copy function. This function dynamically allocates memory for a layer instance and instantiates a copy. The caller is responsible for deallocating the instance.
Implemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::PermuteLayer< T >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, and lbann::identity_zero_layer< TensorDataType, T_layout, Dev >.
|
pure virtual |
|
privatepure virtual |
Deep-copy the error signals from the specified child layer.
| child | The layer whence the signal is coming. |
| signal | The error signals being sent to this layer. |
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inline |
| size_t lbann::Layer::find_child_layer_index | ( | const Layer & | l | ) | const |
| size_t lbann::Layer::find_parent_layer_index | ( | const Layer & | l | ) | const |
|
pure virtual |
Forward propagation step. Apply a mathematical operation to input tensors to obtain output tensors.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
protectedpure virtual |
Apply layer operation. Called by the 'forward_prop' function. Given the input tensors, the output tensors are populated with computed values.
Implemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::PermuteLayer< T >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::abstract_evaluation_layer< TensorDataType >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, and lbann::identity_zero_layer< TensorDataType, T_layout, Dev >.
|
protectedpure virtual |
Setup input tensors. Called by the 'forward_prop' function. Each input tensor is setup as a view or copy of the corresponding parent layer's output tensor.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
protectedpure virtual |
Setup output tensors. Called by the 'forward_prop' function. Each output tensor is resized to match the mini-batch size.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, lbann::data_type_layer< TensorDataType >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, and lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >.
| void lbann::Layer::freeze | ( | ) |
|
pure virtual |
Get activation tensor corresponding to child layer.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inlinevirtual |
Returns the necessary tensors for computing backpropagation.
Reimplemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::PermuteLayer< T >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
| const Layer& lbann::Layer::get_child_layer | ( | size_t | index = 0 | ) | const |
| ViewingLayerPtr lbann::Layer::get_child_layer_pointer | ( | size_t | index | ) | const |
| std::vector<const Layer*> lbann::Layer::get_child_layers | ( | ) | const |
| lbann_comm* lbann::Layer::get_comm | ( | ) | const |
Get reference to LBANN communicator.
|
inline |
|
pure virtual |
Get data layout of the data tensors. We assume that the data layouts of the previous activations, activations, previous error signals, and error signals are the same. Each concrete layer that is templated on its data layout should override this function to return its template parameter.
Implemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::PermuteLayer< T >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
|
pure virtual |
Get a string representing the layer datatype.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
virtual |
Human-readable description.
Reimplemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::base_convolution_layer< TensorDataType, Device >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::PermuteLayer< T >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, and lbann::constant_layer< TensorDataType, T_layout, Dev >.
|
pure virtual |
Get the device allocation for the data tensors. We assume that the decice allocation of the previous activations, activations, previous error signals, and error signals are the same. Each concrete layer that is templated on its device allocation should override this function to return its template parameter.
Implemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::PermuteLayer< T >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
|
pure virtual |
Get error signal tensor corresponding to parent layer.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inlinenoexcept |
|
inlinenoexcept |
|
noexcept |
Identifying tag for process grid.
| const Layer* lbann::Layer::get_hint_layer | ( | ) | const |
Get hint layer.
| std::vector<int> lbann::Layer::get_input_dims | ( | size_t | input_index = 0 | ) | const |
Get input tensor dimensions.
| int lbann::Layer::get_input_size | ( | size_t | input_index = 0 | ) | const |
Get input tensor size.
|
virtual |
List of pointers to other layers.
|
inlinenoexcept |
|
inline |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
| std::vector<int> lbann::Layer::get_output_dims | ( | size_t | output_index = 0 | ) | const |
Get output tensor dimensions.
| int lbann::Layer::get_output_size | ( | size_t | output_index = 0 | ) | const |
Get output tensor size.
|
inlinenoexcept |
|
inlinenoexcept |
| const Layer& lbann::Layer::get_parent_layer | ( | size_t | index = 0 | ) | const |
| ViewingLayerPtr lbann::Layer::get_parent_layer_pointer | ( | size_t | index | ) | const |
| std::vector<const Layer*> lbann::Layer::get_parent_layers | ( | ) | const |
|
inlinenoexcept |
|
pure virtual |
Get the layer type's name.
A layer type name should be brief, unique, and human-readable description of the layer's mathematical operation that is recognizable to ML practitioners (e.g., "Convolution", "ReLU")
Implemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::PermuteLayer< T >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
|
protected |
|
protected |
| std::vector<ViewingWeightsPtr> lbann::Layer::get_weights_pointers | ( | ) | const |
List of pointers to weights.
|
inlineprotectednoexcept |
|
inlineprotectednoexcept |
| El::Int lbann::Layer::infer_mini_batch_size_from_parents | ( | ) | const |
|
pure virtual |
| bool lbann::Layer::is_frozen | ( | ) | const |
|
privatepure virtual |
Assumes ownership of the error signals from the specified child layer.
This is a simple pointer move when possible; otherwise it is a deep-copy of the signal data.
| child | The layer whence the signal is coming. |
| signal | The error signals being sent to this layer. |
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
inlineprotectednoexcept |
|
privatepure virtual |
Moves all error signals to their respective parents.
Error signals from this instances either are directly moved into the parent layer or, in cases in which a direct move is not possible, are deep-copied into a new tensor in the parent layer (e.g., into a different data type or data distribution).
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
protected |
| void lbann::Layer::replace_child_layer | ( | ViewingLayerPtr | l, |
| size_t | index | ||
| ) |
| void lbann::Layer::replace_parent_layer | ( | ViewingLayerPtr | l, |
| size_t | index | ||
| ) |
| void lbann::Layer::replace_weights | ( | Layer const & | other_layer | ) |
Replace weights with another Layer's weights.
| void lbann::Layer::reset_counters | ( | ) |
Reset layer stat counters.
|
inline |
|
inline |
| void lbann::Layer::serialize | ( | ArchiveT & | ar | ) |
|
inline |
| void lbann::Layer::set_grid_tag | ( | int | tag | ) |
Set process grid.
| void lbann::Layer::set_hint_layer | ( | ViewingLayerPtr | l | ) |
Set hint layer.
Properties of the hint layer are used during the setup phase. For instance, the output tensor dimensions are set to match the hint layer's first output tensor.
|
pure virtual |
Set whether to keep or dynamically reallocate error signals.
Passing a value of true means to keep the error signals; false means to dynamically reallocate them.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
virtual |
Set list of pointers to other layers.
Input should match output of get_layer_pointers .
|
inline |
|
inline |
|
inline |
|
inlineprotected |
| void lbann::Layer::set_output_dims | ( | std::vector< int > | dims, |
| size_t | output_index = 0 |
||
| ) |
Set output tensor dimensions.
|
inline |
|
inlineprotected |
| void lbann::Layer::set_weights_pointers | ( | std::vector< ViewingWeightsPtr > | ptrs | ) |
Set list of pointers to weights.
|
virtual |
Setup layer members.
This calls the 'setup_pointers', 'setup_dims', 'setup_matrices', 'setup_data', and 'setup_gpu' (if needed) functions. It is assumed that pointers to parent/child layers have already been initialized.
|
inlineprotectedvirtual |
Setup layer data. Called by the 'setup' function. Memory is allocated for distributed matrices.
Reimplemented in lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, lbann::data_type_layer< TensorDataType >, lbann::base_convolution_layer< TensorDataType, Device >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::abstract_evaluation_layer< TensorDataType >, and lbann::mini_batch_size_layer< TensorDataType, Layout, Device >.
|
protectedvirtual |
Setup tensor dimensions Called by the 'setup' function. If there are any input tensors, the base method sets all uninitialized output tensor dimensions equal to the first input tensor dimensions.
Reimplemented in lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::base_convolution_layer< TensorDataType, Device >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::PermuteLayer< T >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::abstract_evaluation_layer< TensorDataType >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, and lbann::identity_zero_layer< TensorDataType, T_layout, Dev >.
|
inlineprotectedvirtual |
Setup GPU objects. Called by the 'setup' function if the layer is on GPUs.
Reimplemented in lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::base_convolution_layer< TensorDataType, Device >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, and lbann::dropout< TensorDataType, T_layout, Dev >.
Definition at line 782 of file layer.hpp.
|
protected |
Setup process grid.
|
protectedpure virtual |
Setup buffers for layer inputs and outputs.
Called by the 'setup' function. Each column of these distributed matrices is interpreted as the flattened tensor for a mini-batch sample. The matrices themselves are constructed by calling the 'construct_matrix' function. If any matrices have already been setup, they are destroyed and reinstantiated.
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
|
protectedvirtual |
Setup layer pointers. Called by the 'setup' function. Pointers to parent/child layers are assumed to be already initialized.
Reimplemented in lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_layer< TensorDataType, Dev >.
|
inlinenoexcept |
|
pure virtual |
| void lbann::Layer::summarize_stats | ( | lbann_summary & | summarizer, |
| int | step | ||
| ) |
| void lbann::Layer::unfreeze | ( | ) |
| bool lbann::Layer::update | ( | ) |
Update step. Update the layer's internal members. Note that the optimization step for the weights happens elsewhere.
|
inlineprotectedvirtual |
|
inlinenoexcept |
|
privatepure virtual |
Attempts to view the error signals from the specified child layer.
This is a simple data view when possible; otherwise it is a deep-copy of the signal data.
| child | The layer whence the signal is coming. |
| signal | The error signals being sent to this layer. |
Implemented in lbann::data_type_layer< InputTensorDataType, OutputTensorDataType >, lbann::data_type_layer< InputT, OutputT >, lbann::data_type_layer< T >, and lbann::data_type_layer< TensorDataType >.
| void lbann::Layer::write_proto | ( | lbann_data::Layer & | proto | ) | const |
Write layer to proto file.
|
privatepure virtual |
Add layer specific data to prototext.
Implemented in lbann::pooling_layer< TensorDataType, T_layout, Dev >, lbann::batch_normalization_layer< TensorDataType, T_layout, Dev >, lbann::softmax_layer< TensorDataType, Layout, Device >, lbann::input_layer< TensorDataType, T_layout, Dev >, lbann::crop_layer< TensorDataType, T_layout, Dev >, lbann::tessellate_layer< TensorDataType, Layout, Device >, lbann::local_response_normalization_layer< TensorDataType, T_layout, Dev >, lbann::cross_entropy_layer< TensorDataType, T_layout, Dev >, lbann::log_softmax_layer< TensorDataType, Layout, Device >, lbann::mean_squared_error_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_fully_connected_layer< TensorDataType, Layout, Device >, lbann::dropout< TensorDataType, T_layout, Dev >, lbann::entrywise_batch_normalization_layer< TensorDataType, Layout, Device >, lbann::evaluation_layer< TensorDataType, T_layout, Dev >, lbann::gather_layer< TensorDataType, Layout, Device >, lbann::scatter_layer< TensorDataType, Layout, Device >, lbann::unpooling_layer< TensorDataType, T_layout, Dev >, lbann::convolution_layer< TensorDataType, Layout, Device >, lbann::leaky_relu_layer< TensorDataType, Layout, Device >, lbann::fully_connected_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::deconvolution_layer< TensorDataType, Layout, Device >, lbann::covariance_layer< TensorDataType, Layout, Device >, lbann::embedding_layer< TensorDataType, Layout, Device >, lbann::l1_norm_layer< TensorDataType, T_layout, Dev >, lbann::l2_norm2_layer< TensorDataType, T_layout, Dev >, lbann::matmul_layer< TensorDataType, Layout, Device >, lbann::mean_absolute_error_layer< TensorDataType, T_layout, Dev >, lbann::variance_layer< TensorDataType, Layout, Device >, lbann::entrywise_scale_bias_layer< TensorDataType, Layout, Device >, lbann::gru_layer< TensorDataType, Layout, Device >, lbann::split_layer< TensorDataType, T_layout, Dev >, lbann::relu_layer< TensorDataType, T_layout, Dev >, lbann::selu_dropout< TensorDataType, T_layout, Dev >, lbann::layer_norm_layer< TensorDataType, Layout, Device >, lbann::OperatorLayer< InputT, OutputT, Layout, D >, lbann::uniform_layer< TensorDataType, T_layout, Dev >, lbann::concatenate_layer< TensorDataType, Layout, Device >, lbann::gaussian_layer< TensorDataType, T_layout, Dev >, lbann::composite_image_transformation_layer< TensorDataType, Layout, Device >, lbann::reduction_layer< TensorDataType, Layout, Device >, lbann::slice_layer< TensorDataType, Layout, Device >, lbann::top_k_categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::PermuteLayer< T >, lbann::in_top_k_layer< TensorDataType, T_layout, Dev >, lbann::elu_layer< TensorDataType, Layout, Device >, lbann::instance_norm_layer< TensorDataType, Layout, Device >, lbann::discrete_random_layer< TensorDataType, T_layout, Dev >, lbann::categorical_accuracy_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_softmax_layer< TensorDataType, Layout, Device >, lbann::rowwise_weights_norms_layer< TensorDataType, Layout, Device >, lbann::identity_layer< TensorDataType, Layout, Device >, lbann::cutout_layer< TensorDataType, Layout, Device >, lbann::dummy_layer< TensorDataType, T_layout, Dev >, lbann::sum_layer< TensorDataType, T_layout, Dev >, lbann::weighted_sum_layer< TensorDataType, T_layout, Dev >, lbann::bernoulli_layer< TensorDataType, T_layout, Dev >, lbann::rotation_layer< TensorDataType, Layout, Device >, lbann::categorical_random_layer< TensorDataType, T_layout, Dev >, lbann::sort_layer< TensorDataType, T_layout, Dev >, lbann::weights_layer< TensorDataType, Layout, Device >, lbann::bilinear_resize_layer< TensorDataType, Layout, Device >, lbann::uniform_hash_layer< TensorDataType, Layout, Device >, lbann::identity_zero_layer< TensorDataType, T_layout, Dev >, lbann::channelwise_mean_layer< TensorDataType, Layout, Device >, lbann::constant_layer< TensorDataType, T_layout, Dev >, lbann::hadamard_layer< TensorDataType, T_layout, Dev >, lbann::one_hot_layer< TensorDataType, Layout, Device >, lbann::stop_gradient_layer< TensorDataType, T_layout, Dev >, lbann::reshape_layer< TensorDataType, T_layout, Dev >, lbann::argmax_layer< TensorDataType, Layout, Device >, lbann::batchwise_reduce_sum_layer< TensorDataType, Layout, Device >, lbann::argmin_layer< TensorDataType, Layout, Device >, lbann::mini_batch_index_layer< TensorDataType, Layout, Device >, lbann::mini_batch_size_layer< TensorDataType, Layout, Device >, lbann::cross_grid_sum_layer< TensorDataType, Dev >, and lbann::cross_grid_sum_slice_layer< TensorDataType, Dev >.
|
friend |
Move error signals from a child to its parent.
This is a hacky workaround to C++ rules for protected member functions. No error-checking is done, e.g., to assert that the two layers actually have a parent-child relationship because this is just an implementation detail. The symbol is never exposed to the public API.
| parent | The parent layer, into which the signal is moved |
| child | The child layer, from which the signal is moved |
| signal | The now-released error signal from the child layer |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
|
protected |
|
private |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Identifying tag for process grid.
If the tag is negative, the process grid is chosen based on heuristics. In particular, the layer will attempt to use the same grid as its parent layers, reverting to the trainer grid if not possible.
|
private |
|
protected |
|
protected |
|
protected |
|
private |
|
private |
|
private |
|
protected |
|
protected |
|
protected |
|
protected |
|
private |
References to layer weights.
These are references to the base weights objects. The tensor data type for weights storage might differ from the tensor data type of this layer's tensors. To ensure consistency, we must only access weights values through the WeightsProxy class during training.
|
protected |
|
protected |