From 302e9fca596bb1cc0d0de58cc9957eaabd83161a Mon Sep 17 00:00:00 2001 From: Massimo Pennazio Date: Sun, 21 Jan 2024 18:07:51 +0100 Subject: [PATCH] Re-generated header with support for multi layers RNN architecture --- src/model_variant.hpp | 2813 +++++++++++++++++++++++++++++++++++------ 1 file changed, 2433 insertions(+), 380 deletions(-) diff --git a/src/model_variant.hpp b/src/model_variant.hpp index eff166e..ebdc5ee 100644 --- a/src/model_variant.hpp +++ b/src/model_variant.hpp @@ -2,64 +2,173 @@ #include #define MAX_INPUT_SIZE 3 +#define MAX_NUM_LAYERS 3 struct NullModel { static constexpr int input_size = 0; static constexpr int output_size = 0; }; -using ModelType_GRU_8_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_8_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_8_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_12_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_12_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_12_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_16_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_16_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_16_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_20_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_20_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_20_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_24_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_24_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_24_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_32_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_32_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_32_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_40_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_40_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_40_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_64_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_64_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_64_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_80_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_80_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_GRU_80_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_8_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_8_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_8_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_12_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_12_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_12_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_16_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_16_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_16_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_20_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_20_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_20_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_24_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_24_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_24_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_32_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_32_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_32_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_40_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_40_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_40_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_64_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_64_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_64_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_80_1 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_80_2 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelType_LSTM_80_3 = RTNeural::ModelT, RTNeural::DenseT>; -using ModelVariantType = std::variant; - -inline bool is_model_type_ModelType_GRU_8_1 (const nlohmann::json& model_json) { +using ModelType_in1_GRU_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_8_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_8_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_8_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_8_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_8_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_8_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_12_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_12_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_12_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_12_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_12_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_12_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_16_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_16_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_16_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_16_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_16_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_16_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_20_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_20_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_20_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_20_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_20_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_20_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_24_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_24_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_24_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_24_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_24_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_24_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_32_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_32_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_32_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_32_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_32_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_32_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_40_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_40_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_40_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_40_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_40_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_40_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_64_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_64_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_64_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_64_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_64_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_64_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_GRU_80_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_GRU_80_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_GRU_80_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in2_GRU_80_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_GRU_80_2 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in3_GRU_80_3 = RTNeural::ModelT, RTNeural::GRULayerT, RTNeural::GRULayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_8_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_8_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_8_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_8_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_8_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_8_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_8_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_12_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_12_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_12_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_12_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_12_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_12_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_12_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_16_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_16_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_16_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_16_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_16_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_16_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_16_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_20_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_20_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_20_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_20_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_20_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_20_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_20_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_24_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_24_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_24_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_24_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_24_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_24_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_24_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_32_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_32_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_32_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_32_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_32_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_32_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_32_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_40_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_40_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_40_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_40_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_40_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_40_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_40_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_64_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_64_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_64_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_64_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_64_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_64_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_64_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in1_LSTM_80_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in1_LSTM_80_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in2_LSTM_80_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in2_LSTM_80_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_80_1 = RTNeural::ModelT, RTNeural::DenseT>; +using ModelType_in3_LSTM_80_2 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelType_in3_LSTM_80_3 = RTNeural::ModelT, RTNeural::LSTMLayerT, RTNeural::LSTMLayerT, RTNeural::DenseT>; +using ModelVariantType = std::variant; + +inline bool is_model_type_ModelType_in1_GRU_8_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; @@ -67,807 +176,2751 @@ inline bool is_model_type_ModelType_GRU_8_1 (const nlohmann::json& model_json) { const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_8_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_8_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_8_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_8_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_12_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_8_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_12_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_8_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_12_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_8_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_16_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_8_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_16_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_8_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_16_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_8_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 8; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_20_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_12_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_20_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_12_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_20_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_12_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_24_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_12_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 24; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_24_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_12_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 24; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_24_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_12_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 24; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_32_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_12_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 32; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_32_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_12_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 32; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_32_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_12_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 32; + const auto is_hidden_size_correct = hidden_size == 12; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_40_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_16_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_40_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_16_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_40_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_16_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_64_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_16_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_64_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_16_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_64_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_16_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_80_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_16_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_80_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_16_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_GRU_80_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_16_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 16; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_8_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_20_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 8; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_8_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_20_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 8; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_8_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_20_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 8; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_12_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_20_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_12_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_20_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_12_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_20_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 12; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_16_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_20_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_16_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_20_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_16_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_20_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 16; + const auto is_hidden_size_correct = hidden_size == 20; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_20_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_24_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_20_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_24_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_20_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_24_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 20; + const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_24_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_24_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_24_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_24_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_24_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_24_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_24_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 24; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_32_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_24_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_24_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_32_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_32_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_32_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_32_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_32_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_40_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_32_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_40_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_32_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_40_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in2_GRU_32_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 40; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_64_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_32_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_64_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_32_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_64_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in3_GRU_32_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 64; + const auto is_hidden_size_correct = hidden_size == 32; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_80_1 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_40_1 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 40; const auto input_size = model_json.at ("in_shape").back().get(); const auto is_input_size_correct = input_size == 1; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_80_2 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_40_2 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 40; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 2; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool is_model_type_ModelType_LSTM_80_3 (const nlohmann::json& model_json) { +inline bool is_model_type_ModelType_in1_GRU_40_3 (const nlohmann::json& model_json) { const auto json_layers = model_json.at ("layers"); const auto rnn_layer_type = json_layers.at (0).at ("type").get(); - const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto is_layer_type_correct = rnn_layer_type == "gru"; const auto hidden_size = json_layers.at (0).at ("shape").back().get(); - const auto is_hidden_size_correct = hidden_size == 80; + const auto is_hidden_size_correct = hidden_size == 40; const auto input_size = model_json.at ("in_shape").back().get(); - const auto is_input_size_correct = input_size == 3; - return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct; + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; } -inline bool custom_model_creator (const nlohmann::json& model_json, ModelVariantType& model) { - if (is_model_type_ModelType_GRU_8_1 (model_json)) { - model.emplace(); +inline bool is_model_type_ModelType_in2_GRU_40_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_40_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_40_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_40_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_40_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_40_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_GRU_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_GRU_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_GRU_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "gru"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_8_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_8_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_8_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_8_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_8_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_8_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_8_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_8_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_8_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 8; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_12_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_12_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_12_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_12_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_12_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_12_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_12_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_12_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_12_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 12; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_16_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_16_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_16_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_16_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_16_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_16_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_16_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_16_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_16_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 16; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_20_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_20_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_20_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_20_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_20_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_20_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_20_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_20_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_20_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 20; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_24_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_24_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_24_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_24_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_24_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_24_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_24_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_24_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_24_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 24; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_32_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_32_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_32_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_32_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_32_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_32_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_32_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_32_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_32_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 32; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_40_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_40_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_40_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_40_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_40_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_40_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_40_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_40_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_40_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 40; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_64_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_64_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_64_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 64; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in1_LSTM_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 1; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in2_LSTM_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 2; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_80_1 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 1; + const auto is_num_layers_correct = num_layers == 1; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_80_2 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 2; + const auto is_num_layers_correct = num_layers == 2; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool is_model_type_ModelType_in3_LSTM_80_3 (const nlohmann::json& model_json) { + const auto json_layers = model_json.at ("layers"); + const auto rnn_layer_type = json_layers.at (0).at ("type").get(); + const auto is_layer_type_correct = rnn_layer_type == "lstm"; + const auto hidden_size = json_layers.at (0).at ("shape").back().get(); + const auto is_hidden_size_correct = hidden_size == 80; + const auto input_size = model_json.at ("in_shape").back().get(); + const auto is_input_size_correct = input_size == 3; + const auto num_layers = 3; + const auto is_num_layers_correct = num_layers == 3; + return is_layer_type_correct && is_hidden_size_correct && is_input_size_correct && is_num_layers_correct; +} + +inline bool custom_model_creator (const nlohmann::json& model_json, ModelVariantType& model) { + if (is_model_type_ModelType_in1_GRU_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_20_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_20_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_20_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_20_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_20_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_20_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_20_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_20_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_20_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_24_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_24_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_24_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_24_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_24_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_24_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_24_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_24_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_24_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_32_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_32_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_32_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_32_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_32_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_32_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_32_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_32_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_32_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_40_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_40_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_40_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_40_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_40_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_40_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_40_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_40_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_40_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_64_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_64_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_64_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_64_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_64_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_64_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_64_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_64_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_64_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_80_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_80_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_GRU_80_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_80_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_80_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_GRU_80_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_80_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_80_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_GRU_80_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_8_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_8_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_8_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_12_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_12_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_12_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in2_LSTM_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_16_1 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_16_2 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in3_LSTM_16_3 (model_json)) { + model.emplace(); + return true; + } + else if (is_model_type_ModelType_in1_LSTM_20_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_8_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_20_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_8_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_20_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_12_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_20_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_12_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_20_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_12_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_20_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_16_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_20_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_16_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_20_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_16_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_20_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_20_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_24_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_20_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_24_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_20_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_24_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_24_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_24_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_24_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_24_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_24_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_24_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_32_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_24_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_32_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_24_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_32_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_24_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_40_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_32_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_40_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_32_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_40_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_32_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_64_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_32_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_64_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_32_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_64_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_32_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_80_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_32_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_80_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_32_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_GRU_80_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_32_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_8_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_40_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_8_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_40_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_8_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_40_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_12_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_40_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_12_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_40_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_12_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_40_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_16_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_40_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_16_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_40_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_16_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_40_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_20_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_64_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_20_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_64_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_20_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_64_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_24_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_64_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_24_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_64_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_24_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_64_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_32_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_64_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_32_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_64_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_32_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_64_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_40_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_80_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_40_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_80_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_40_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in1_LSTM_80_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_64_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_80_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_64_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_80_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_64_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in2_LSTM_80_3 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_80_1 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_80_1 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_80_2 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_80_2 (model_json)) { + model.emplace(); return true; } - else if (is_model_type_ModelType_LSTM_80_3 (model_json)) { - model.emplace(); + else if (is_model_type_ModelType_in3_LSTM_80_3 (model_json)) { + model.emplace(); return true; } model.emplace();