32 "[1,32,0,1 Ct5,5,16 Mp4,4 Ct1,1,16 Ct3,3,128 Mp4,1 Ct1,1,64 S2,1 "
34 "no-lstm",
"eng/eng.unicharset",
"eng.Arial.exp0.lstmf",
false,
false, 2e-4,
false,
"eng");
36 EXPECT_LT(non_lstm_err, 98);
37 LOG(
INFO) <<
"********** Expected < 98 ************\n";
40 SetupTrainerEng(
"[1,1,0,32 Lfx100 O1c1]",
"1D-lstm",
false,
false);
42 EXPECT_LT(lstm_uni_err, 86);
43 LOG(
INFO) <<
"********** Expected < 86 ************\n";
46 EXPECT_LT(lstm_uni_err, non_lstm_err);
52 SetupTrainerEng(
"[1,32,0,3 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2D-color-lstm",
true,
true);
54 EXPECT_LT(lstm_uni_err, 85);
56 LOG(
INFO) <<
"********** Expected < 85 ************\n";
61 SetupTrainerEng(
"[1,1,0,32 Lbx100 O1c1]",
"bidi-lstm",
false,
false);
63 EXPECT_LT(lstm_bi_err, 75);
64 LOG(
INFO) <<
"********** Expected < 75 ************\n";
74 SetupTrainerEng(
"[1,32,0,1 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2-D-2-layer-lstm",
false,
77 EXPECT_LT(lstm_2d_err, 98);
79 LOG(
INFO) <<
"********** Expected < 98 ************\n";
89 SetupTrainerEng(
"[1,32,0,1 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2-D-2-layer-lstm",
false,
92 EXPECT_LT(lstm_2d_err, 70);
93 LOG(
INFO) <<
"********** Expected < 70 ************\n";
100 "[1,30,0,1 Ct5,5,16 Mp2,2 L2xy24 Ct1,1,48 Mp5,1 Ct1,1,32 S3,1 Lbx64 "
102 "2-D-2-layer-lstm",
false,
true);
104 LOG(
INFO) <<
"********** *** ************\n";
110 SetupTrainerEng(
"[1,32,0,1 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2-D-2-layer-lstm",
false,
113 double act_error_a = trainer_->ActivationError();
114 double char_error_a = trainer_->CharError();
115 std::vector<char> trainer_a_data;
116 EXPECT_TRUE(trainer_->SaveTrainingDump(
NO_BEST_TRAINER, *trainer_, &trainer_a_data));
117 SetupTrainerEng(
"[1,32,0,1 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2-D-2-layer-lstm",
false,
120 double act_error_b = trainer_->ActivationError();
121 double char_error_b = trainer_->CharError();
122 EXPECT_FLOAT_EQ(lstm_2d_err_a, lstm_2d_err_b);
123 EXPECT_FLOAT_EQ(act_error_a, act_error_b);
124 EXPECT_FLOAT_EQ(char_error_a, char_error_b);
127 act_error_b = trainer_->ActivationError();
128 char_error_b = trainer_->CharError();
130 SetupTrainerEng(
"[1,32,0,1 S4,2 L2xy16 Ct1,1,16 S8,1 Lbx100 O1c1]",
"2-D-2-layer-lstm",
false,
132 EXPECT_TRUE(trainer_->ReadTrainingDump(trainer_a_data, *trainer_));
134 act_error_a = trainer_->ActivationError();
135 char_error_a = trainer_->CharError();
136 EXPECT_FLOAT_EQ(lstm_2d_err_a, lstm_2d_err_b);
137 EXPECT_FLOAT_EQ(act_error_a, act_error_b);
138 EXPECT_FLOAT_EQ(char_error_a, char_error_b);
139 LOG(
INFO) <<
"********** *** ************\n";
145 SetupTrainerEng(
"[1,1,0,32 Lfx96 O1c1]",
"1D-lstm",
false,
true);
147 EXPECT_LT(lstm_uni_err, 60);
149 LOG(
INFO) <<
"********** Expected < 60 ************\n";
156 LOG(
INFO) <<
"Delta in Int mode error rates = " << delta <<
"\n";
157 EXPECT_LT(delta, 0.01);
165 SetupTrainerEng(
"[1,1,0,32 LS96]",
"Lstm-+-softmax",
false,
true);
167 EXPECT_LT(lstm_sm_err, 49.0);
168 LOG(
INFO) <<
"********** Expected < 49 ************\n";
177 SetupTrainerEng(
"[1,1,0,32 LE96]",
"Lstm-+-softmax",
false,
true);
179 EXPECT_LT(lstm_sm_err, 62.0);
180 LOG(
INFO) <<
"********** Expected < 62 ************\n";
188 SetupTrainerEng(
"[1,32,0,1 Ct5,5,16 Mp2,2 Lfys32 Lbx128 O1c1]",
"SQU-lstm",
false,
false);
190 const size_t kNumLayers = 8;
192 const char *kLayerIds[kNumLayers] = {
":0",
":1:0",
":1:1",
":2",
":3:0",
":4:0",
":4:1:0",
":5"};
193 const char *kLayerNames[kNumLayers] = {
"Input",
"Convolve",
"ConvNL",
"Maxpool",
194 "Lfys32",
"Lbx128LTR",
"Lbx128",
"Output"};
196 const int kNumWeights[kNumLayers] = {0,
200 32 * (4 * (32 + 16 + 1)),
201 128 * (4 * (128 + 32 + 1)),
202 128 * (4 * (128 + 32 + 1)),
203 112 * (2 * 128 + 1)};
205 auto layers = trainer_->EnumerateLayers();
206 EXPECT_EQ(kNumLayers, layers.size());
207 for (
unsigned i = 0; i < kNumLayers && i < layers.size(); ++i) {
208 EXPECT_STREQ(kLayerIds[i], layers[i].c_str());
209 EXPECT_STREQ(kLayerNames[i], trainer_->GetLayer(layers[i])->name().c_str());
210 EXPECT_EQ(kNumWeights[i], trainer_->GetLayer(layers[i])->num_weights());
const int kTrainerIterations
TEST_F(EuroText, FastLatinOCR)