19 #ifndef TESSERACT_LSTM_WEIGHTMATRIX_H_ 20 #define TESSERACT_LSTM_WEIGHTMATRIX_H_ 41 for (
int i = 0; i < size1; ++i)
put(i, t, data[i]);
45 for (
int i = 0; i < size1; ++i)
put(i, t, data[i]);
49 int num_features =
dim1();
51 for (
int y = 0; y < num_features; ++y) {
52 for (
int t = 0; t < width; ++t) {
53 if (num == 0 || t < num || t + num >= width) {
73 int InitWeightsFloat(
int no,
int ni,
bool use_adam,
float weight_range,
80 int RemapOutputs(
const std::vector<int>& code_map);
93 if (multiplier_ ==
nullptr)
return size;
94 return multiplier_->RoundInputs(size);
101 int NumOutputs()
const {
return int_mode_ ? wi_.dim1() : wf_.dim1(); }
105 double GetDW(
int i,
int j)
const {
return dw_(i, j); }
117 bool DeSerializeOld(
bool training,
TFile* fp);
124 void MatrixDotVector(
const double* u,
double* v)
const;
125 void MatrixDotVector(
const inT8* u,
double* v)
const;
133 void VectorDotMatrix(
const double* u,
double* v)
const;
142 void Update(
double learning_rate,
double momentum,
double adam_beta,
149 void CountAlternators(
const WeightMatrix& other,
double* same,
150 double* changed)
const;
152 void Debug2D(
const char* msg);
155 static double DotProduct(
const double* u,
const double* v,
int n);
169 bool add_bias_fwd,
bool skip_bias_back,
170 const double* u,
double* v);
193 std::unique_ptr<IntSimdMatrix> multiplier_;
198 #endif // TESSERACT_LSTM_WEIGHTMATRIX_H_
void put(ICOORD pos, const double &thing)
bool Serialize(FILE *fp) const
double GetDW(int i, int j) const
const double * GetWeights(int index) const
void WriteStrided(int t, const double *data)
void PrintUnTransposed(int num)
void Transpose(const GENERIC_2D_ARRAY< double > &input)
virtual int index(int column, int row) const
bool DeSerialize(bool swap, FILE *fp)
void MultiplyAccumulate(int n, const double *u, const double *v, double *out)
int RoundInputs(int size) const
void WriteStrided(int t, const float *data)