Loading...
Searching...
No Matches
opennn::BackPropagation Struct Reference

#include <opennn/network/back_propagation.h>

Classes

struct  GradientSlice
 
struct  Metrics
 

Public Member Functions

 BackPropagation (Index, Loss &, Buffer *external_arena=nullptr, span< const Index > arena_offsets={}, Buffer *external_gradient=nullptr, span< const Index > gradient_arena_offsets={})
 
virtual ~BackPropagation ()=default
 
void set (Index, Loss &, Buffer *external_arena=nullptr, span< const Index > arena_offsets={}, Buffer *external_gradient=nullptr, span< const Index > gradient_arena_offsets={})
 
Loss * get_loss () const noexcept
 
Network * get_network () const
 
bool has_joint_gradient_arena () const noexcept
 
Index gradient_logical_bytes () const noexcept
 
const vector< GradientSlice > & get_gradient_slices () const noexcept
 
void link_parameter_gradients ()
 
void accumulate_output_deltas (size_t)
 
const TensorView & input_delta_addend (size_t layer, size_t input) const noexcept
 
TensorView & get_output_delta ()
 
const TensorView & get_output_delta () const
 

Static Public Member Functions

static vector< MemoryPoolEntry > make_co_planned_lifetimes (Loss &, Index batch_size)
 
static vector< MemoryPoolEntry > make_gradient_co_planned_lifetimes (Loss &)
 

Public Attributes

Buffer gradient
 
Buffer arena
 
vector< Buffer > layer_scratch_storage
 
Buffer execution_workspace {Device::CUDA}
 
vector< TensorView > output_deltas
 
vector< vector< TensorView > > slots
 
Index batch_size = 0
 
Metrics metrics
 

Friends

struct TrainingContext
 
class TrainingArenaPlan
 

Constructor & Destructor Documentation

◆ BackPropagation()

opennn::BackPropagation::BackPropagation ( Index ,
Loss & ,
Buffer * external_arena = nullptr,
span< const Index > arena_offsets = {},
Buffer * external_gradient = nullptr,
span< const Index > gradient_arena_offsets = {} )

◆ ~BackPropagation()

virtual opennn::BackPropagation::~BackPropagation ( )
virtualdefault

Member Function Documentation

◆ accumulate_output_deltas()

void opennn::BackPropagation::accumulate_output_deltas ( size_t )

◆ get_gradient_slices()

const vector< GradientSlice > & opennn::BackPropagation::get_gradient_slices ( ) const
inlinenoexcept

◆ get_loss()

Loss * opennn::BackPropagation::get_loss ( ) const
inlinenoexcept

◆ get_network()

Network * opennn::BackPropagation::get_network ( ) const

◆ get_output_delta() [1/2]

TensorView & opennn::BackPropagation::get_output_delta ( )

◆ get_output_delta() [2/2]

const TensorView & opennn::BackPropagation::get_output_delta ( ) const

◆ gradient_logical_bytes()

Index opennn::BackPropagation::gradient_logical_bytes ( ) const
inlinenoexcept

◆ has_joint_gradient_arena()

bool opennn::BackPropagation::has_joint_gradient_arena ( ) const
inlinenoexcept

◆ input_delta_addend()

const TensorView & opennn::BackPropagation::input_delta_addend ( size_t layer,
size_t input ) const
noexcept

◆ link_parameter_gradients()

void opennn::BackPropagation::link_parameter_gradients ( )

◆ make_co_planned_lifetimes()

static vector< MemoryPoolEntry > opennn::BackPropagation::make_co_planned_lifetimes ( Loss & ,
Index batch_size )
static

◆ make_gradient_co_planned_lifetimes()

static vector< MemoryPoolEntry > opennn::BackPropagation::make_gradient_co_planned_lifetimes ( Loss & )
static

◆ set()

void opennn::BackPropagation::set ( Index ,
Loss & ,
Buffer * external_arena = nullptr,
span< const Index > arena_offsets = {},
Buffer * external_gradient = nullptr,
span< const Index > gradient_arena_offsets = {} )

Friends And Related Symbol Documentation

◆ TrainingArenaPlan

friend class TrainingArenaPlan
friend

◆ TrainingContext

friend struct TrainingContext
friend

Member Data Documentation

◆ arena

Buffer opennn::BackPropagation::arena

◆ batch_size

Index opennn::BackPropagation::batch_size = 0

◆ execution_workspace

Buffer opennn::BackPropagation::execution_workspace {Device::CUDA}

◆ gradient

Buffer opennn::BackPropagation::gradient

◆ layer_scratch_storage

vector<Buffer> opennn::BackPropagation::layer_scratch_storage

◆ metrics

Metrics opennn::BackPropagation::metrics

◆ output_deltas

vector<TensorView> opennn::BackPropagation::output_deltas

◆ slots

vector<vector<TensorView> > opennn::BackPropagation::slots