18 #ifndef TESSERACT_LSTM_LSTMRECOGNIZER_H_
19 #define TESSERACT_LSTM_LSTMRECOGNIZER_H_
58 return network_->NumOutputs();
63 return training_iteration_;
68 return sample_iteration_;
73 return learning_rate_;
77 if (network_ ==
nullptr) {
81 shape = network_->OutputShape(shape);
102 auto *series =
static_cast<Series *
>(network_);
103 std::vector<std::string> layers;
111 auto *series =
static_cast<Series *
>(network_);
119 auto *series =
static_cast<Series *
>(network_);
122 return learning_rate_;
128 return network_str_.c_str();
144 learning_rate_ *= factor;
146 std::vector<std::string> layers = EnumerateLayers();
147 for (
auto &layer : layers) {
148 ScaleLayerLearningRate(layer, factor);
156 auto *series =
static_cast<Series *
>(network_);
164 learning_rate_ = learning_rate;
166 for (
auto &
id : EnumerateLayers()) {
167 SetLayerLearningRate(
id, learning_rate);
176 auto *series =
static_cast<Series *
>(network_);
183 network_->ConvertToInt();
190 return ccutil_.unicharset;
193 return ccutil_.unicharset;
210 sample_iteration_ = iteration;
214 return network_->NumInputs();
235 bool LoadRecoder(
TFile *fp);
251 void RecognizeLine(
const ImageData &image_data,
bool invert,
bool debug,
double worst_dict_cert,
253 int lstm_choice_amount = 5);
256 void OutputStats(
const NetworkIO &outputs,
float *min_output,
float *mean_output,
float *sd);
266 bool RecognizeLine(
const ImageData &image_data,
bool invert,
bool debug,
bool re_invert,
271 std::string DecodeLabels(
const std::vector<int> &labels);
275 void DisplayForward(
const NetworkIO &inputs,
const std::vector<int> &labels,
276 const std::vector<int> &label_coords,
const char *window_name,
282 void LabelsFromOutputs(
const NetworkIO &outputs, std::vector<int> *labels,
283 std::vector<int> *xcoords);
288 int64_t seed =
static_cast<int64_t
>(sample_iteration_) * 0x10000001;
289 randomizer_.set_seed(seed);
290 randomizer_.IntRand();
295 void DisplayLSTMOutput(
const std::vector<int> &labels,
const std::vector<int> &xcoords,
300 void DebugActivationPath(
const NetworkIO &outputs,
const std::vector<int> &labels,
301 const std::vector<int> &xcoords);
305 void DebugActivationRange(
const NetworkIO &outputs,
const char *label,
int best_choice,
306 int x_start,
int x_end);
310 void LabelsViaReEncode(
const NetworkIO &output, std::vector<int> *labels,
311 std::vector<int> *xcoords);
315 void LabelsViaSimpleText(
const NetworkIO &output, std::vector<int> *labels,
316 std::vector<int> *xcoords);
320 const char *DecodeLabel(
const std::vector<int> &labels,
unsigned start,
unsigned *end,
int *decoded);
324 const char *DecodeSingleLabel(
int label);
bool DeSerialize(bool swap, FILE *fp, std::vector< T > &data)
bool Serialize(FILE *fp, const std::vector< T > &data)
LossType OutputLossType() const
void SetLayerLearningRate(const std::string &id, float learning_rate)
float GetAdamBeta() const
bool SimpleTextOutput() const
NetworkScratch scratch_space_
const UNICHARSET & GetUnicharset() const
bool IsTensorFlow() const
void SetIteration(int iteration)
float GetMomentum() const
RecodeBeamSearch * search_
const char * GetNetwork() const
void ScaleLearningRate(double factor)
void ScaleLayerLearningRate(const std::string &id, double factor)
float learning_rate() const
const Dict * GetDict() const
int32_t training_iteration_
std::vector< std::string > EnumerateLayers() const
int training_iteration() const
int sample_iteration() const
float GetLayerLearningRate(const std::string &id) const
const UnicharCompress & GetRecoder() const
UNICHARSET & GetUnicharset()
int32_t sample_iteration_
Network * GetLayer(const std::string &id) const
void SetLearningRate(float learning_rate)
float LayerLearningRate(const char *id)
TESS_API void EnumerateLayers(const std::string *prefix, std::vector< std::string > &layers) const
void SetLayerLearningRate(const char *id, float learning_rate)
void ScaleLayerLearningRate(const char *id, double factor)
TESS_API Network * GetLayer(const char *id) const
LossType loss_type() const