tesseract  5.0.0-alpha-619-ge9db
tesseract::FullyConnected Class Reference

#include <fullyconnected.h>

Inheritance diagram for tesseract::FullyConnected:
tesseract::Network

Public Member Functions

 FullyConnected (const STRING &name, int ni, int no, NetworkType type)
 
 ~FullyConnected () override=default
 
StaticShape OutputShape (const StaticShape &input_shape) const override
 
STRING spec () const override
 
void ChangeType (NetworkType type)
 
void SetEnableTraining (TrainingState state) override
 
int InitWeights (float range, TRand *randomizer) override
 
int RemapOutputs (int old_no, const std::vector< int > &code_map) override
 
void ConvertToInt () override
 
void DebugWeights () override
 
bool Serialize (TFile *fp) const override
 
bool DeSerialize (TFile *fp) override
 
void Forward (bool debug, const NetworkIO &input, const TransposedArray *input_transpose, NetworkScratch *scratch, NetworkIO *output) override
 
void SetupForward (const NetworkIO &input, const TransposedArray *input_transpose)
 
void ForwardTimeStep (int t, double *output_line)
 
void ForwardTimeStep (const double *d_input, int t, double *output_line)
 
void ForwardTimeStep (const int8_t *i_input, int t, double *output_line)
 
bool Backward (bool debug, const NetworkIO &fwd_deltas, NetworkScratch *scratch, NetworkIO *back_deltas) override
 
void BackwardTimeStep (const NetworkIO &fwd_deltas, int t, double *curr_errors, TransposedArray *errors_t, double *backprop)
 
void FinishBackward (const TransposedArray &errors_t)
 
void Update (float learning_rate, float momentum, float adam_beta, int num_samples) override
 
void CountAlternators (const Network &other, double *same, double *changed) const override
 
- Public Member Functions inherited from tesseract::Network
 Network ()
 
 Network (NetworkType type, const STRING &name, int ni, int no)
 
virtual ~Network ()=default
 
NetworkType type () const
 
bool IsTraining () const
 
bool needs_to_backprop () const
 
int num_weights () const
 
int NumInputs () const
 
int NumOutputs () const
 
virtual StaticShape InputShape () const
 
const STRINGname () const
 
bool TestFlag (NetworkFlags flag) const
 
virtual bool IsPlumbingType () const
 
virtual void SetNetworkFlags (uint32_t flags)
 
virtual void SetRandomizer (TRand *randomizer)
 
virtual bool SetupNeedsBackprop (bool needs_backprop)
 
virtual int XScaleFactor () const
 
virtual void CacheXScaleFactor (int factor)
 
void DisplayForward (const NetworkIO &matrix)
 
void DisplayBackward (const NetworkIO &matrix)
 

Protected Attributes

WeightMatrix weights_
 
TransposedArray source_t_
 
const TransposedArrayexternal_source_
 
NetworkIO acts_
 
bool int_mode_
 
- Protected Attributes inherited from tesseract::Network
NetworkType type_
 
TrainingState training_
 
bool needs_to_backprop_
 
int32_t network_flags_
 
int32_t ni_
 
int32_t no_
 
int32_t num_weights_
 
STRING name_
 
ScrollViewforward_win_
 
ScrollViewbackward_win_
 
TRandrandomizer_
 

Additional Inherited Members

- Static Public Member Functions inherited from tesseract::Network
static NetworkCreateFromFile (TFile *fp)
 
static void ClearWindow (bool tess_coords, const char *window_name, int width, int height, ScrollView **window)
 
static int DisplayImage (Pix *pix, ScrollView *window)
 
- Protected Member Functions inherited from tesseract::Network
double Random (double range)
 

Detailed Description

Definition at line 28 of file fullyconnected.h.

Constructor & Destructor Documentation

◆ FullyConnected()

tesseract::FullyConnected::FullyConnected ( const STRING name,
int  ni,
int  no,
NetworkType  type 
)

Definition at line 38 of file fullyconnected.cpp.

40  : Network(type, name, ni, no), external_source_(nullptr), int_mode_(false) {
41 }

◆ ~FullyConnected()

tesseract::FullyConnected::~FullyConnected ( )
overridedefault

Member Function Documentation

◆ Backward()

bool tesseract::FullyConnected::Backward ( bool  debug,
const NetworkIO fwd_deltas,
NetworkScratch scratch,
NetworkIO back_deltas 
)
overridevirtual

Implements tesseract::Network.

Definition at line 220 of file fullyconnected.cpp.

222  {
223  if (debug) DisplayBackward(fwd_deltas);
224  back_deltas->Resize(fwd_deltas, ni_);
226  errors.init_to_size(kNumThreads, NetworkScratch::FloatVec());
227  for (int i = 0; i < kNumThreads; ++i) errors[i].Init(no_, scratch);
229  if (needs_to_backprop_) {
230  temp_backprops.init_to_size(kNumThreads, NetworkScratch::FloatVec());
231  for (int i = 0; i < kNumThreads; ++i) temp_backprops[i].Init(ni_, scratch);
232  }
233  int width = fwd_deltas.Width();
234  NetworkScratch::GradientStore errors_t;
235  errors_t.Init(no_, width, scratch);
236 #ifdef _OPENMP
237 #pragma omp parallel for num_threads(kNumThreads)
238  for (int t = 0; t < width; ++t) {
239  int thread_id = omp_get_thread_num();
240 #else
241  for (int t = 0; t < width; ++t) {
242  int thread_id = 0;
243 #endif
244  double* backprop = nullptr;
245  if (needs_to_backprop_) backprop = temp_backprops[thread_id];
246  double* curr_errors = errors[thread_id];
247  BackwardTimeStep(fwd_deltas, t, curr_errors, errors_t.get(), backprop);
248  if (backprop != nullptr) {
249  back_deltas->WriteTimeStep(t, backprop);
250  }
251  }
252  FinishBackward(*errors_t.get());
253  if (needs_to_backprop_) {
254  back_deltas->ZeroInvalidElements();
255 #if DEBUG_DETAIL > 0
256  tprintf("F Backprop:%s\n", name_.c_str());
257  back_deltas->Print(10);
258 #endif
259  return true;
260  }
261  return false; // No point going further back.
262 }

◆ BackwardTimeStep()

void tesseract::FullyConnected::BackwardTimeStep ( const NetworkIO fwd_deltas,
int  t,
double *  curr_errors,
TransposedArray errors_t,
double *  backprop 
)

Definition at line 264 of file fullyconnected.cpp.

267  {
268  if (type_ == NT_TANH)
269  acts_.FuncMultiply<GPrime>(fwd_deltas, t, curr_errors);
270  else if (type_ == NT_LOGISTIC)
271  acts_.FuncMultiply<FPrime>(fwd_deltas, t, curr_errors);
272  else if (type_ == NT_POSCLIP)
273  acts_.FuncMultiply<ClipFPrime>(fwd_deltas, t, curr_errors);
274  else if (type_ == NT_SYMCLIP)
275  acts_.FuncMultiply<ClipGPrime>(fwd_deltas, t, curr_errors);
276  else if (type_ == NT_RELU)
277  acts_.FuncMultiply<ReluPrime>(fwd_deltas, t, curr_errors);
278  else if (type_ == NT_SOFTMAX || type_ == NT_SOFTMAX_NO_CTC ||
279  type_ == NT_LINEAR)
280  fwd_deltas.ReadTimeStep(t, curr_errors); // fwd_deltas are the errors.
281  else
282  ASSERT_HOST("Invalid fully-connected type!" == nullptr);
283  // Generate backprop only if needed by the lower layer.
284  if (backprop != nullptr) weights_.VectorDotMatrix(curr_errors, backprop);
285  errors_t->WriteStrided(t, curr_errors);
286 }

◆ ChangeType()

void tesseract::FullyConnected::ChangeType ( NetworkType  type)
inline

Definition at line 60 of file fullyconnected.h.

60  {
61  type_ = type;
62  }

◆ ConvertToInt()

void tesseract::FullyConnected::ConvertToInt ( )
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 95 of file fullyconnected.cpp.

95  {
97 }

◆ CountAlternators()

void tesseract::FullyConnected::CountAlternators ( const Network other,
double *  same,
double *  changed 
) const
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 305 of file fullyconnected.cpp.

306  {
307  ASSERT_HOST(other.type() == type_);
308  const auto* fc = static_cast<const FullyConnected*>(&other);
309  weights_.CountAlternators(fc->weights_, same, changed);
310 }

◆ DebugWeights()

void tesseract::FullyConnected::DebugWeights ( )
overridevirtual

Implements tesseract::Network.

Definition at line 100 of file fullyconnected.cpp.

100  {
102 }

◆ DeSerialize()

bool tesseract::FullyConnected::DeSerialize ( TFile fp)
overridevirtual

Implements tesseract::Network.

Definition at line 112 of file fullyconnected.cpp.

112  {
113  return weights_.DeSerialize(IsTraining(), fp);
114 }

◆ FinishBackward()

void tesseract::FullyConnected::FinishBackward ( const TransposedArray errors_t)

Definition at line 288 of file fullyconnected.cpp.

288  {
289  if (external_source_ == nullptr)
290  weights_.SumOuterTransposed(errors_t, source_t_, true);
291  else
292  weights_.SumOuterTransposed(errors_t, *external_source_, true);
293 }

◆ Forward()

void tesseract::FullyConnected::Forward ( bool  debug,
const NetworkIO input,
const TransposedArray input_transpose,
NetworkScratch scratch,
NetworkIO output 
)
overridevirtual

Implements tesseract::Network.

Definition at line 118 of file fullyconnected.cpp.

120  {
121  int width = input.Width();
122  if (type_ == NT_SOFTMAX)
123  output->ResizeFloat(input, no_);
124  else
125  output->Resize(input, no_);
126  SetupForward(input, input_transpose);
128  temp_lines.init_to_size(kNumThreads, NetworkScratch::FloatVec());
130  curr_input.init_to_size(kNumThreads, NetworkScratch::FloatVec());
131  for (int i = 0; i < kNumThreads; ++i) {
132  temp_lines[i].Init(no_, scratch);
133  curr_input[i].Init(ni_, scratch);
134  }
135 #ifdef _OPENMP
136 #pragma omp parallel for num_threads(kNumThreads)
137  for (int t = 0; t < width; ++t) {
138  // Thread-local pointer to temporary storage.
139  int thread_id = omp_get_thread_num();
140 #else
141  for (int t = 0; t < width; ++t) {
142  // Thread-local pointer to temporary storage.
143  int thread_id = 0;
144 #endif
145  double* temp_line = temp_lines[thread_id];
146  if (input.int_mode()) {
147  ForwardTimeStep(input.i(t), t, temp_line);
148  } else {
149  input.ReadTimeStep(t, curr_input[thread_id]);
150  ForwardTimeStep(curr_input[thread_id], t, temp_line);
151  }
152  output->WriteTimeStep(t, temp_line);
153  if (IsTraining() && type_ != NT_SOFTMAX) {
154  acts_.CopyTimeStepFrom(t, *output, t);
155  }
156  }
157  // Zero all the elements that are in the padding around images that allows
158  // multiple different-sized images to exist in a single array.
159  // acts_ is only used if this is not a softmax op.
160  if (IsTraining() && type_ != NT_SOFTMAX) {
162  }
163  output->ZeroInvalidElements();
164 #if DEBUG_DETAIL > 0
165  tprintf("F Output:%s\n", name_.c_str());
166  output->Print(10);
167 #endif
168  if (debug) DisplayForward(*output);
169 }

◆ ForwardTimeStep() [1/3]

void tesseract::FullyConnected::ForwardTimeStep ( const double *  d_input,
int  t,
double *  output_line 
)

Definition at line 202 of file fullyconnected.cpp.

203  {
204  // input is copied to source_ line-by-line for cache coherency.
205  if (IsTraining() && external_source_ == nullptr)
206  source_t_.WriteStrided(t, d_input);
207  weights_.MatrixDotVector(d_input, output_line);
208  ForwardTimeStep(t, output_line);
209 }

◆ ForwardTimeStep() [2/3]

void tesseract::FullyConnected::ForwardTimeStep ( const int8_t *  i_input,
int  t,
double *  output_line 
)

Definition at line 211 of file fullyconnected.cpp.

212  {
213  // input is copied to source_ line-by-line for cache coherency.
214  weights_.MatrixDotVector(i_input, output_line);
215  ForwardTimeStep(t, output_line);
216 }

◆ ForwardTimeStep() [3/3]

void tesseract::FullyConnected::ForwardTimeStep ( int  t,
double *  output_line 
)

Definition at line 184 of file fullyconnected.cpp.

184  {
185  if (type_ == NT_TANH) {
186  FuncInplace<GFunc>(no_, output_line);
187  } else if (type_ == NT_LOGISTIC) {
188  FuncInplace<FFunc>(no_, output_line);
189  } else if (type_ == NT_POSCLIP) {
190  FuncInplace<ClipFFunc>(no_, output_line);
191  } else if (type_ == NT_SYMCLIP) {
192  FuncInplace<ClipGFunc>(no_, output_line);
193  } else if (type_ == NT_RELU) {
194  FuncInplace<Relu>(no_, output_line);
195  } else if (type_ == NT_SOFTMAX || type_ == NT_SOFTMAX_NO_CTC) {
196  SoftmaxInPlace(no_, output_line);
197  } else if (type_ != NT_LINEAR) {
198  ASSERT_HOST("Invalid fully-connected type!" == nullptr);
199  }
200 }

◆ InitWeights()

int tesseract::FullyConnected::InitWeights ( float  range,
TRand randomizer 
)
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 76 of file fullyconnected.cpp.

76  {
77  Network::SetRandomizer(randomizer);
79  range, randomizer);
80  return num_weights_;
81 }

◆ OutputShape()

StaticShape tesseract::FullyConnected::OutputShape ( const StaticShape input_shape) const
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 45 of file fullyconnected.cpp.

45  {
46  LossType loss_type = LT_NONE;
47  if (type_ == NT_SOFTMAX)
48  loss_type = LT_CTC;
49  else if (type_ == NT_SOFTMAX_NO_CTC)
50  loss_type = LT_SOFTMAX;
51  else if (type_ == NT_LOGISTIC)
52  loss_type = LT_LOGISTIC;
53  StaticShape result(input_shape);
54  result.set_depth(no_);
55  result.set_loss_type(loss_type);
56  return result;
57 }

◆ RemapOutputs()

int tesseract::FullyConnected::RemapOutputs ( int  old_no,
const std::vector< int > &  code_map 
)
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 86 of file fullyconnected.cpp.

86  {
87  if (type_ == NT_SOFTMAX && no_ == old_no) {
89  no_ = code_map.size();
90  }
91  return num_weights_;
92 }

◆ Serialize()

bool tesseract::FullyConnected::Serialize ( TFile fp) const
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 105 of file fullyconnected.cpp.

105  {
106  if (!Network::Serialize(fp)) return false;
107  if (!weights_.Serialize(IsTraining(), fp)) return false;
108  return true;
109 }

◆ SetEnableTraining()

void tesseract::FullyConnected::SetEnableTraining ( TrainingState  state)
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 60 of file fullyconnected.cpp.

60  {
61  if (state == TS_RE_ENABLE) {
62  // Enable only from temp disabled.
64  } else if (state == TS_TEMP_DISABLE) {
65  // Temp disable only from enabled.
66  if (training_ == TS_ENABLED) training_ = state;
67  } else {
68  if (state == TS_ENABLED && training_ != TS_ENABLED)
70  training_ = state;
71  }
72 }

◆ SetupForward()

void tesseract::FullyConnected::SetupForward ( const NetworkIO input,
const TransposedArray input_transpose 
)

Definition at line 172 of file fullyconnected.cpp.

173  {
174  // Softmax output is always float, so save the input type.
175  int_mode_ = input.int_mode();
176  if (IsTraining()) {
177  acts_.Resize(input, no_);
178  // Source_ is a transposed copy of input. It isn't needed if provided.
179  external_source_ = input_transpose;
180  if (external_source_ == nullptr) source_t_.ResizeNoInit(ni_, input.Width());
181  }
182 }

◆ spec()

STRING tesseract::FullyConnected::spec ( ) const
inlineoverridevirtual

Reimplemented from tesseract::Network.

Definition at line 37 of file fullyconnected.h.

37  {
38  STRING spec;
39  if (type_ == NT_TANH)
40  spec.add_str_int("Ft", no_);
41  else if (type_ == NT_LOGISTIC)
42  spec.add_str_int("Fs", no_);
43  else if (type_ == NT_RELU)
44  spec.add_str_int("Fr", no_);
45  else if (type_ == NT_LINEAR)
46  spec.add_str_int("Fl", no_);
47  else if (type_ == NT_POSCLIP)
48  spec.add_str_int("Fp", no_);
49  else if (type_ == NT_SYMCLIP)
50  spec.add_str_int("Fs", no_);
51  else if (type_ == NT_SOFTMAX)
52  spec.add_str_int("Fc", no_);
53  else
54  spec.add_str_int("Fm", no_);
55  return spec;
56  }

◆ Update()

void tesseract::FullyConnected::Update ( float  learning_rate,
float  momentum,
float  adam_beta,
int  num_samples 
)
overridevirtual

Reimplemented from tesseract::Network.

Definition at line 297 of file fullyconnected.cpp.

298  {
299  weights_.Update(learning_rate, momentum, adam_beta, num_samples);
300 }

Member Data Documentation

◆ acts_

NetworkIO tesseract::FullyConnected::acts_
protected

Definition at line 126 of file fullyconnected.h.

◆ external_source_

const TransposedArray* tesseract::FullyConnected::external_source_
protected

Definition at line 124 of file fullyconnected.h.

◆ int_mode_

bool tesseract::FullyConnected::int_mode_
protected

Definition at line 129 of file fullyconnected.h.

◆ source_t_

TransposedArray tesseract::FullyConnected::source_t_
protected

Definition at line 121 of file fullyconnected.h.

◆ weights_

WeightMatrix tesseract::FullyConnected::weights_
protected

Definition at line 119 of file fullyconnected.h.


The documentation for this class was generated from the following files:
tesseract::FullyConnected::external_source_
const TransposedArray * external_source_
Definition: fullyconnected.h:124
tesseract::FullyConnected::source_t_
TransposedArray source_t_
Definition: fullyconnected.h:121
tesseract::TS_ENABLED
Definition: network.h:95
tesseract::NT_POSCLIP
Definition: network.h:63
tesseract::WeightMatrix::CountAlternators
void CountAlternators(const WeightMatrix &other, double *same, double *changed) const
Definition: weightmatrix.cpp:346
tesseract::LT_CTC
Definition: static_shape.h:31
tesseract::FullyConnected::FinishBackward
void FinishBackward(const TransposedArray &errors_t)
Definition: fullyconnected.cpp:288
tesseract::Network::SetRandomizer
virtual void SetRandomizer(TRand *randomizer)
Definition: network.cpp:138
STRING::add_str_int
void add_str_int(const char *str, int number)
Definition: strngs.cpp:370
tesseract::Network::DisplayForward
void DisplayForward(const NetworkIO &matrix)
Definition: network.cpp:288
tesseract::NetworkIO::ZeroInvalidElements
void ZeroInvalidElements()
Definition: networkio.cpp:88
tesseract::NT_SOFTMAX_NO_CTC
Definition: network.h:69
tesseract::FullyConnected::SetupForward
void SetupForward(const NetworkIO &input, const TransposedArray *input_transpose)
Definition: fullyconnected.cpp:172
ASSERT_HOST
#define ASSERT_HOST(x)
Definition: errcode.h:87
tesseract::WeightMatrix::SumOuterTransposed
void SumOuterTransposed(const TransposedArray &u, const TransposedArray &v, bool parallel)
Definition: weightmatrix.cpp:284
tesseract::TransposedArray::WriteStrided
void WriteStrided(int t, const float *data)
Definition: weightmatrix.h:39
STRING
Definition: strngs.h:45
tesseract::WeightMatrix::Update
void Update(double learning_rate, double momentum, double adam_beta, int num_samples)
Definition: weightmatrix.cpp:314
tesseract::NetworkIO::FuncMultiply
void FuncMultiply(const NetworkIO &v_io, int t, double *product)
Definition: networkio.h:259
tesseract::Network::type
NetworkType type() const
Definition: network.h:112
tesseract::Network::needs_to_backprop_
bool needs_to_backprop_
Definition: network.h:295
tesseract::WeightMatrix::Debug2D
void Debug2D(const char *msg)
Definition: weightmatrix.cpp:377
tesseract::WeightMatrix::InitBackward
void InitBackward()
Definition: weightmatrix.cpp:153
tesseract::NT_SYMCLIP
Definition: network.h:64
tesseract::Network::TestFlag
bool TestFlag(NetworkFlags flag) const
Definition: network.h:144
tesseract::Network::IsTraining
bool IsTraining() const
Definition: network.h:115
tesseract::LT_NONE
Definition: static_shape.h:30
tesseract::FullyConnected::BackwardTimeStep
void BackwardTimeStep(const NetworkIO &fwd_deltas, int t, double *curr_errors, TransposedArray *errors_t, double *backprop)
Definition: fullyconnected.cpp:264
tesseract::Network::name_
STRING name_
Definition: network.h:300
tesseract::SoftmaxInPlace
void SoftmaxInPlace(int n, T *inout)
Definition: functions.h:146
tesseract::LossType
LossType
Definition: static_shape.h:29
tesseract::Network::type_
NetworkType type_
Definition: network.h:293
tesseract::NF_ADAM
Definition: network.h:88
tesseract::FullyConnected::weights_
WeightMatrix weights_
Definition: fullyconnected.h:119
STRING::c_str
const char * c_str() const
Definition: strngs.cpp:192
tesseract::FullyConnected::ForwardTimeStep
void ForwardTimeStep(int t, double *output_line)
Definition: fullyconnected.cpp:184
tesseract::WeightMatrix::DeSerialize
bool DeSerialize(bool training, TFile *fp)
Definition: weightmatrix.cpp:191
GENERIC_2D_ARRAY::ResizeNoInit
void ResizeNoInit(int size1, int size2, int pad=0)
Definition: matrix.h:90
tesseract::WeightMatrix::Serialize
bool Serialize(bool training, TFile *fp) const
Definition: weightmatrix.cpp:172
tesseract::NT_TANH
Definition: network.h:65
tesseract::NetworkIO::CopyTimeStepFrom
void CopyTimeStepFrom(int dest_t, const NetworkIO &src, int src_t)
Definition: networkio.cpp:383
tesseract::WeightMatrix::ConvertToInt
void ConvertToInt()
Definition: weightmatrix.cpp:125
tesseract::WeightMatrix::InitWeightsFloat
int InitWeightsFloat(int no, int ni, bool use_adam, float weight_range, TRand *randomizer)
Definition: weightmatrix.cpp:76
tesseract::Network::training_
TrainingState training_
Definition: network.h:294
tesseract::TS_RE_ENABLE
Definition: network.h:99
kNumThreads
const int kNumThreads
Definition: fullyconnected.cpp:33
tesseract::FullyConnected::acts_
NetworkIO acts_
Definition: fullyconnected.h:126
GenericVector
Definition: baseapi.h:40
tesseract::LT_SOFTMAX
Definition: static_shape.h:32
tesseract::WeightMatrix::RemapOutputs
int RemapOutputs(const std::vector< int > &code_map)
Definition: weightmatrix.cpp:97
tesseract::FullyConnected::spec
STRING spec() const override
Definition: fullyconnected.h:37
tesseract::Network::num_weights_
int32_t num_weights_
Definition: network.h:299
tesseract::WeightMatrix::MatrixDotVector
void MatrixDotVector(const double *u, double *v) const
Definition: weightmatrix.cpp:243
tesseract::NetworkIO::Resize
void Resize(const NetworkIO &src, int num_features)
Definition: networkio.h:45
tesseract::Network::name
const STRING & name() const
Definition: network.h:138
tesseract::NT_RELU
Definition: network.h:66
tesseract::TS_TEMP_DISABLE
Definition: network.h:97
GenericVector::init_to_size
void init_to_size(int size, const T &t)
Definition: genericvector.h:706
tesseract::WeightMatrix::VectorDotMatrix
void VectorDotMatrix(const double *u, double *v) const
Definition: weightmatrix.cpp:274
tprintf
DLLSYM void tprintf(const char *format,...)
Definition: tprintf.cpp:34
tesseract::NT_LINEAR
Definition: network.h:67
tesseract::Network::Serialize
virtual bool Serialize(TFile *fp) const
Definition: network.cpp:151
tesseract::NT_LOGISTIC
Definition: network.h:62
tesseract::Network::no_
int32_t no_
Definition: network.h:298
tesseract::Network::ni_
int32_t ni_
Definition: network.h:297
tesseract::Network::DisplayBackward
void DisplayBackward(const NetworkIO &matrix)
Definition: network.cpp:299
tesseract::LT_LOGISTIC
Definition: static_shape.h:33
tesseract::FullyConnected::int_mode_
bool int_mode_
Definition: fullyconnected.h:129
tesseract::NT_SOFTMAX
Definition: network.h:68
tesseract::Network::Network
Network()
Definition: network.cpp:76