diff --git a/deepmd/pt/train/training.py b/deepmd/pt/train/training.py index 46cbda1894..24440e19de 100644 --- a/deepmd/pt/train/training.py +++ b/deepmd/pt/train/training.py @@ -613,7 +613,13 @@ def single_model_finetune( if init_frz_model is not None: frz_model = torch.jit.load(init_frz_model, map_location=DEVICE) - self.model.load_state_dict(frz_model.state_dict()) + state = frz_model.state_dict() + missing, unexpected = self.model.load_state_dict(state, strict=False) + if missing or unexpected: + log.warning( + "Checkpoint loaded non-strictly. " + f"Missing keys: {missing}, Unexpected keys: {unexpected}" + ) # Get model prob for multi-task if self.multi_task: diff --git a/source/tests/pt/model/models/se_e2_a.json b/source/tests/pt/model/models/se_e2_a.json new file mode 100644 index 0000000000..d3b83b5a5c --- /dev/null +++ b/source/tests/pt/model/models/se_e2_a.json @@ -0,0 +1,77 @@ +{ + "model": { + "type_map": [ + "O", + "H" + ], + "descriptor": { + "type": "se_e2_a", + "sel": [ + 23, + 46 + ], + "rcut_smth": 0.50, + "rcut": 4.00, + "neuron": [ + 2, + 4 + ], + "resnet_dt": false, + "axis_neuron": 4, + "type_one_side": true, + "seed": 1, + "_comment": " that's all" + }, + "fitting_net": { + "neuron": [ + 120 + ], + "resnet_dt": true, + "seed": 1, + "_comment": " that's all" + }, + "data_stat_nbatch": 20, + "_comment": " that's all" + }, + "learning_rate": { + "type": "exp", + "decay_steps": 5000, + "start_lr": 0.001, + "stop_lr": 3.51e-8, + "_comment": "that's all" + }, + "loss": { + "type": "ener", + "start_pref_e": 0.02, + "limit_pref_e": 1, + "start_pref_f": 1000, + "limit_pref_f": 1, + "_comment": " that's all" + }, + "training": { + "training_data": { + "systems": [ + "../data/data_0", + "../data/data_1", + "../data/data_2" + ], + "batch_size": 1, + "_comment": "that's all" + }, + "validation_data": { + "systems": [ + "../data/data_3" + ], + "batch_size": 1, + "numb_btch": 3, + "_comment": "that's all" + }, + "numb_steps": 100000, + "seed": 10, + "disp_file": "lcurve.out", + "disp_freq": 100, + "save_freq": 10000, + "_comment": "that's all" + }, + "_comment": "that's all" +} diff --git a/source/tests/pt/model/models/se_e2_a.pbtxt b/source/tests/pt/model/models/se_e2_a.pbtxt new file mode 100644 index 0000000000..c928fa375b --- /dev/null +++ b/source/tests/pt/model/models/se_e2_a.pbtxt @@ -0,0 +1,17035 @@ +node { + name: "train_attr/min_nbor_dist" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + } + double_val: 0.9103434477930997 + } + } + } +} +node { + name: "train_attr/training_script" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "{\"model\":{\"type_map\":[\"O\",\"H\"],\"descriptor\":{\"type\":\"se_e2_a\",\"sel\":[23,46],\"rcut_smth\":0.5,\"rcut\":4.0,\"neuron\":[2,4],\"resnet_dt\":false,\"axis_neuron\":4,\"type_one_side\":true,\"precision\":\"float64\",\"seed\":1,\"activation_function\":\"tanh\",\"trainable\":true,\"exclude_types\":[],\"env_protection\":0.0,\"set_davg_zero\":false},\"fitting_net\":{\"neuron\":[120],\"resnet_dt\":true,\"precision\":\"float64\",\"seed\":1,\"type\":\"ener\",\"numb_fparam\":0,\"numb_aparam\":0,\"default_fparam\":null,\"dim_case_embd\":0,\"activation_function\":\"tanh\",\"trainable\":true,\"rcond\":null,\"atom_ener\":[],\"use_aparam_as_mask\":false},\"data_stat_nbatch\":10,\"data_stat_protect\":0.01,\"data_bias_nsample\":10,\"pair_exclude_types\":[],\"atom_exclude_types\":[],\"preset_out_bias\":null,\"srtab_add_bias\":true,\"type\":\"standard\",\"model_branch_alias\":[],\"info\":{}},\"learning_rate\":{\"type\":\"exp\",\"decay_steps\":5000,\"start_lr\":0.001,\"stop_lr\":3.51e-08,\"scale_by_worker\":\"linear\",\"decay_rate\":null},\"loss\":{\"type\":\"ener\",\"start_pref_e\":0.02,\"limit_pref_e\":1,\"start_pref_f\":1000,\"limit_pref_f\":1,\"start_pref_v\":0,\"limit_pref_v\":0,\"start_pref_h\":0.0,\"limit_pref_h\":0.0,\"start_pref_ae\":0.0,\"limit_pref_ae\":0.0,\"start_pref_pf\":0.0,\"limit_pref_pf\":0.0,\"enable_atom_ener_coeff\":false,\"start_pref_gf\":0.0,\"limit_pref_gf\":0.0,\"numb_generalized_coord\":0,\"use_huber\":false,\"huber_delta\":0.01},\"training\":{\"training_data\":{\"systems\":[\"../data/single\"],\"batch_size\":\"auto\",\"rglob_patterns\":null,\"auto_prob\":\"prob_sys_size\",\"sys_probs\":null},\"validation_data\":{\"systems\":[\"../data/single\"],\"batch_size\":1,\"numb_btch\":3,\"rglob_patterns\":null,\"auto_prob\":\"prob_sys_size\",\"sys_probs\":null},\"numb_steps\":100,\"seed\":10,\"disp_file\":\"lcurve.out\",\"disp_freq\":100,\"save_freq\":1000,\"save_ckpt\":\"model.ckpt\",\"max_ckpt_keep\":5,\"change_bias_after_training\":false,\"disp_training\":true,\"time_training\":true,\"disp_avg\":false,\"profiling\":false,\"profiling_file\":\"timeline.json\",\"enable_profiler\":false,\"tensorboard\":false,\"tensorboard_log_dir\":\"log\",\"tensorboard_freq\":1,\"acc_freq\":1,\"opt_type\":\"Adam\"}}" + } + } + } +} +node { + name: "model_type" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "original_model" + } + } + } +} +node { + name: "t_box" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "shape" + value { + shape { + dim { + size: -1 + } + } + } + } +} +node { + name: "t_coord" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "shape" + value { + shape { + dim { + size: -1 + } + } + } + } +} +node { + name: "t_type" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "shape" + value { + shape { + dim { + size: -1 + } + } + } + } +} +node { + name: "t_natoms" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "shape" + value { + shape { + dim { + size: 4 + } + } + } + } +} +node { + name: "t_mesh" + op: "Placeholder" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "shape" + value { + shape { + dim { + size: -1 + } + } + } + } +} +node { + name: "model_attr/tmap" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "O H" + } + } + } +} +node { + name: "model_attr/model_type" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "ener" + } + } + } +} +node { + name: "model_attr/model_version" + op: "Const" + attr { + key: "dtype" + value { + type: DT_STRING + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_STRING + tensor_shape { + } + string_val: "1.1" + } + } + } +} +node { + name: "model_attr/model_attr/t_out_bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + dim { + size: 2 + } + dim { + size: 1 + } + } + tensor_content: "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "model_attr/model_attr/t_out_bias/read" + op: "Identity" + input: "model_attr/model_attr/t_out_bias" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@model_attr/model_attr/t_out_bias" + } + } + } +} +node { + name: "model_attr/model_attr/t_out_std" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + dim { + size: 2 + } + dim { + size: 1 + } + } + tensor_content: "\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?" + } + } + } +} +node { + name: "model_attr/model_attr/t_out_std/read" + op: "Identity" + input: "model_attr/model_attr/t_out_std" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@model_attr/model_attr/t_out_std" + } + } + } +} +node { + name: "strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice/stack" + input: "strided_slice/stack_1" + input: "strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "mul" + op: "Mul" + input: "strided_slice" + input: "mul/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape/shape" + op: "Pack" + input: "Reshape/shape/0" + input: "mul" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape" + op: "Reshape" + input: "t_coord" + input: "Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_1" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_1/stack" + input: "strided_slice_1/stack_1" + input: "strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_1/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_1/shape" + op: "Pack" + input: "Reshape_1/shape/0" + input: "strided_slice_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_1" + op: "Reshape" + input: "t_type" + input: "Reshape_1/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "descrpt_attr/rcut" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + } + double_val: 4.0 + } + } + } +} +node { + name: "descrpt_attr/ntypes" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "descrpt_attr/sel" + op: "Const" + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\027\000\000\000.\000\000\000" + } + } + } +} +node { + name: "descrpt_attr/original_sel" + op: "Const" + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\027\000\000\000.\000\000\000" + } + } + } +} +node { + name: "descrpt_attr/t_avg" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + dim { + size: 276 + } + } + tensor_content: "\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\177\320&\365X\250?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\353\221\322-?\366\245?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "descrpt_attr/t_avg/read" + op: "Identity" + input: "descrpt_attr/t_avg" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@descrpt_attr/t_avg" + } + } + } +} +node { + name: "descrpt_attr/t_std" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + dim { + size: 276 + } + } + tensor_content: "\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\327\177:\3328\216\306?;\342AW\370\371\272?;\342AW\370\371\272?;\342AW\370\371\272?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?\210<\245\222\211\262\302?yQ&\335_\200\266?yQ&\335_\200\266?yQ&\335_\200\266?" + } + } + } +} +node { + name: "descrpt_attr/t_std/read" + op: "Identity" + input: "descrpt_attr/t_std" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@descrpt_attr/t_std" + } + } + } +} +node { + name: "strided_slice_3/stack" + op: "Const" + input: "^descrpt_attr/original_sel" + input: "^descrpt_attr/sel" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_3/stack_1" + op: "Const" + input: "^descrpt_attr/original_sel" + input: "^descrpt_attr/sel" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_3/stack_2" + op: "Const" + input: "^descrpt_attr/original_sel" + input: "^descrpt_attr/sel" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_3" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_3/stack" + input: "strided_slice_3/stack_1" + input: "strided_slice_3/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul_1/y" + op: "Const" + input: "^descrpt_attr/original_sel" + input: "^descrpt_attr/sel" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "mul_1" + op: "Mul" + input: "strided_slice_3" + input: "mul_1/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_2/shape/0" + op: "Const" + input: "^descrpt_attr/original_sel" + input: "^descrpt_attr/sel" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_2/shape" + op: "Pack" + input: "Reshape_2/shape/0" + input: "mul_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_2" + op: "Reshape" + input: "Reshape" + input: "Reshape_2/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_3/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\t\000\000\000" + } + } + } +} +node { + name: "Reshape_3" + op: "Reshape" + input: "t_box" + input: "Reshape_3/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_4/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_4/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_4/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_4" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_4/stack" + input: "strided_slice_4/stack_1" + input: "strided_slice_4/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_4/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_4/shape" + op: "Pack" + input: "Reshape_4/shape/0" + input: "strided_slice_4" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_4" + op: "Reshape" + input: "Reshape_1" + input: "Reshape_4/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "ProdEnvMatA" + op: "ProdEnvMatA" + input: "Reshape_2" + input: "Reshape_4" + input: "t_natoms" + input: "Reshape_3" + input: "t_mesh" + input: "descrpt_attr/t_avg/read" + input: "descrpt_attr/t_std/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "rcut_a" + value { + f: -1.0 + } + } + attr { + key: "rcut_r" + value { + f: 4.0 + } + } + attr { + key: "rcut_r_smth" + value { + f: 0.5 + } + } + attr { + key: "sel_a" + value { + list { + i: 23 + i: 46 + } + } + } + attr { + key: "sel_r" + value { + list { + i: 0 + i: 0 + } + } + } +} +node { + name: "Reshape_7/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\024\001\000\000" + } + } + } +} +node { + name: "Reshape_7" + op: "Reshape" + input: "ProdEnvMatA" + input: "Reshape_7/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "o_rmat" + op: "Identity" + input: "Reshape_7" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "o_rmat_deriv" + op: "Identity" + input: "ProdEnvMatA:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "o_rij" + op: "Identity" + input: "ProdEnvMatA:2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "o_nlist" + op: "Identity" + input: "ProdEnvMatA:3" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_5/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_5/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_5/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_5" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_5/stack" + input: "strided_slice_5/stack_1" + input: "strided_slice_5/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_8/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_8/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 276 + } + } + } +} +node { + name: "Reshape_8/shape" + op: "Pack" + input: "Reshape_8/shape/0" + input: "strided_slice_5" + input: "Reshape_8/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_8" + op: "Reshape" + input: "o_rmat" + input: "Reshape_8/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_9/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\024\001\000\000" + } + } + } +} +node { + name: "Reshape_9" + op: "Reshape" + input: "Reshape_8" + input: "Reshape_9/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/Slice/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice/size" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\\\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice" + op: "Slice" + input: "Reshape_9" + input: "filter_type_all/Slice/begin" + input: "filter_type_all/Slice/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Shape" + op: "Shape" + input: "filter_type_all/Slice" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "filter_type_all/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "filter_type_all/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/strided_slice" + op: "StridedSlice" + input: "filter_type_all/Shape" + input: "filter_type_all/strided_slice/stack" + input: "filter_type_all/strided_slice/stack_1" + input: "filter_type_all/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "filter_type_all/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape" + op: "Reshape" + input: "filter_type_all/Slice" + input: "filter_type_all/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/Slice_1/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_1/size" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_1" + op: "Slice" + input: "filter_type_all/Reshape" + input: "filter_type_all/Slice_1/begin" + input: "filter_type_all/Slice_1/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_1/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_1" + op: "Reshape" + input: "filter_type_all/Slice_1" + input: "filter_type_all/Reshape_1/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/matrix_1_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + dim { + size: 2 + } + } + tensor_content: "(\350\310\014\010o\255\2772\337\220\353&\346\340?" + } + } + } +} +node { + name: "filter_type_all/matrix_1_0/read" + op: "Identity" + input: "filter_type_all/matrix_1_0" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/matrix_1_0" + } + } + } +} +node { + name: "filter_type_all/bias_1_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "Y\2130\240\003\260\335\277m\375`\217\372\211\000\300" + } + } + } +} +node { + name: "filter_type_all/bias_1_0/read" + op: "Identity" + input: "filter_type_all/bias_1_0" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/bias_1_0" + } + } + } +} +node { + name: "filter_type_all/MatMul" + op: "MatMul" + input: "filter_type_all/Reshape_1" + input: "filter_type_all/matrix_1_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "filter_type_all/BiasAdd" + op: "BiasAdd" + input: "filter_type_all/MatMul" + input: "filter_type_all/bias_1_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "filter_type_all/Tanh" + op: "Tanh" + input: "filter_type_all/BiasAdd" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_2/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\002\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_2" + op: "Reshape" + input: "filter_type_all/Tanh" + input: "filter_type_all/Reshape_2/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/concat" + op: "ConcatV2" + input: "filter_type_all/Reshape_1" + input: "filter_type_all/Reshape_1" + input: "filter_type_all/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/add" + op: "AddV2" + input: "filter_type_all/concat" + input: "filter_type_all/Reshape_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/matrix_2_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + dim { + size: 4 + } + } + tensor_content: "\233\353C\217\023\227\253?\213\317\355\362\250&\312?^\256\023\342g\343\333\277J\345u\2118R\320?L{\254\033W\312\244?-g\263\335\302\\\351\277\301\253*\264r\234\330?\025\244Y\240\017\014\275\277" + } + } + } +} +node { + name: "filter_type_all/matrix_2_0/read" + op: "Identity" + input: "filter_type_all/matrix_2_0" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/matrix_2_0" + } + } + } +} +node { + name: "filter_type_all/bias_2_0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 4 + } + } + tensor_content: "x\231b\217\234\201\366\277\263\010\n-E0\354\277\202\373|\243\222\300\317?\306\371\210\203\016\245\316\277" + } + } + } +} +node { + name: "filter_type_all/bias_2_0/read" + op: "Identity" + input: "filter_type_all/bias_2_0" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/bias_2_0" + } + } + } +} +node { + name: "filter_type_all/MatMul_1" + op: "MatMul" + input: "filter_type_all/add" + input: "filter_type_all/matrix_2_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "filter_type_all/BiasAdd_1" + op: "BiasAdd" + input: "filter_type_all/MatMul_1" + input: "filter_type_all/bias_2_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "filter_type_all/Tanh_1" + op: "Tanh" + input: "filter_type_all/BiasAdd_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_3/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_3" + op: "Reshape" + input: "filter_type_all/Tanh_1" + input: "filter_type_all/Reshape_3/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/concat_1/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/concat_1" + op: "ConcatV2" + input: "filter_type_all/add" + input: "filter_type_all/add" + input: "filter_type_all/concat_1/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/add_1" + op: "AddV2" + input: "filter_type_all/concat_1" + input: "filter_type_all/Reshape_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_4/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\377\377\377\377\027\000\000\000\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_4" + op: "Reshape" + input: "filter_type_all/add_1" + input: "filter_type_all/Reshape_4/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/Reshape_5/shape/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 23 + } + } + } +} +node { + name: "filter_type_all/Reshape_5/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 4 + } + } + } +} +node { + name: "filter_type_all/Reshape_5/shape" + op: "Pack" + input: "filter_type_all/strided_slice" + input: "filter_type_all/Reshape_5/shape/1" + input: "filter_type_all/Reshape_5/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "filter_type_all/Reshape_5" + op: "Reshape" + input: "filter_type_all/Slice" + input: "filter_type_all/Reshape_5/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/MatMul_2" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_5" + input: "filter_type_all/Reshape_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: true + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "filter_type_all/Slice_2/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\000\000\000\000\\\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_2/size" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\270\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_2" + op: "Slice" + input: "Reshape_9" + input: "filter_type_all/Slice_2/begin" + input: "filter_type_all/Slice_2/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Shape_1" + op: "Shape" + input: "filter_type_all/Slice_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "filter_type_all/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "filter_type_all/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/strided_slice_1" + op: "StridedSlice" + input: "filter_type_all/Shape_1" + input: "filter_type_all/strided_slice_1/stack" + input: "filter_type_all/strided_slice_1/stack_1" + input: "filter_type_all/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "filter_type_all/Reshape_6/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_6" + op: "Reshape" + input: "filter_type_all/Slice_2" + input: "filter_type_all/Reshape_6/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/Slice_3/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_3/size" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_3" + op: "Slice" + input: "filter_type_all/Reshape_6" + input: "filter_type_all/Slice_3/begin" + input: "filter_type_all/Slice_3/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_7/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_7" + op: "Reshape" + input: "filter_type_all/Slice_3" + input: "filter_type_all/Reshape_7/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/matrix_1_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + dim { + size: 2 + } + } + tensor_content: "\317\221\332=\'\355\337?\237\224\230\311\376\r\270\277" + } + } + } +} +node { + name: "filter_type_all/matrix_1_1/read" + op: "Identity" + input: "filter_type_all/matrix_1_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/matrix_1_1" + } + } + } +} +node { + name: "filter_type_all/bias_1_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\0372\016\0074\345\321\277=\363\302\320@]\344\277" + } + } + } +} +node { + name: "filter_type_all/bias_1_1/read" + op: "Identity" + input: "filter_type_all/bias_1_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/bias_1_1" + } + } + } +} +node { + name: "filter_type_all/MatMul_3" + op: "MatMul" + input: "filter_type_all/Reshape_7" + input: "filter_type_all/matrix_1_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "filter_type_all/BiasAdd_2" + op: "BiasAdd" + input: "filter_type_all/MatMul_3" + input: "filter_type_all/bias_1_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "filter_type_all/Tanh_2" + op: "Tanh" + input: "filter_type_all/BiasAdd_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_8/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\002\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_8" + op: "Reshape" + input: "filter_type_all/Tanh_2" + input: "filter_type_all/Reshape_8/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/concat_2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/concat_2" + op: "ConcatV2" + input: "filter_type_all/Reshape_7" + input: "filter_type_all/Reshape_7" + input: "filter_type_all/concat_2/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/add_2" + op: "AddV2" + input: "filter_type_all/concat_2" + input: "filter_type_all/Reshape_8" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/matrix_2_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + dim { + size: 4 + } + } + tensor_content: "$4\265\372=\004\335?\3271\224K\344\206\334\277\274]\\W\024\177\332?q\305\257\367V>\354?I?\345G\205\212\257?\324\253\255\002\031\204\306?\322&\3603\320\273\334?Ux\2526\2024\321\277" + } + } + } +} +node { + name: "filter_type_all/matrix_2_1/read" + op: "Identity" + input: "filter_type_all/matrix_2_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/matrix_2_1" + } + } + } +} +node { + name: "filter_type_all/bias_2_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 4 + } + } + tensor_content: "N\361\035]x\245\351\277\357\010\224A\343B\311\277\322x\017\"M\253\273?9\027K\2228e\374\277" + } + } + } +} +node { + name: "filter_type_all/bias_2_1/read" + op: "Identity" + input: "filter_type_all/bias_2_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@filter_type_all/bias_2_1" + } + } + } +} +node { + name: "filter_type_all/MatMul_4" + op: "MatMul" + input: "filter_type_all/add_2" + input: "filter_type_all/matrix_2_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "filter_type_all/BiasAdd_3" + op: "BiasAdd" + input: "filter_type_all/MatMul_4" + input: "filter_type_all/bias_2_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "filter_type_all/Tanh_3" + op: "Tanh" + input: "filter_type_all/BiasAdd_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_9/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_9" + op: "Reshape" + input: "filter_type_all/Tanh_3" + input: "filter_type_all/Reshape_9/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/concat_3/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "filter_type_all/concat_3" + op: "ConcatV2" + input: "filter_type_all/add_2" + input: "filter_type_all/add_2" + input: "filter_type_all/concat_3/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/add_3" + op: "AddV2" + input: "filter_type_all/concat_3" + input: "filter_type_all/Reshape_9" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Reshape_10/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\377\377\377\377.\000\000\000\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_10" + op: "Reshape" + input: "filter_type_all/add_3" + input: "filter_type_all/Reshape_10/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/Reshape_11/shape/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 46 + } + } + } +} +node { + name: "filter_type_all/Reshape_11/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 4 + } + } + } +} +node { + name: "filter_type_all/Reshape_11/shape" + op: "Pack" + input: "filter_type_all/strided_slice_1" + input: "filter_type_all/Reshape_11/shape/1" + input: "filter_type_all/Reshape_11/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "filter_type_all/Reshape_11" + op: "Reshape" + input: "filter_type_all/Slice_2" + input: "filter_type_all/Reshape_11/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "filter_type_all/MatMul_5" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_11" + input: "filter_type_all/Reshape_10" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: true + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "filter_type_all/AddN" + op: "AddN" + input: "filter_type_all/MatMul_2" + input: "filter_type_all/MatMul_5" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/truediv/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + } + double_val: 69.0 + } + } + } +} +node { + name: "filter_type_all/truediv" + op: "RealDiv" + input: "filter_type_all/AddN" + input: "filter_type_all/truediv/y" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/Slice_4/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\000\000\000\000\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_4/size" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\377\377\377\377\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Slice_4" + op: "Slice" + input: "filter_type_all/truediv" + input: "filter_type_all/Slice_4/begin" + input: "filter_type_all/Slice_4/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "filter_type_all/MatMul_6" + op: "BatchMatMulV2" + input: "filter_type_all/truediv" + input: "filter_type_all/Slice_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: true + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "filter_type_all/Reshape_12/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\020\000\000\000" + } + } + } +} +node { + name: "filter_type_all/Reshape_12" + op: "Reshape" + input: "filter_type_all/MatMul_6" + input: "filter_type_all/Reshape_12/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Shape_2" + op: "Shape" + input: "Reshape_8" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_9/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_9/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_9/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_9" + op: "StridedSlice" + input: "Shape_2" + input: "strided_slice_9/stack" + input: "strided_slice_9/stack_1" + input: "strided_slice_9/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_10/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_10/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_10/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_10" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_10/stack" + input: "strided_slice_10/stack_1" + input: "strided_slice_10/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_12/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 16 + } + } + } +} +node { + name: "Reshape_12/shape" + op: "Pack" + input: "strided_slice_9" + input: "strided_slice_10" + input: "Reshape_12/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_12" + op: "Reshape" + input: "filter_type_all/Reshape_12" + input: "Reshape_12/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "concat_1/concat" + op: "Identity" + input: "Reshape_12" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "o_descriptor" + op: "Identity" + input: "concat_1/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "fitting_attr/dfparam" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "fitting_attr/daparam" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "fitting_attr/t_bias_atom_e" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\232\231\231\031\220dW\300\231\231\231\031\220dg\300" + } + } + } +} +node { + name: "fitting_attr/t_bias_atom_e/read" + op: "Identity" + input: "fitting_attr/t_bias_atom_e" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@fitting_attr/t_bias_atom_e" + } + } + } +} +node { + name: "strided_slice_13/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_13/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_13/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_13" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_13/stack" + input: "strided_slice_13/stack_1" + input: "strided_slice_13/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_14/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_14/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 16 + } + } + } +} +node { + name: "Reshape_14/shape" + op: "Pack" + input: "Reshape_14/shape/0" + input: "strided_slice_13" + input: "Reshape_14/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_14" + op: "Reshape" + input: "o_descriptor" + input: "Reshape_14/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_14/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_14/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_14/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_14" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_14/stack" + input: "strided_slice_14/stack_1" + input: "strided_slice_14/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_15/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_15/shape" + op: "Pack" + input: "Reshape_15/shape/0" + input: "strided_slice_14" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_15" + op: "Reshape" + input: "t_type" + input: "Reshape_15/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_15/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_15/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_15/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_15" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_15/stack" + input: "strided_slice_15/stack_1" + input: "strided_slice_15/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Slice_1/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "Slice_1/size/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Slice_1/size" + op: "Pack" + input: "Slice_1/size/0" + input: "strided_slice_15" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Slice_1" + op: "Slice" + input: "Reshape_15" + input: "Slice_1/begin" + input: "Slice_1/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "GreaterEqual/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "GreaterEqual" + op: "GreaterEqual" + input: "Slice_1" + input: "GreaterEqual/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Cast" + op: "Cast" + input: "GreaterEqual" + attr { + key: "DstT" + value { + type: DT_DOUBLE + } + } + attr { + key: "SrcT" + value { + type: DT_BOOL + } + } + attr { + key: "Truncate" + value { + b: false + } + } +} +node { + name: "Reshape_16/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_16" + op: "Reshape" + input: "Slice_1" + input: "Reshape_16/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "clip_by_value/Minimum/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "clip_by_value/Minimum" + op: "Minimum" + input: "Reshape_16" + input: "clip_by_value/Minimum/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "clip_by_value/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "clip_by_value" + op: "Maximum" + input: "clip_by_value/Minimum" + input: "clip_by_value/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_16/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_16/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 3 + } + } + } +} +node { + name: "strided_slice_16/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_16" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_16/stack" + input: "strided_slice_16/stack_1" + input: "strided_slice_16/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Slice_2/begin" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\000\000\000\000\000\000\000\000\000\000\000\000" + } + } + } +} +node { + name: "Slice_2/size/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Slice_2/size/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Slice_2/size" + op: "Pack" + input: "Slice_2/size/0" + input: "strided_slice_16" + input: "Slice_2/size/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Slice_2" + op: "Slice" + input: "Reshape_14" + input: "Slice_2/begin" + input: "Slice_2/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "Reshape_17/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\020\000\000\000" + } + } + } +} +node { + name: "Reshape_17" + op: "Reshape" + input: "Slice_2" + input: "Reshape_17/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "layer_0_type_0/matrix" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 16 + } + dim { + size: 120 + } + } + tensor_content: "e0\352\312O\'\224?0\307E\334p\265\236\277\262\272\257\354\370}\262\277\331.)u\')\226\277\014)A\3328\362\304?\261\335OyT.\235\277\254j>Z\037\023\240?\031\031\3618\273\307\302\277\200\366^8Js\254?\265W\253\210fN\260\277\354\245&\276`\206\213?/\024\014\244F\'\266\277S\261<\247c\023\200?WtW\327\211\300\300?^eh\271\235\213\260?\334\263\016\204\210(\243\277\355\345\016\253\365\005\267\277\216n\263\201\377\372\312?h+{sV\343\235\277J\312\025m\003\376\245?W\n]\247\031\353\255?g\354\332\177)b\252?zS\333\355\364\376\222?\305\010N\224\375\210\237\2771\224O\032\034\013\242\277e\013\241Gtn\220? N-\365\343\353h?\336Y,\'E\367\306\277\277&\372cV\301\267\277\024\365Z7\205H\246\277$5a\231\026\241\262\277\200\223$\\\353\177\246\277 jY~\'\215\214\277\t\256\201\371:Z\267\277\243\2735\347\336\272\261\277 =;x\237U\232\277\254\352g\221\231p\267?a\315m\n\362+\230?\336\233o\323\367I\201\277\006[\315\312\364\325\261\277o\031\353\2634\363\254\277\216\366\336\240\347\344\304?\224\303w\225\027c\273\277\001z\265~i\341\234\277\215\207\035+\337f\257?\013\3462\022\307\026\251\277\033g+T\025\014\276\277\022d%G\022(u\277\332)\002\262a$\220?\003\330\016#\345<\271?\355\335\337\026Z\264\235\277\202\306I\"i\220\237\277c?\201yO\217\303?Nl&E\201\272\221\2775\211Q\265\240k\312\277\337\204\370\247V\233\246?k\031\255\371\002\254\214?\204\032z\345\314;\241\277\364\377(R\364\t@\277HV\342\211l\262g?\025i\372\353y\200\267?^!(\177\333\200z?|\302\377\312\202,\274\277\301G\026 ]n\231?[\370\3605\225*\252\277\t@\303\252\360\035p?\005\306\004\244c\336\247\277].\244\014\205\362\276?\n\021\005i\222O\221?\376J\002\344B\215\306?\331xZn\332\257}\277*\261?\204\214\010J\333\347y\277\252AL\257\031;\255\277s\361S\260s#q?\256\225\202\n\n:\223\277\252\206\021Oz<\275?P\362i\376\232[\263?W\366p\314{=\300\277Qj\360\362\224\267u\277\361;\r\226 G\212\277\347D\226\263\334\262\177\277&)\317\215O\007\303?\345p\272-\021\327f?\371\214[Yi\244\301?\006\200(\327r\021\264?\267\256\335V\002\345\235?\217?\262\217\254`\274\277\370I\346\245\354\200\300?\335>\264\304\205B\222?\210d\"\232\2237\303\277\224rO\321su\253\277\271\017Pm1\227\262?\206\220I\225\272\213\305?\252\361)F[=\221?\000\250\303\314\t\030\240?x\010\370\"\0242\303?]p\223&\373\'\246?\250\330\230\027\237\314\241?\033\020\214?Ce\305\277\233\3564%\334d|?\244\235\324\352\377\247\232?[SS\325\315\334\215\277\027\317=\306\000\245\263\277`\337\337\2348\351\260\277\n\3470\035\352\357\263?\230\265\344t\007\302\277?\224\272\'}x\305\240?\303)n\032@J\370\276\365b\037\027\214Xf?\016\r\276\311CU\301\277aFR\020\345\231\271?\220\313.\213\377\344\273\277\321\322\2679\305\231\270?\355\351\025\372\244\204\247\277p:!\246sy\254\2772\300*\224QN\275?\362\2602/\330\220\230\277\341\323:r\275\242\303\277\303\340\020\367\332\220j\277\225\313\232\220\255\027\223\277\252f\202\273\212\242\271\277D\212yh=\236\227\277\235\261\322;8\334\273?n\360\360\032\356\253\234\277\016\036\211\257\255n\237?\240\303\371h\rY\272\277`x\020\377\346o\246?\001\231\261\234\2613\274\277/\036]\361E\301\262\277\346\202\"\016\001\305\213?\231K\010\002\257\267\230\277\337\2725\230\335\366\273?|\034&\347G\362\273\277z\331h\2154\333\265\277p\202&\2029\300\250\2776A W\257/\271\277\313x\352\350\033F\247?Y\364\373d\203\222e\277\306EW(\341\251\250\277\334H\272QM\007\257?\211Ln\277\201\211\264?\007\000\037\2516\257\236?yO\"7\353\023\265\277\351\204mi\243\035\300?\3010\370\212\270S\272?\315\267\214\265s\014\266\277;\250\357\3339%\261?7\322\333\2060A\260?\230`\264y\367\277\277?\203\230\202\372\247\256\243\277B\205\000gn\330\273?\275\004&$\265\206[\277?\220\206\235,\276u\277/\346{^\203\373\254\277\314k\2623\000\344\266?!2ny\237\t\247?O\267&\n\352u\237?\256\002\316\226\3601\271\277c\233}\002\334\032\240?u\031\006\373B\357\257\277\326\006{\345\350\360n\277\260\330\024\211\244\326\250\277\2638KdN\320\253\277\360/\240\031WE\250?K\010^\232\376\272\253\277g/\223T\020\253\250\277\200\327`_*j\313\277N\016\346i\033~\254?>\364\256\000\256J\271?\325\033\255)\t\245\260?]|M\014\035f\262?\232c\351\322\322\316\260\277\337\010\032~],\273\277\236\230\"\206ZR\267?q\031\267\313\323\303\272\277\256\3711\026\213[\302?\234Ib\202\207\216\266\277\244\271\204\303v\221\250\2777\304\207\321\2355\260?5\315\031\234\365\023\215\277\272\2547\316\322\306\237?ZO}\214\003\215\220\277\036\251-\347\255\331\220?\237\203\256=\013\036\220\277\3219\200\025R\004\257?\300\230\375\021\261\223\240?\304\323\022J\263\240\264\277\004\035|\030&+\277\277\366<\227Hbx\231?\022\342I\'Y\265\242\277\035\310\277\367=9\260?N\244\340\321c\345\215\277I\265\307F+j\243?\317wF\306.z\204\277\205\201\307!\032I\246?\347\361=NU\330\271?\217\nk\206\226\001\254\277\343\330\2130n\250\241\277\370@?\017\026T\274\277\205\271\265\370\235A\225\277\251MjX\275\n\262?-\030\206<\315\007\205\277\224\234,\013\022\374\262?\365\327\343\013=8\211?\324\321F\232\000\010\203\277@W\320\rG\234\215\277|\254\216\036\363-p?\007\272\266\3145&\247?\350\354\221\254\324\326\243\2778Rk\301\377\\\270\277\005\027\256\334\246_i?\264\356\026\304\203:\270\277s\226\350Z\305\326\250\277k\342\262z\242\237\250\277=\345\336z7\253\223?\333t\000$Z\253\300?q\346\211w$\\\275?\236\263\343\251,\003\267\277q\267N%\370\311\276\277\327\271q\345\370W\232?\203\331\030\246\016_\306?\342\251\203\206n\354\240?\247\3327\262\341\370\254?\017`\375\017\315\232\241\277&\340x\221\356\001\225\277\301\353\211\032\341?\242?\221\240r\256\177h\256\277\225\266M\023\027\321\260?\\\3269\351hE\223\2778)\326\303h\303\263?\357\215lKk\032\223\277\374\245\017\033\300\372\253?\267K\001\004\370%\276\277\315x(\346\363_\312?\316[\231\231Q9\302?\n\254\022P\014x\264\277\" d\376\334\307\244?\216\240\255\344W\336\244?Lk\243 \005t\213\277\304]\332#\352\261\232?\256\010\236\325\242\342\256\277\222\rD\037J\313\241?4\367gq\360\240\241?d\245?\310\277\374\310\277\204YZ\265\304\334\240?\032\266[G}\247\277?\217F\321\033\355\n\241\277\274\025\320\244\325\237\253?\377\310\260\270\333\007\204\277\227\237\331\263S\314\241\277\362\311g\344W\241\201\277\224\1775\005\315V\211?\273\252\305ai\372\273\277\317\317VOR8\270?\271D\335\237\273X\227?\203\315\204\327\302J\306\277<\300B6\000k\214\277-Z\016\225\344q\257\277\313\327\236\036=\230\277?leD\212O\352\260?\362\0270\332Y\345\260?\017\022\371\203\275\210\305\277\007\2531\014(\207\220?\343?\217ey\362\241\277\225\206\323Xvm\257\277\214\320\347\2472\367\250?|My\226\237\353\236\277F\245o\237\204\016\252\277\243h\351eE\317b\277rU\300C\034\252\210?\266j\376m\234c\252?\234\325\031\205m\227\315\277\210\343]\333\275\306\276?\320\320\250K\301\032\251\277\355\364\321\367\031\031\271\277\223BUAV\201\264\277R\002\274\355\323\312\240?O\240 \326\320~\251\277\365\312\300}\036/\277\277\262\263#y\304w\254\2776\336\213\345n^{\277\301\365\313\022\274\370\306?\017\257\365C\374\212\244?\222/\324\352?\306\261\277\362\'\025d{\005\243?\2657\224\340\"}~?]\237\263\322\031\272\260\277\330?t\004\203\330\265?\221\024=\344\316\373\261\277\323\373\272M}\r\260?\3649j\336\374\266\300\277\'0\360A\017@\276\277\3166\013\037\205a\243\277\241i\245q\000\017\254?N\311\223\370\024\177\275\277\276\336\225\350\210\324\270\277-2\374\013\2504\240\277\370\301\337\274\235\233\251\277c\355\347\307\214w\217\277\330ILQWy\265?\274}\251L\237\250\256\277\271\224\013Yf\324\242\277\222C\224-\206E\277\277K\200\rr0\371\244\277[\010\252\3168m\235?\212m/\341\'\252\241\277Q&=\035A\177\301\277\353u\306\010|7\202\302\203\277-\361`\354\254:\241\277U5\017\3446`\246\277\365\027$\241%\331\265\277\214[\n<\250\207\266\277\343\244;\324C\233\275?\253\031*\221\000\352s\277\r\207\340\310\320{\305\277\3740<\342\232\305~\277\225(n\365\256eR\277/\241\333\252.1\230\277)N\251\223\237;\272?\262\r\231B6\177\266\277\336\237\230s\302\361\262?\211\202\036r\2505\265?\342\303\226\037\356\026\246?\256\022_\200\022y\241?\317R\276X\022\210\263\277\365\272H\236\017\016\245\277\037*\234%\031\267\302\277\026rG\200\331\375\260\277\213<\224\235\014o\222\277xhR<7\267\251\277\024\306\370\252I\336\240\277-[\222@\330\361\214?\020\241\035\266\250\266\224\277\201\234\317\306\352\311\235\277\230&\200\213\3559\255\277#G3\367yQ\240?\253\366s\361\017K\260?\034\322d\302c4\251?H^\206\344\343\211\263\277\234\260\000\376W\323\260?\302\n0\306?\373\264?\3416\306\021R\372\310\277\213aq\206\005\003\244\277\\\223K\335<|\273?\325\027K^\263\246\266?\353\005]\244\355\243\266?\010m\236\361\235\362\301\277\241:\265\017\343\300\263\277\241\312\000\014\351\026\245?z\222\247\262\025K\266\277\231\t\241\345\327\371\301\277\344G\033\030\236[\241\277\265\343\310\026Z\225\230\2775[\026OT\n\261?n3\3622\327{\305?\276H\240\251b\227\262\277G\031\200\241\034\341\240\277=+\002\321:t\303?\277\306\320\262\364\034\266\277\303\177\270~\251\035\263\277G\260c\206\311\004\246\277{\367\235<\3255\205?\216\026\336M\002\210\255\277p\0141S-\233\224\277\300\3668\244\326\347\224\277\306\206\360\345\370:\274?\020-\371\242\231\211\254\277s\003L@!\376y\277`\262\013\243\375\377\227?\242\271\343\032\252\347\307\277\345\326\273\r\375\254\261\277#\255\275\276\237\312x?\315\001\226\020C\362\241\277qR\263T;\\\300\277\347\r\234\224\375\320\263?Z\224\007\360\310y\301?\215n\325\212\305\253\266\277\327#\344=o\262\267\277\301i~\257\255J\225\277\321\370\002\310/X\227?\366\307\225\037nr\267?T\017=K\364\243\262\277\312\330\016\302\032\215\232\277\236\003*0\312\311\252?|_\027j)_\273\277\203[\021\325\340b\315\277\266X\270\267\010\321\233?\213K\201\210\030e\272\277\315E\252a\362\200\255?T\211A\004`\253\260\277I6\016)\271\300\243\277\230Q\234\313c~p\277a\025\372\202\010\007\255\277 \212\272\324\006$\300?P\275dTti\307?s\356\260\277a\207\256?+}a\336ZXs\277\345\247\230\n\243\346\302?\327\t\2516\341v\261\277\367\260]i<\314\271\277?zx\346\033\222\246\2777\200\234 k\241\242\2770\272\217f\240\035\237?\037T\370\2647\367\177?\211c&\255\241\214\317\277\374r\003\231\340\335\303\277T%O\311\263\273\237?\357\336\2146\222\352\255?>\246\310\227\323\026\262?\322+\371\277\027\355\220\277=\273\365\201\212\036\256?VB\206h\210<\304\2773\024;\273(]\301?\371\2547A`j\262?]\227\367\345@\314\241\2772i\\q\366\343\201\277[\367\362\307G\002\245?\344\021\255\275\265q\262\277*\034\370\021\032#\267?\274\202\262\366\215\251\264\277\350,\2352\212\373\252\277\261{\322\276O\\\241?\333\270\240W\377\004\264?\343\306\201\231\265\332\263\277&=7\004\021\217\267?\366\241:\275P+\230\277f\376\023\243\324\266p?\214\033#\312\264\214\261?p\014vL\033X\253\277\310A>\211\035K\221\277\323\270m8\272\315`\277\365\224\204\230)\361\256\277H\344\232\214E\036\253?\251I\274r/\207\220?\263.\236\253,\t\252?\361\330b\234z>x?d\212\035\026?y\244\277\027\217D\267\371\221\312?\377\222\216\261.8\241?\026\227K8\344!\262?\216\346\213\014=\"\265?\251\320d\233/\027\260?-Q\270\245\032\365\301?>\\\035\374\030\273\252\277\205%\257\216eI\227\277\277\320\226\204\026\243\221\277\224d~\214\355\376\256\277\350\204g\315\202\013\300\277\350\"8Xw#\260\277\n\330\334\344\243;\230\277\220\241<\001\227S\212?\253\020\275o\234\245\260\277\324\017\355\242\335\204\271\277\243\302R\275\255\233\266\277\336\270\002:d)\310\277\355\226v\356\350\036t?\366\235\256\363q-\272?;L%\270\030\317\260\277\237\021\362y\037\023\275?\362\272\250\2018\000\261\277=A\n\270\342Q\217\277\310\267&S\021B\305?[\342\373\366H\023\262?X\nH\361\004h\277?\265(\245\272[~\270?\024[\324\275sd\251\277\322\344\t[\200\020\220?1\246\335\266\215\315\255\277\305\267\267\"\311\017\263\277\250\212\217\023\300\017g\277\017\220\256\350\244\366\264\277i6\335\303u\324\247\277{\314?\267c\377\217?\251>\270\032\005\350\276\277m\213\254\225\013~\200\277\250\026\2215\252O\267?\355\321.\007h+\230\277%c]|\305\271t?\230\363\006\245\303\243\277\277\036O\222O*\365\246?n/]\363\r\030\300?\216\253\323\003\320+\303\277\267\221b\213fV\222\277^\367uvo{\202?y\256\004\357\331f\266?W>}8Z\212\270\277\271\3624\242\311 \314\277h\222\006&Qu\314\277\037\315n\004\302\222\252?\317\016y\265\023.\276?w\370\261Q\221\341\275\2772\334N\355el\240\277\020~\271|;\350\267\277\372\2034eF/\214?Y\346Sv\236U\262\277y\327!\030%\260\226\277\022u\347\231\033\246\302?\326\331\345\014>y\261?|\205\013\r\253\270\255?{\307N\334\257Sy\277U\005\240\0018\277\300?\354\357\331\300\354;~\277<\003\033\315\233\276\232?u|\231W\345\017x?\013=\321\337\311l\254?&\322\r\201=\3368?\217@F\272\357\276\246?O\207\022\270\235\037\274\277\353\373\210\270\211\006\302\277\217)@\024\004\222k?n\305?}\341\304\311\277G\255\271\274\032\347\251?\003G4\033\037W\300?P\306\342\254\206b\273\277\203\272f=h\200\246?P\265w+\335\025\260?\202z\271\372\245;\235\277\002I\213\315\253\303\221?\007L&\221nO\250\277\024\210\030{\006\326\242?\237\276\364n\243\2778\266\323\272\010\222\300? 3x\246\272\320\240?\177\030\031h7*\200\277\262\2044\033\271\373\226\277Hyn\220\353tp?\245.we\331\t\264\277\301\365\2510\373\343\260\2778\210\034\332\010|\306?\n\302\2605\260\354x\277\235\345\036\342z!\247?7\317P|3\264\264?\272C0\316\202/\260??\346W\357\376\207\302?b\004J\323\347\035\244?I\000\'x!\033\226?7\270\020\262)p\300\277\253\337\316,\311z\277?\361\227\007\006m\355\261\277a\261)\270T\032\262\277\233\324\001\277\321k\210\277\335\236pp\200#\224\277ex\013/!\313s\277\214\274.F5i\245?\037\202v\257s2\244?5\300\347\274\240\226\241?T\022\275\\\007m\263\277j\036`\030\345\341\230?\272\357\272f\016\303\253?%qb\367\372\003\305?\331\301\013&\232\333\246?UU\206\0052P\221?p\342a=\310\224\224?-np\023\003\305\205\277\n|\354\232\355\262\241?b\271\223\200H\t\302?Y*\310\007\340\244\300?\366\343\340W\2223\244?\215\276\214\215w\331\251?G\200\344\211\277\251\265\277\3111\212J,h\321?2RE\257\300\373\260\277\014\344><<\326\261?9@\255.\330\260\246?\354\354D[\340\022\244?\n5\352\262\331I\300\277\302Z(r3\315\253?\'\250\244u\377\301}?K\240\307t\020x\274?\243\317\232t\006H\266\277\366vh\2642\013\217\277\213\376\263\354\204Q\230\277\310\325\250\241\275\330\246\277G (\277\242e\252?\350\242\002\352\317\262\243?\005\304\275\335\245\301\232\277\0235\247\"Uh\250?\026\203)1\262\222\302\277\003\315\347\307:H\302?\326\233[\301M\200\222?`&\275\312_\252\233\277\360\333=\216\336\323\276\277 .\"}\013{\227\277\337\226\322&\371\r\261?\257\350\346\210\221`\234?G\252j\214\324.\305?\237\237h\316[\346\267\277\246l\030qF>\235?\333BW\251\0052\237\277\377,\253\320\273zL?*\224\330\227\307\211\213?\014\014\325?^\306\300\277Y\211\236c\205\033\240\277\252\312>\'\002_\234\277\342s\372*\0274\276\277\360o\361\002\221s\215\277j\023\276\304\373\017\220\277\t\010{gR\233\222\277\302}\304\325\004\220\261\27703\327\352A|\260?\311\327\301\016x \202?\224\217\024\237\004\315\265\277\0204 \221;\373\203??\\\006\374\347n\247\277D\355\263e\355Q\305?$p\216a\336_\274?\245H\034Ch\332\274\277\333\022\n\203\213?\310\277\355\321\235\274\357g\261\277\211\231\"tj\363\256\277\320\222:\347\2216\257?\035\256UW)j\251\277X\2127\312\3379\304?\005\342T\3146.~\277\205\022\234\212P\341\200\277>\337\\Yb+V?\276\261\260\363\235\366\224\277\252\322\2571\025R\231?\031C\2347\230\332\305?\037\224\377%63\211?!\014\353\033\233\216\275?}b\336(Z\236\273\277\253=\326Ex\370\234\277\364\224\210\202\327N\307\277\341\233\216TFM\266\277\026<\276g\377\372\235\277\030!\350\013\213\232\275?\227\323\216D\215F\257?\243\024\205\224\035O\314\277*\"%\205\317\263\310?\264\313\242\325\311\344\243\277\002\227\241\271\371\200\300\277\306\256\346.`\204\233?\t\355Q\206\211\320\304?\275\253\334\235\3605i\277[\211\350\363\005\316s\277\203\221N\356O\t\220?2!eQ\021\241\251\277\275|\227\025\003c\262?\267\262\324\361\356\177\261\277\206\351\245\302\225n\262?\244Q\373)\001\270\273\277\227\364G_DS\266\277\351\263\252+R\306\235?\231Q\300Ju\240\262?:\024\263a\315\014\252\277\263\372\245\266F\271\276\277}9\344\264\306\347v?\027\340\325\217\220*\212?w\265\201\t\261E\237?\273\027|%$\314\222?7\026\314\000B\n\267?WT\257@n\233\305?\002\275\327K\205F\242?\362\337\374.D\257\265\277\355\271\025\272x+\260\277\265L\246\365\336\215\261?wA\367IJ\n\260?\216\265Z\020\0238]?\232\222s\231\307j\263\277o\217\244\244s\273\241\277\026yR\232U\211%\277\272\'\270A\307\215\262\277N\353\355\231\345\001\246\277z{\267L|Y\265?\3420\355\021\263&\251?G\267\256\311\250f\270?%O\3204\"t\307\277\277\"42\206)\300?\2635U\324\256\372\244\277%\234\217\222\240\254\243\277y\277<\354F\263\220\277T\367\"(\025\316\301?\002[\326M\014\372\262?\\fs?\315i\240?8p~\304\250\033\215?\204\320ZC]\364b\277X\233X\360\250H\250?N5\342\352\205\321\235\277^EcT\265-\237?\023m9\353\023\200\251\277\374\372\204\331\251a\230\277\200L\023\341\253\377\222\277\250\371\2678`\345\254?\270\0179\212\353q\300?/\376\177\355\221\311g\277\314h\177\027\273?\305?\024^1_\356\240\304?\307~\327/7\037\203\277\252]\374\254J<\265??\337\333_\311I\267\277\326\315D^U\272\203\277R`\200\303\200\326\262\277l<\326N\371,\222?\370a&\205*\021\266\277*\271\347\264B!\307\277i\002\247\313\374V\250\277\243\277R](\243\271\277\324p\201\305\313\375\204\277\340\353N\2455C\302?\257za\313Vf\250\277\035\262\352g\2551\314?Z\363\032\234\2279\277?\325!^\336\267\032\241\277\021\014\334\'\2401\253?\215;;fG\004\256\2771/&\363P\303\213\277\034\265\263O\321\022\255?:\255\333\356\313\201\301\277\331i,*\020L{\277\026p\020vG\006\270\277\312\245\206\367\224}\231?\321O\022\253\002K\256\2775\032.M\307\263\242?k\324\305\261\303\\\262\277\323f\035\021\034+\261\277\240u\021\231\215o\227?:Lw\230\232l\230\277\340\306\006V\276\033\235\277\230\245x\2747Q\254?\326Di\027\3427\267\277L\'\270\245\326\016\301?\306\"/\364\374\373\210\277/\223z\005\3229\225\277\226o\375\r\354{\305?\261\273Ps\205\232\231?\214nQ\n5\234\225?\314d\010\274G6\247\277$\362S&\226\r\301\277\247\335`\322\303Q\301?\2730\225\240S\316\255\277T\\\337*\006s\223?7T\001\352\275\325\307?#P\025\253|\362\262?w\003\253X\025\013\206\277&\323Xz\032\205\260\277&E\311\205\0261\227\277\225\233{\356MT\260?N\302\003\333\300\332\234\277 \006\001\211\262\255\206\277\260zz\030\3633\261\277\205\211\023\031\037\037\270\277\244\3434\373\271\006\260?\376\260\2174\335[\305?\306\2277\274\024\350\273\277\001\'\251VK\033|?\214\242\341%W\263\313\277FEA\341G\237\244?#\230\022a%\355\261\277\031\355\326n\257\207\256?%\354\006\205-\252\261\277a`\211\234\224\316\300?fj\314RKA\223?\320|\331\322U\237\243\277\267\340+\007b\035\244?Y\2333\257\200\305\276\277ar\223\233T\376\234\277\2001\274\301\023%\303\277\344>9\304\251\026\274\277\212-w\357Z\356\300?\201\216\307\357\"\020\226\277az\307\276\217\217\257?\240E\310\307\336\310\270\277\251\272;I\271\010\222?T\021\357\360\223%\230?\347\234U/q\345\250\277\345\255\304Q\321\200\254\277\332\235y\036\234\214\237\277\245\010G\333\366\212\261?&\200\340\364\362\343\247\277\263\022%\353\327\324\262\277yC\333\034@~\300\277\tL\361\270E\362\315\277\023D\371:\220\366\255\277\021\224Zo\324\325\227\277\2268z$\353Q\276?\307\267\\\261W\256\311\277\303;lG\2322\212\277\317\020\2200H\364\271?\205fo\347!\310\273?\237\264\274\323\310\310\225\277\2166\315\312\303\361\\\277u\375\340[\326{\251\277\374^i\n\226\203|?ZS\325\213|\206\257?h\313\217\240\225\203\224\277\2615\202\262\204X\231?\337\025\025,HI\302\277*\360\316\301\022\366\200\277\357k\326\300i\"\221\277\007\364\202\327\300\032\262\277\324I\002d\347\373\221?`\256\367A\020\035\230\277\251K7[\201\266\224\277\211\316\302\210guh\277<{\265\363I\017H?V\337Ob\351\257\252\277\341\306\211\216\272\377\224\277`\214eS\222\213\307?\005\237\366\245\345u\266?8\353/\234U\206z\277JX\034rA\r\274\277\340\376\222\212\372*\300?[\240\361\206\330\272\246?\373\210\342\300\247\361\247?\002\305\354;\014\037\273\277M\272\240)\001:\222\277\340\240R\355\tH\251\277\365\215\\\220\313\277\235?\001OPCT\033\262\277<\3054\340\274\317\237?D\266\303\212$M\305\2777i\272\227\036\331\254? 2\336\220%M\233?\024\006O\310\204db?\215\022\234\006^\342\246\277\025t\324\203\356\3336\277\373lR\n&\361\260\277\027\275v\3110m\267?\365/y\036\362\333\202\277M\2506\225\347\025\307?S\204\225.(e\302\2778P&\201NN\273\27741\316\215\356\362\300?\216\217\314\001H\\\257?\003v\360D\227|\306\277\272\325v\033\247\025\260\277D\210\021O\267\375\262\277G\223\221\243\247\310w\277\0342\320\347}f\306\277I\001\rV\322\254\220\277\'4\247\234\317\326\237\277\310HW2\010P\252\277G\357\023\0147I\264\277M\361G\350\334\352\304?<\315\302\014>\366\261\277d\203._h \240?\372s\034\230\266\215\262\277\335!*R\337\233\300\277\006\360\202\267\247q\263?\336\267\000\213\360_\272\277\315b\376}\371L\207\277G>\257\"<\315|\277n\340\274\273\275[\223?\030K\326mI\351\255?\261SA[c\021\250\277\332\207\246YC\212\236?\256\225=\242\370=\225\277\211\001\311\357\317\030\255\277\320\244\351_vE\276?\250\027\277F\004\362\233?\305g\020`\213\266\213?\351P\212W(P\273\277\205\207&\304\033\304\307?\216\3100\332\007\022\243?I\327\220\252\300\314\221?n\362\252}\372\276\257?%\316\"|\332\327\223?\356\234\270N\211\333\243?^L\325s\367J\237?x\246\327Qw\317\255?\223\326*\354\202\212\261?\376C\352\214\364\363R\277k\217\312\3674\265\241\277\035j\t\361\343`\257?0e\255JO\270\272?%\352\274<\323\374v?\362f\tt\275\017\311\277\223\323\275\356\241@\210\277\322\257n\312\352N\264?h\351\233\374d\022o?\252!c\212\264\276\214\277\221i8\\K\031\274?\367\271\353\376\021\344\260?\2614\\\236\3509\242\277\270g/\354\0202\236\277\234\035\250HE\365\305\277\032\0203\304\220~\260?\271\213=W~\313\245?r\276\377\241\226\027\303?i\326\342>\207\242\267\277\035\021\377\204\273\261z\277\001d\304\215\374-\245?\252A\226\310a\177\272?\312\357\341\265\354\353\252?z\233(\206\t\213\276?\346j\343\312\017r\272?\271\253&s\007N\264?\206{B\322rd\245\277W\340\207}\374\274\301\277\244\303\2643\'4\245?<5\232\365\247\324\206?f?^\2071\247\264\277\277\340\352\006C\202\254\277\316\260@\006\301\342\246?qb\"\304V\250\231?<\223\204C9\035\273?\032\2416\304\273w\214?\371\257s\233\025\271\274\277\335\263M\217=\330\225?4g\215\223w\203\301\2773\311\252\2719\321\301\277@\032\251\307\216U\217\277\014\021So8\324\205\277\263\n\357p-Z\241?\371U\364\362\000\321\276\277\026{\006/AG~\277\375\342\363\224\331\354\300?\363).w\301\320\220?:\230\002+\270?\262\277W>\022oB\027\307\277\001D\000\361\240\326\267?\342C\023t\364Y\277?\321\225\252Zc\202b?\3038\226\242\371d\216?Kb\365>\014H\273?rU\221\351+Z\307\277\324\340\016C\247\312\272?M)\216E\024d\241\277\032p\2215\331\374b\277\241b;\036\310\221\264\277\2627i\344sK\262?Cv<\201\"\002\235?=>\341\013\344\0236?\251)]\205\031\212\301?\216\033x\275A\001\310?P\324\013\'qt\214\277\241\n>[X\236\245?\235>=\312\357\261\223?\312\3348\343xc\250\277\245\002\326\243\312\310\254\277\017x\024\215\225\247\200?\257\242\265\376\036\n\263?\267\261G\277\0012\237\277\030\332*\376\\1\276\277T\342!\nWo\277?\257\347\351Q\007R\275\277[\365\n\306\360\353\255\277L\304]4\201\355\263?\375\324\014\314h\366\235?&\331\232D:\367\237?\351f\312#\256\314\254?8@\032\2303\246\306?@?\034\316\0367\272?\271%\2356\261?pm\\\025q\241\203?\300\302\273\302J\270\224\277.\203`$;\347\244?\005\342\372e*\311\263?S\014\263=\253\033\221?2\303\206:]\004\246?\320\213n08H\232\277\3024 \352/`\257\277\266\371\357\354\262\251\250?M\023+l\004K\214?\336n\336\031\214b\243\277\\\214\265\215lQ\250\277\207\222A\353\006\373\231?\375\nnul\247\262?\320\363\177\333\356Z\263?\005Z\370\301 \013\266?v\353\036\3567\337\254\277\\\340~\274\366!\301?\025\226~\002\362f\255\277Z\202K\3548O\263\277y\232\010\361\214\013\247\277\036b\275\346\335D\235\277\240\354\234/\021$\237?\206\232\032L&\250\237\277)\244;\001\324\252\251?\014\203\026\2300\210u\277\030\rF\374\021\232\246?\214\336e\305\202\027\222?\025\030C2\237\353\270\277\035\277\213\330t\332\261\277S6\204p\252\214\241?zH\316\235\324\354\234?w\346\036|\342\212K?\246B\342\322\275\345\305\277\366\323B\2238\361\207\277\004Ew\215\320\251\236?B\211!\035\262\201\227\277fl\337\322\352\001\216?iipx\237\034\262?\353D\264K\206\242\274\277\267\233\353\\N\327\260\277R\347bZ\222\345\273\277\270\024\030\361gF\252?_\275 Sl\310\226?^j\231\362n\242\221?\372\006\234\312d\031\225\277\036\313\024\'\200\313\247\277?\344\324 `\367\246?\341pn#\353\320\266\277R\234\337\265M\306\273?To\274\364\203Av?Y\247A\014\320\345\270\277}\025\250\354\033\351\205\277YF\010\244\337\350\212?\325\313\014\242s\310\240?D\365\266\254in\301?\322=\306\014\253+\253\277\225%c\330e\023\267\277\"~ eJ\232\243?\020\341\006U\020\n\240\277\025}\271Ku\200\245?\364!\202\310\204{\300?a\004\0334\264\177\270\277&\'\325?\342\216\274?\341Mp\376[\233\261\277\221d6{D\034\235?\231k\020\357s \213\277\370)\003\244|\216\314?q,\372)a\305\240\277\200\227`\223\014:\226?w\330N\265\014F\300?\302\367#\000\241\364\264?R\340\357VP\032\270\277\312\225#\213P9`?|\2411\332\376\256\206?\034|\347\215&\006d\277\277\240U\335Ik\265\277\333\306{\362\340l\263?\322~\025\000\356<\252?\234\001\004\013p\317\225?\'\367\037J\252\010\263?=\376\234n\351\213\247?\037\253\\\005\r\201\274\277q\272#\200\347\306\301\277\323\322\263\251>\323\223\277\\\225A<\204\216\261\277\301\006\304\351\036\260s?z\274\270\215\301\206\220\277\260\031\345\372\"0\266\277\375\315\311\r\363\303\262?\023\2418\304\002\202\201\277sD\227\007\314\206\250?R\344\035\311\235l\307\277\253\240\037\242\210\017\307?\005\374\266\004\002y\270?\242\365r\026\322\330\247?\"Ow^\307;\260\277\314)@\273\251q\270\277,\273\261Z\355\275\241\277\0057\013y\321\364\302\277\354\372\201\007\177Y\257?\346\253\032\307\231e\304\277\355\361N\374\026<\236?B\0001=\311Nw\277T\326\360\037\305\222\224\277f\217d\025\230y\225?\013|\235\302\333/\270?\232\352.^\024z\252\277}\210x]M\037r\277\233#\221g\371\353\260?\267\211\336\362\317\215\267?_\307K\241i\351\257?u\'\264\3501\315\265\277\261\301\324\312#+\251?Sy\027{\021\275\273\277;=\266\266\236\350\226\277\347?\372\314/\030\263?\345\034D\272\"\254\261\277\302\261\211\004\324\333\307\277\2419y\235W\034\242\2772VO\'\3124\267\277+y\21176\r\235?\347\201\371\341\346\310J\2774z\205\223\246 \234?\224C\336\005\342\320\234\277\024\336\264\223\2331\303\277\353p\336\034I\232\270\277\350O\240\356\255V\275\277\370\314\3326\261\222\234\277\2443\177\332\250\363\237?\326\220\375\370g\207\242\277\240\375\315\220\205\323\323?\225fmJ88\264\277i\240O\345\004\373\231?7\253\1771\001\017\255\277a\240uk\323y\273\277\253X\341uX\033\270?\377e\357\356v\263\242?\003U\314\200\246>\241?X\240iM\373\033\214\277x3(\344\307\367q?a?\364\000\276E\242?\342!\367d&\027\304?]\361\203\231\013\351\257?q.\215hB\342\265\277\332\025\327\344;`\271?\370\371e\253z\344\256?\253\375z\210e\017\250?\033Fo2<\250\262?\205v\307\310\353T\225?\001~\2410\241Y\234?\247\300X\2308w\305\277/\221\227nc.\304\277V\032b\273\357\004\227\277\211k\002\013\357\002\230\277o?<\355ZO\241?\360-\301t\303\370\304?OC$\342\353\374\277\277fo\020\265\371\201\271\277Slo\032%\212\223\277\305\033,\001\263\275\213?3f|\324\031Q\276?\355\3741H\255\203\264?-&!\230\325\343\240?yVG\207\"\337\255?\316\031\264\016\252E\204\277\267\2508\347\351\250\304?M\353\210\002\356\203\267?\334cW\027\236\376\244\2771\034\310\323Y}\200\277\035|{>K\244\266?\267\0337\301\027\366\262\277z\004\223.\221/\300?\366\031\363K\t\307\263?\373Z\270]I\231\250?\364\230?\342\364 \275\2775\271\225\356\213B\300?\334 \323\027\033:\231?\345\271LA\010d\301\277f3\374u\2516\266?\000\'\246z\325i\306?\263B9{\333\224\237?\306\300R\375\262\206\270\277\333\373\363\232K\013\271\277\005D\n\276\020\231\264?\035\255=\340\2416\272\277\221bB\320|\330\245?v\207x\204\300\203\272?\253i%\335\377\ry\277m\313Fw\0107\211\277\006\244\rXT)\251?\213q\356\203\367\335\277?\337\016\277\311\344?h\277\365\251\207\236z3}?\253\237qc}l\303\277F\201@p\007^\241\277\374\177\341\241\257\035\257\277\343|l\255\205\254\274\277\026\324\365~\263o\260?\264\204O\017\206\216\252\277\242\241\335\362\300\r\254\277\210P\220Z\256\346\245? }\r\216\315W\304?\250\021\316J\262~\231?\246\253\377\001Np\256\277b\226\243j#\035\260?\234c\327\210\023\311\264\277\340\241\'\231YY\231\277\337D\033\355\227\260h\277\253\351\020\301\325\375\307\277\244;Z\262\254.\252\277\363\224\271\223\331\271\242?\206v\3277\013\342\235\277\341\251\356\223\365o\270\277\303\023s\024\3131\242?\371\334\255\375\214\346\272?\313}\236\177b\300\305?7\\rv\202d\260?\243I#\014\201\205\245\277\000\344\353]\256)\243?b\220B\322\003\257\244\277\363;n\027I\314\232\277\315V\023\220&\204\260?\276>\342\306\223\270\234\277\346\370;~\3659\256?\202\367\007g\035t\225?W\020\351\313\242\313\260\277G\214\264\251\377\222\243?a$\361e\023:\266?g\222S\235\256\371U\277\270\323\342p\251\031\273?m\333\303\263?\3054\275\200\301!\305\277\001+\017\251\2034\260?\'\267U\243\316*\267\277\221RD\313.\333\263\277M-\200\252?\337\244\277p\245\263Fj{\265\277PZK\'\333!\267\277\212~C\363\251h\266?U\003\036\241A\317\240?\232\207\251\030\377\341\251\277y\265f@e\210\244\277x;c\r>B\261?\232\346H\0001\310\264?-\257K\034\236\271\211?L\004\241\021\236\222\275\277R`l\036q\305\250?\2773/\0266\213\267\277\215\262._:\361\300\277\210\"\2477\366\327\310?\355Z\010\307en\271?\232[YD\260!\206?\371\t\363\356\020\234\274?1\364\202\213:,\223\277\003Z\013{rG\227\277\3207\002wo\203\234\277\037\204\322eV\321\222?\017\214o\235\304\347\245\277\232\246\177\314\301\331\252\277\365\217\370\r\254a\243\277U\017P\250N\357\215\277e\373\265\365@2\221?{\313\357.{\305\267\277\317\213\032 \260\276\270?\\\023R\246\005s\222?U\035\217\260p\337\313?\362\213\356h\352\033\212?+vY\211O\226\236\277\230\254\305o\0209\270\277\335\261\310\001\032\377\262\277%K\247R\354\020y?\260T%?\264\257\306\277\017E\034V4y\262\277\220W&\326\304\311r\277G\260?<)\275}?\224\350\337;\371\201p\277\n\"\346\032$\214\204\277\203K\205>0\251\232\277b\034\222\217~\307\302\277x:\3014z>\307?_@\241m\365\303\245\277\207\035d%\2770\206?\223\310e\340\326w\250?ZT\027\\\232>\260?^C\303\334\245\211\241\277\\@\273\213^j\300\277\243\346\201N\240\372\301?\300\3155\206\221\240\303?\337\300\342\031\001\206\235\277-\320\210\253\277\003y?b\2711S\276\305\260?\306F\007w\235\367\276\277\262\261\257=&\356\270\277\254\334\272\035c=\300?\301\002\306Xv\210l\277\010Q <\007\251\251\277[HG\006\227\017\226?\013\361](\211\345\273?<]\262\302\006^\241\277JU\360LWM\246?\276A\206\007r\025\304\277\20198\364#\350\301?\025\032\325G\0001\264?\360;\327\246\364O\234\277\t$\027R\302\024\223\277X\355\256\031\207n\245\277\310\032\235)i\351\263?g\203;\032\361\336\263?\005\200|\231\230\333\305\277\3349yVf\350\272\277\251\355f\240j4\300?{\213\207\rb\016\270\277A\273\26722\344\225?\303}\237\307\\\352\255?\000T\223\235\346\020\301\277v\005\317\276<\322\262\277\333\016\340\336\343s\270\277Lmnx{\265\304?\036\0374\355\n\266\252?\301pt\210<\\\200\277/\211Fi\305\337\300?{lw\313[\003\252?k\316\014\260\266\014\261?\342\347\253\347\217\302\243?\025\327\365v\265\277\264\277\246c#\'\024\r\305?i?V2\322\364\251?\307i\255L\325m\220\277\322\376\2511\277\022\201\277|\231s\337\177\243\245\277d\376\032\217\367K\242\277\244\230\317\240\241\254\232?\227\237\377\236@_\307\277t\024D\372$\322\263\277\300\004n\206`\016\243?\213\305An\347\223\225\2779\317}\320\346}\251?\373\361\342\372\270\230\273?\364j\275\001\352\362\232\277\356\355tO[\n\272?x$z\220A\261\240\277\300\3717H\031\023\275\277\367\332\241\347?\016\264?\237M\270\253,\\D?|\372\260+\316\257\277\277mAX\252\322\n\263\277\345U\261\362\355\345\265?b&\344\013\255m\274?Q\220M\306\342\263~?-\310)^W\005\274?f\200#\202\202(\215?\023\r\035\32492\267\277\321P\006\037\227\213`?\273\235\326\306V\022\314\277\345\231\346\361\213\030\250?\355\243\242\345\305\016\271?\265\252\275\036es\214?\233\370J\332$\036\212\277\346\224J*G\'\260?r\021f\214\235u\302\277?>\3059\324\276\247?\3142\301\325d)]?\226\232\321\234v:g?\360\252r\365\377>\250?\333\017^\213\017<\244?\373W\226s\263\303\302?\311\224J\001_C}\2774\016y\033\005\027\253?\224\341\231{-\336\276\277\274B\340\340\320x\266\277\000\301\014\341CK\275?\203S\307\342W\026\262?\310Ne\024\\\223\234?\350\330\323\323\212\374\245?v:\r\330U>\271?\232\324\321\274-m\264\277\343\005\241\202\350\275\246\277\343\276\232\201d\030\311\2770Y\016\006e]\272\277z\265\000\027\201\210\260?\035\213\337\266\322.\270?\007\255\235\351\254\326\224?\0022[\026\232\343\262\277\312\336\031I\300\313\302\2773o\005\346\327H\301\277\260\376C\253C\203\252\277/B\277\305F\310\263\277p\245rsnP\304\277\2715\264)\350V\272?\235\325q\021\212k\274\277Z\366fQ\242b\307\277\024\273\030\335\260\226\254?\252\346\327A\035\264\272?\367\207\"o(MG?3\266\362\026\314p\260?\334\241\361d\224\211\217\277\233\317n\224\350;\255\277Q\236\274\237\213h\225\277y\341v\206\024]\302?\240O\3118\214$x?=>r\246\205;;?\311\271\201\275\352\220\203?\332\316\002\354-\353\267?\244\332\215n\033\262/\277\033\214_\312\255&\205\277\000\217\225\207\263%\231\277\363M\262_\035J\304\277FO\227q.8\224\277.\177p\331\t\311\302?9\205\217\256wr\257\277I!r \033\235\311\277\237\241\264\235\212\274\274?\237\374\312\260\323\007\214\277\331<\007x\256\202\224?k\331\007\204\204\334\260\277\013\023\013\330\304\014\244\277\002I\216l\377\"r?\303\344MMYx\276?\271\347\233\227\223\354\272\277\331\270>h\321\244\261\277\035\333\017-M\250\223\277\"\005\231\037\003\030\257?\363:0\td\262\305?\362\375^\342\375(\306\277\222\020\372\377m\257\253\277\341_\357\263\373\263\311?0u\246\013\243\330\264\277\2353\304l\212\305\230?t\213\244\020\371\264\207\277\317\324\354\006:?\313\277\004\3378\210\037\022\235?\355\345\006\032\371\356\276?\350\017-\243\237\272\300\277\262N6\352\010[\223\277\030\204{\200\377C\265\277\323\334\221\032r\327\247\277\317\3317v_!\310?\354\241\001\341\353F\267\277!\302\242\277\356\236\276?\327Q\210Zu\255\315?\206;\376\222\377\370\221\277\251\"P+\262\373\213?\2411\357R/=\266?w|U\006\304\204\302\277@\206F\314\334Y\247?\227\357\204\020\342_\250?\3155\203\2061q\242?O\263JF|\266\213?v\302%R|W\240\277\206\342\315\023\355\322\253?a\334~\267 \256\263\277\205x\325r\233\251\253?f\225\232`\377v\232?\'\306#\255\364\373\253\277\206\227\320\252\374S\251\277\366y\363\241Y\370\261?\243\213L\345\"H\244?\002\207\273m\200\242\240\277\360\r*\004\222\214\217?\207\030\325\032\353\251\303?\001\037\274\317\241\005\300\277\246\017\310\337\024\307\223?\354\210_\333.h\251?\002\306|\236{>\241\277Vn|ag\215\247?\035\006\312\215\374f\245?\2351qI\303\310\300?:\231\306\347(\\\272\277\013\322w\2337s\213?\206\306K\302\031r\254\277l\325\356\t\027\230\234\277\237\035\n\262\225lg?\005\021\n\037\272\313\203?\301\014\217\270,\360\256?\242*\304\221\253>\275\277\017\266@xz=\264\277\251^\375Q\256n\222\277Y\351@=\032\242#\277\211(\'\024\267#\265\277\251b\270\357\244M\233?s\305\373e\264y\300?\031\2248\223\233\002\263\277\250(I>\375\025\213?\367\242\351\355\211\353\256?#\244\352\372I/\263?@nR\036\"b\237?\316\322\372k\267\227\253?\273\220\315\215\335-\262?\213$\030G\327\321\317?;\343\257\350\316\317\230?\211^\321wK\261\254?\221\216\234#!w\264?\361\016R%&d\263?\232\017\001\031r\267\260\277\214:w\215\310\371\306?\t\271\320 {t\265?)\212%q\346\367\270?\352\330yi*\034\275?UI7\271\274^\311?t\272|\301\265\273\260\277\024=@&\014\316\272\277y\024\305\254;%\222\2771\347$b\357\003F\277\346\305\260rl\267\242\277\202\323\036N\203J\275?\303\363\251\036{\002\256?\2304\204(\217\251\275?B\217\360\260\'}\266?\224\350\346\030\260\210\273? \325`\320n\334\247\277B\326\035\341\347\211\241?\020+_$C;\272\277,\230\223\206k#\264?\343\372\220\235K:\227\277c\220\251\276\315\241\247\277\271\017:\245Oy\303?\243zr\370\3624\252\277Z\300B7\036\225\302?g\027\376hT\205\301?PC\021*(Jl\277\255L7(\014\360\245\277\303+\373\223\334\307\271\277\2640\354\034WG`?\3530-\214@\341\223?\n4\376\004\345\322\270?\274\t=\314>\235\245?\005\3275\214_\311\262\277\302\223\216q\341\037\246\277\025\t/\033>s\261\277\354\345-F\333\370\265?\273\021+\262\026)\277\277\0231@\362<\267\206?\265f\006*\326/\234\277\272{\034[-\235\216?k\262)\343?\225\260\277\034\334\005\001\345\370\303?\243I\024\350\251\256\300\277\355\320\342\234(\233\311?\003BUkMv\275?\031\010?\342\341*\235?\31349\022n,\310\27794@;\322_\242?1\357\002\230C\367\274\277\003\301\351C\316{\265\277\023\346\363\255\212!\303?\230\240\3701)\332|?<*\364\276\246\265\236\277\275u{\247\031\267\222?bo\223\362\013\354n\277\230\311G\211;.\270\277#Lj\366\342\014\275\277\033_\247\247\222j\276\277\037r\007\311\2231\321\277!\274\200\350\340\360\235?\250\266T\005q\322\213\277\303\222s\256\004\220\243?d\252\317<\302y\265?{\0317O\340\276\303\277\020\214\222Gc+\277?+\253a\030\026\267\245?\017r\025@Tm\300\277\345/\310\344x-\213?\"\n\256G\366\242\272\277|\374\363)\362\264\300?\251\367\204I\021\032\226\277g:\2331\362\014\210?\331\206\330\236\323\t\262?|\246n\344\347)\257\277j\014d)x\354\302\277\t\232\275\375Z\013\230\277,`\352aP\024\303\277s\224\210\007\026\021\264?\353\350\375\021\237\224\243\2778@\215j\252=\240?i\255\326\336\323\345\233\277\262>:D\213~\266\277VD\267\365E\343\221\277\002:\374RX\322\240\277e\216\204\214f\255\227?\265\r\323`L\346\262?d_\345>}s\310\277%\365\235Wlw\216?l\357\020\204\237\233\207\277\374svc\"`\262\277w\3352wg\247\222\277\214>xjN\032\235?\001\027\367hl2\267?\267\247\235[:\302\207\277\362\035\026P\017}\201?U,\361u\250\265x?\037\261u\343\304\n\251\277\201g\347\263\'\276\237?(\326\t\034D\315\221\277WhO\350F\333\267\277zQ\255\347E\317\240?\337\nES\014\305\267\277\026\265\0242\330C\224\277" + } + } + } +} +node { + name: "layer_0_type_0/matrix/read" + op: "Identity" + input: "layer_0_type_0/matrix" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@layer_0_type_0/matrix" + } + } + } +} +node { + name: "layer_0_type_0/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 120 + } + } + tensor_content: "b!m\002\033\311\364\277mj\027\32472\263?z#G\005R\'\333\277 \220\336\246\274\360\334?\376=\235P&\320\332?\210\342\tk\272y\322\277y\21169m\360\352\277\346B];B\340\302?m6\304\357\307w\240\277\316\230\250\207\374\360\377?;Pw+\007\271\335\277\317\264f73\227\230?\227\341\255vO\324\334?i\250\010z\302m\360?%d\237\227\240q\367?T\206\247\003\261\301\360\277:\232\373G3\230\347?a\003r,\243n\342?\270\271S\217\252h\317\277\230Xo\215\n\025\376\277p\347\\\334\202\315\341\277(\026P\222\213Y\264\277\223\362r1\350\r\275?\005\327\216P\025y\330?\261\n\321@\n\206\002@\334\221\215\\tc\342\277\314\005\002\247o+\371\277\346\371\342\251\300\311\367?\316\356\373[\352.\344\2776R\010\322V\320\331\277\253\"W\234$\265\355?9\265u\362\306\330\307\277Q\265\370\337/R\322?\350\357\336f\255\311\260?\311\246\017\340(T\300?\006\355\271\355\204\034\007@\\\201\362\360P\342\374?C\274\372\315\177\\\373?c\020m\201\336\214\377?\n\3350\006\267\306\354\2770\257\210+U\216\350?\025\nn\000R\242\360?v\261(\032\373\265\346\277k\256\370\237}\320\333?\243\324\220\326\"\344\357?\026\325<\030\330:\000@\362\274q\200\244\253\343?\007ESLH\366\264?-s\370\255\264\200\360?\363h\026\217\233j\363\277\334U0\254\256<\000\300\342>\037\033\246\r\364?\313\t\317\371\260\346\325\277=\\Nj\273\030\336\277)\351[;:7\340\277\023pQ\202ci\322\277f\271X\244\3307\360?KV\326\250\032\003\370\277\277\372 \223\302\243\332\277K\336\353\307V.\321?\255\026\016\260\227\315\345?\353T\305\036+\r\354\277F^\313\206>x\345?\0226\004(\340\200\363?\r\365\251r#0\370\277\367\365\312\026Sd\266?H92M\360V\353\277U!\376\237\343\034\351\277v\302\344\310\2203\363?\3769\364k\300\202\371?\231\310I\323\227_\341?\020RTg\222\232\312?\337oq\025\203\007\320?w\320\206\330\016=\336?\355\366\214\364\350\024\346\277\320\345\300\276Y\n\377\277\024\000\267\003\334\214\346\277>Z\021\307\274\373\231\277\301\262\354)\017\227\334\277\005x\0317\367\262\236\277\272\317\0051\310I\327\277\236\254\033\326\275\\\006@\221\364S\234K;\373?^\332\364t\221x\361?\003\272\246~\2703\333\277\361\261\326\300<}\373\277\224\177\255f^\303\277\277.N\317\310\206\257\300\277\303g\220\255Yb\324?\260\200\245;.\272\227?\345\201I\027\212\022\320\277\225\332\r\344K7\350?\241mp\326\326\263\363?~\322\370\351=\027\314\277\r\211pp\261\022\346?\207$\363\024}\273\364?e\005\263\244Q\336\301?\311Pv\204bL\322\277\353\"`\337\226\330\346?LC\331nu\276\350\277\307\010\331\240\223\177\373?4\362T7w\'\360?8:o7OM\343\277sbZ\272\324\220\361?\\\242!\004M\276\332\277\276\256{+\337z\355?xb\034\020\322\376\335?VB^\346l\t\373\277\2503~jJ\250\361?&\324\226\232L\344\370?\272\354\327z#6\374\277KU\031\224D\356\371?TD\306\230S\220\273?\331\020\213J\275\311\367?&t\270\033Aw\365\2773\262\263\376\270X\334\277\255\232@G\263\375\275\277\314ng#P\353\331\277\204\304\177E\'\355\341?6\324\376\027Y\344\373?" + } + } + } +} +node { + name: "layer_0_type_0/bias/read" + op: "Identity" + input: "layer_0_type_0/bias" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@layer_0_type_0/bias" + } + } + } +} +node { + name: "layer_0_type_0/MatMul" + op: "MatMul" + input: "Reshape_17" + input: "layer_0_type_0/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "layer_0_type_0/BiasAdd" + op: "BiasAdd" + input: "layer_0_type_0/MatMul" + input: "layer_0_type_0/bias/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "layer_0_type_0/Tanh" + op: "Tanh" + input: "layer_0_type_0/BiasAdd" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "layer_0_type_0/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377x\000\000\000" + } + } + } +} +node { + name: "layer_0_type_0/Reshape" + op: "Reshape" + input: "layer_0_type_0/Tanh" + input: "layer_0_type_0/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "final_layer_type_0/matrix" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 120 + } + dim { + size: 1 + } + } + tensor_content: "C\000\024%\330B\215\277\003\225\340\252\3436\265?\205\307,\022\005\237\303\277\222\247\367\300@2i?0\005T\333\324\242\266?\007\030\006\322\302*\246\277\342\207l\0263\215\274?\202\007eL#\304\246?\024\363\230zK\203\300\277,\037\234\002E\211r?4\347\234\371\200\376\265?\0237\3329\371\301\241\277\363N-\306\030}\205\277\357\233\3063-\301\240?\236\033X\000h\264C\2771(\302c\\~\302?#$\037\206\345\227\213\277l\013\365\337\374\226\274?Q\004A\214\260g\261?\225%\006\026$\343\267\277\223\220\361\275\245(\260?g\224\237\300\353\210\246\277\205=P[\001\024\307\277\204\202n\264.\332\271?r\3215N\223`x?44\346\236\370\235\233\277\241\206\214\364\357\231\202?\'\t\346\273S\245\273\277\277\t`\013\251-\311?Q/\037\234\033\025\302?(\030Oh\0310\275?P\177\"\010\256[\213?\202\313\3036 \237\267?6\326\355\377{\325\300\277\302\344_\305\266\032\301\277\255y\271\037\222\021\276\277hF\267\254n\363\247?\364W\326\351\252\360\253?\303\306/\222]\261\265\277`zfd\347Q\240\277,:h\331\203\375\222\277\247\221\320\227Ll\210?w\271I\333\233]x?\314\0335\024\270\207\243?\334\266:1l\275\301?\034/w\270\275/\264?p\307\201\207\226\023\266?O\347\201\372\222\030\261\277B\3531\210\025z\301?.m\364\035p\230\270?\210\023az\332\220\300?~\261ZZ}W\246\277\222ocN\207\350\266\277d\237\344V\236\210\265\277DHb\370\275\211\215\277\033\344\010\322\343\rA\277.]\263\207Q\003\260?Vk\310c^\355\260\277\266\000Hf\033P\227\277\331\343\244\362\177\204\265?f\262\203\234\375\244\303\277\232~\232V\007\305\267\277\363i\244\325:F\244\277\350\365\305\275\363\252\237\277\023\256\002\333 r\221?\374\254)\004\240\355\305??S5\226\366\035\243?_*\2274\266;\275?+T\371\247,\212\221\277\312\233H\215\202\016\266?\305\005\213O\203\306\255\277R\334N\313\014K\274\2777\036\3768\263v\262\277\217\240\317\305\362\230\243\277\361x\327\371\010n\261?\202<\220\363u\t\272?\226\234\350%(\337\244?\007%\353\351S\315\236?B\n!\330\2667\254?\222Um\365j\314\263?\273f5\217NX\207\277m`\010\351\242>\226?\273\257\225\266\007S\177\277\367\232\024\377K\210\303\277\276d=\231q\230\204\277\355\334!\214\304\237\273\277\330hx\352\272c\251?\314\261r\307`!\263?;\000\362\320\371\320\256?\361\312~\374\270\001\234?\223\352\014\231\006\316|?\357U\323\034.!\251?\002\322\315?:\276\307?\255\002\031\377\325X\303\277E\323\237\251H\337\311?~H}\374\321\277v?|\010\274Q\366[\272\277\344{X\025\021\270\235?\366\023\211RNq\224?.Q\330\302X8\307\277\343,\352\340\361\232\262?\214z\340\323\2615}\277\367\007\221{$_\260?\032\256K\260\251\022P\277\026\367\023L`\265\236\277\345~u\236\316n\264\277W\265K\317\014\217\315\277V\316\255\025\252d\257?\317\344\331\326\314\337\206?\034f\344\263I<\310?\262\221\305#\202b\252?x\367O\244\245\200\222\277;$\005=\211\324\271?\013f5R\250\227\245?\177>\364\2747\335{?)Wfk\230 \243\277\036=:\376\037\364\262\277\240\310%\001p\356\255\277\260Bc\331\231\021\262?\244\231\354eY\361\240?" + } + } + } +} +node { + name: "final_layer_type_0/matrix/read" + op: "Identity" + input: "final_layer_type_0/matrix" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@final_layer_type_0/matrix" + } + } + } +} +node { + name: "final_layer_type_0/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + } + double_val: -0.45491870953396435 + } + } + } +} +node { + name: "final_layer_type_0/bias/read" + op: "Identity" + input: "final_layer_type_0/bias" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@final_layer_type_0/bias" + } + } + } +} +node { + name: "final_layer_type_0/MatMul" + op: "MatMul" + input: "layer_0_type_0/Reshape" + input: "final_layer_type_0/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "final_layer_type_0/BiasAdd" + op: "BiasAdd" + input: "final_layer_type_0/MatMul" + input: "final_layer_type_0/bias/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "Shape_4" + op: "Shape" + input: "Reshape_14" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_17/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_17/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_17/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_17" + op: "StridedSlice" + input: "Shape_4" + input: "strided_slice_17/stack" + input: "strided_slice_17/stack_1" + input: "strided_slice_17/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_18/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_18/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 3 + } + } + } +} +node { + name: "strided_slice_18/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_18" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_18/stack" + input: "strided_slice_18/stack_1" + input: "strided_slice_18/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_18/shape" + op: "Pack" + input: "strided_slice_17" + input: "strided_slice_18" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_18" + op: "Reshape" + input: "final_layer_type_0/BiasAdd" + input: "Reshape_18/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_19/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_19/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 3 + } + } + } +} +node { + name: "strided_slice_19/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_19" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_19/stack" + input: "strided_slice_19/stack_1" + input: "strided_slice_19/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "add_1/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "add_1" + op: "AddV2" + input: "add_1/x" + input: "strided_slice_19" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_20/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 3 + } + } + } +} +node { + name: "strided_slice_20/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 4 + } + } + } +} +node { + name: "strided_slice_20/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_20" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_20/stack" + input: "strided_slice_20/stack_1" + input: "strided_slice_20/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Slice_3/begin/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "Slice_3/begin/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "Slice_3/begin" + op: "Pack" + input: "Slice_3/begin/0" + input: "add_1" + input: "Slice_3/begin/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Slice_3/size/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Slice_3/size/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Slice_3/size" + op: "Pack" + input: "Slice_3/size/0" + input: "strided_slice_20" + input: "Slice_3/size/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Slice_3" + op: "Slice" + input: "Reshape_14" + input: "Slice_3/begin" + input: "Slice_3/size" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "Reshape_19/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\020\000\000\000" + } + } + } +} +node { + name: "Reshape_19" + op: "Reshape" + input: "Slice_3" + input: "Reshape_19/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "layer_0_type_1/matrix" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 16 + } + dim { + size: 120 + } + } + tensor_content: "(T\3151\263^\210?\301\360F\335\312\363\245?\257S\244i\310}\267\277c\220\340\001\275\335\253?e\025\030M\364\373\201?\023\273\353\254A@\305\277\026\373,\312\030\223\264?D\001\036\021\244q\230\277\030\324\024\255t\256\245?^\300p\325i\224\301?\345K\002E\335\302\304?\3344B\317\023\371\254?\'\031^\032\262c\303?\237\374\016\275\323\240\306?.aBP\016n\260\277\352\034\001\177\314v\212?\356|\246\256\214\313\251\277\3223\263\2722\335\253\277\303J\226W\205\364\303?\257\353\252\2349J\302\277\254U\232w\205\325\243?\000H\314\216\004?\241\277d\202\263\260\371z\247\277?B\327\027\3351\246?n\305\356 C\226\256?j\320kx\2011\275?\356 \t\342v\213\304\277\231U\036)\333\370q\277a\n\254;\354\301\300?B\263}P\004\305\300?[\341\214\373\321\017\231\277\254_/x\226e\303?\335XNm\226\325\253\277;\305\213Fb%\300\277#\3062\033\314\"\213\277\2655?\342\002z\201\277\204\345\244\355\0361\230\277\200c\023|\374\270\307\277C\365\332\005W\017m\277S\2460\277\252M\270\277)\336\006\313\263=\204?\305\320\307\315\035D\265\277Qu1\375\304\320\240?{\363\0063\255\336\241\277\260[\220*\014\266\274?\022\367\001XZ\323\256\277\323-\300\321oV\252\277\323\216S_\222\001\265\2779\334e\254vE\273\277\314\026\010\312\257\206\260\277X\030`\315-e\243?\324M\345\320\366\355\226?\366r\316\246R\314\300\277\340\010\207\221\205\357\273\277\"b\234\243B\257\223?\324\274\014\214\375\034\254?\236\0133\300\255\225\233?\341a6\203?\254\241\277^\207\236#N\211\261?\366+zg\2121\214\277\273\000\254\342|b\231?l\006\373\267\341\253\206\277\200\370\223\035\002\362r\277\010n\021]\200\214\306\277\234\032\366\336\020\313\251?w\032\343\331Q\201\300?\367i\353\312\204\307\241?~\362\331V\344J\265\277\002\001\024\013y\034\256?\035\267\033\217\016\355\257?\243,\341\223%q\267?\032\226\376\2370o\253?3\277:\375W0]\277\370\207^\304\327\030\272?\\g\346)\272\250\271?\366\332\205\315z\314\314\277_o\204\364;\262\266\277g\364\177-;\254\210?\001,\020TZ\020\303?\320M\314_oP\203?\317\202\251{\000\303\251\277\274Z\231%>\255\245?\036SY\264Q \311\277k\336\013\025fk\300?\354\207\326\027\246m\244?\241\304*\007\346\216\244\2779-\'\262]{\253\277\003Lvc\267\351\247\277,A\244j}\013\240?\336\2711\237\302\220\250\277\270x\322\327\316|\273?\273\313\323\210ua\261\277\002\341\010t8=\237\277\302\217\211\330\213\245\301\277}\014\263\371\356\205\277\277D\221\330\376wo\237?\325;\2564&r\236\277r\036U\201E|\307\277\331\373\321\314e|\234?\350%b\020\034\375\223\2774/\3739w{\230\277\021B\357\271e\010\307\277xP\3342\303\225\251\277\004\341\002>\367\236\207\277\310\345\350\343\264\343\260\277\020\007\217\\Q\375\245?\246\266\334\304w|\236\277\014\025\035\334\210v\235?\3746\202\t\261\262\262?\333\354\202\"V\334\225?x\315\n\343A\235\261\277\221\022\356\020+\323\241?\311\362\2629`\334\307\277\343\013\264\257=\224\231?\274;\316qm9\207?\316C\225\360\266\245\256?0\034?\2200L\201\277*p\345\374\034\310\267?\363\370\204\271\235\202\251\277><\354\270\267\325\271?\177:\316A\262\334\264\277\350W\030\323\244\035\243\277\223l\266\307\343\220\274\277\001A\254?\262\367\244?L\257\324v\227\377\262?q!\350\321\257{\274?[\032CL\3358\306?\274\324\237o\305\322\236?E\031i\227\355^\234\277\014\315\314\222;\270\271\277\375\216\223\027\240#\270\277>\323\205g\255X\224?J\266\017\327\302\236\316\277\313\\\220\346\322zw?i\212\214\3132\243\302\277\266\2164\373m\201\253?\212(\315\000\277\323\255?\001\327\212\320N-\267?\306\336[\356g\317\256\277:\325\320\350\2644\222\277Nq\316\316\240\000\263?\354\352B`\221 \270?\330\210Rhj2\270\277v\\\332\216)\212\245?\343p\375.X\303z\2778\366lkR#\277\277\347\210\216\257\245\375\253?\351\340\223\250W\274\256\277\234 \274\005\272O\301\277\2716Qc\207\231\266\277\265\362/D\254d\207?\"\272\354\347\347\374\257?\355\256o\326N\325\244\277C\303h\235\344\034\270?\227\364wD\267g\260?\343\310\035\243Q\246\263\277\351^\2050\240j\227?F\200;\364\202\004\235?\2455\275\"\274\351\305\277\341|\231\325QZ\254\277\002\266\262\332\263\233\302?\272l9\376J\206\246\277*\305\265\027\320\367\210?\266\207\333\021\367\243\255\277\302Z:g\017\251\265?\'\365\2551L\205\246?\265~\365\274\301y\303?F\222\036>\203j\241\277~\201\016\225@O\267\277M\t\310A\216\276\277\277\355\023\241\277^8\250\277\244Dn\004\3225\274\277\3657D\225\np\300?Q\024\3632\235\334\232?\0270\353\314\0259\267\277\207\264\265\241\207\332\267?A=\336\004A\207\242?]\246\010\376L\324\242\277QD\377\347(\211\234\277C\031\237\017\253\361\242\277\337b\266\346\257\330\226?\211\213\341\235\251\324\236?PN\016\206Z\202\256\277\334\2619u\366Y\214\277zR\3139\030L\225\277\021\n\350\235\333\262\272\277\200\2573K\357n\243\277\347I\255\260\006\265\203\277\306\017\014E\266=\305?\377\266_\370e\320\244?n\317.p]\005\303?\347\226\266!9\032\260\277\227*\204\265;\237\222\277\337\236\024\216\235f\320\277\024\213m\253\352\345\264?\342\013\021*\312G\216?\337\275\020_\311\007c?/\306+e\302\242\231\277\310\303\322>\332&\264\277ZW\317\021\251z\305?\316\327\3614\326c\227\277\302}\222\031\241p\212\277\223\314\251\301\276\005\205?\3140\241J<\302\265?\031\204a\035\324\230\267\277S!\340\373V\263\262?\255r?\212\014\363\260?\035$I\226\300\304\260?\341\356k\2243\247\247?\267\337\237\000\336\302\303\277\203\270\240UI\216\302\277\344\001\305\261\371\340b?\036\022Z\227`_\261\277\342\277\274\030\017U\264?\006\306\370\301\262\220\261\2776\273\346\335\213J\243\277\324\323IR\333\305\252\277\2442H:\032\267\250\277\025Ohy\240\232\235\277U|x\261\312\'\276\277\231i\216\031\221h\311\277\r\323\327\275\240\256\302\277W \0048l\260\253?\0203\033\345\222j\222\277\365}\005\277\027q\242\27794\226tI\370\263\277Q\215\201%E/\262?4h\345FQ[\300\277Q\321\302\360\247\320\306\277\003\234\216\227\262\327\257?w\366Fx_/\244?\335\255\334|(=\270\277>\323\374\251\263\206\251?a\353\303\217L\026\275?q\014I\031~\331\276?\"\366\024\013\232(\262?\333i~Q\202v\251\277\303\312\254\225\357j\216?\341N\260,45\311\277\224\255\007&6\305\242?\t6\3006\322\251\270\277\267\216\246G~\216\260?\330\372\303\224`\362\251\277s\325}\357\022\323\252?~\2373\365U7\263\277XI&\340\207\036\304?o\356\217\307\265\227\226\277\364T\310\251\004\200\241\277\'\241\337\253S6\222?\005\t\006\302\262[\307?\272*e\001X|\266?\363>\007\356\372\350\263\277\271*aMZ\306\201\277\217\353\347,\262h\234?\260\3320\274\t\204\305\277\334\005\363\036\020\tn?M\355\214\310\244]\234\277z\n\206$\210\262\267?S6.\246>\344\243\277\350t\230\207!\033\264\277\350\316\214\336m\357\252?\330\327\001\271\n\276\261\277\272\003\325\324t\206\300?KwV!\247\343\226?\326\312\2517\204\331w?\2476\214\024\332\374\267??\365\200\304\027+\254?wHT\020\016^\207?\344\034\301\340\016\275\236\277%So\025~K\301?bI\306\rR>\247?\200e\200}7\363\260\277%)R@\353\203\256?\377\210\272l\226\206\246?\034EZ\357\204\310\262?\237_\tz\271\023\252?\203\204Q\201\350i\261?\nM\212vL`\307\277\026\211arP\312\251\277z1`3\341\014\247\277\035\023\261w\0202\262?\326*\350\262\270 \212?B\323oN\r\t\264?==O\211Z\220\271?\035FW\213\037\256\265?tl\004\346\261`\250\277\274\'{\264l\300\254?9p\370\002[%\300\2778\367\377\333D8\241\277\031\245\252\253\032)\271\277y\016\203\024 5\271?\366\363\350\000\323m\277\277\312!E\022r\310\274?\206\t\310\267\247\341\270?\237<\226B\355\205s\277\220\301\004(\3101\217?\220\"WX\017\377\253\2777\213\376\270\207\311\267?v\364[\357\312\252\246\277\237\027\375^\262[\252?\337,^\340\312\250\271\277\256\032[\334\037\275\234?\235\031\010YLY\241\277\310X\341Z=P\246\277\331\214\376\230\205Z\304\277 \371\201\3245\000\272?WM\336QEq\241?(\007\225\336\361\246\260\277HL\020S3\237p?\274V\303\014\"\323\271\277yz\350\225\305\r\242?\210:\302Z\254\277\264\277\226\202\344\027;\320\262?fb\371^\343\217d? \354\277\204\251\315\242?I{\022\231\000\322\277?\264\304\005U\375\277\221?\365)p\306I\261\262?%\373\231\355\036\236\243\277\356\002\272\\E\312\303\277\227\370\307=\036\207\242?:\326{\'\233\310\215\277\025\241\206\323\272\243\262\277\223\267c\216\026!b?\311Iwx\213\250\243?\322\311\277\373,Z\262?pC\033I\020u\202\277\006\010\312\324\254\301\223?\276\356\263:jx\270\277B_\372\321T\371\247?\262g\334\257\355\260\302?)\025\262\201\026\204\235\277\320\261\347d\237x\274\277\313\346d\216\026\217N\277\307N\013\373\037F\265\277\2045\\\'\257\232\265?\357\276^\341V^S\277Kw\303\242\021,\242?(J\342\206\205\266\241\277\270\334\002\211A\374\246\277\027\017\251\301\263\246\256?(\2725H@\207\276\277N\240]fz\004\302\2779\263\277\027p\265\236\277H\221S\305J\024\234\277\360\331\3264\203c\245\277\030P~\r\326\312\303?\\A5\r\257u\210\277\007\347O\241\231T\214\277\010\022\305&\357,\301\277\031?\325\020\031F\244\277\240\245.\216c\305\274\277\204\364\312>w6\252?}\366\217\207\350J\217\277\022\2210A\030-\224?o\354i3\024\250\254\277]\253\201\000\372\366\260?h\321\305\021\354;\276\277}\345\025\\-\357p?D\350O\323\356\353\273\2774\252+\304\314J\261?\022S 1\267\265\246\277\250\376\230d\275q\214?n\232O0\227\262?\207O\342?\256\302\222?\0019\363\267\243f\226?h\311v\251t\244\240?g\037\254\243\363P\273\277_\272\305\262\205`{\277\360s\3762\256\307A\277\317N\211\335.Y\272?\233\336\273\020\022\227\240?\362\305\260g\360\r\264\277\242\257\303\360\202\242\254\277L\213x\226\200\257\267\277\332\374d\317\343V\246?\324\234\202\263s\332\222?\366\236[L\247\366\214\277W\360\212\311W\355\215\277\"\032\333\203\361\177\270\277B\247\274\260\270\264\267\277\332\206\243\222m\030\264?^b\364\220\007\007\215?<\322\225T5\255\275?l\277Y\037}\254\245?\205\321xH|\t\256?\342\234}\204\366\267\254?\322\225\006i\233q\272\277\014t\217\310\341\005\300?\253/\237\n*\272\301\277\034\200\030\225\353\275\262?\310\357U\260\252\213\242\277pW\250bd\243\270\277D\223\344=\316\272\254\277\211\345\306\240\263\312\243?*sB\034\261\037\246?q\376!\022\300\374\225\277YjB\033N\345\274\277@\346s\214\276$I?[+\312\254\343\341\211\277\304&\367\357 R\217\277\013\233i\025j\312\255?\324\200{Y\215T\260\277AC\341\324\002a\264?B?\247\361\203,\254\277\215\037\316e\247\236\221\277\244\372\314\345|0\201?V\355\010`\362T\272?\347\217\256Z=\313\232\277W\265\261Q\235\213\243\277\014\n\316\025\010\307\226?I\274\235\rfs\262?\031\342\350\260-\365\304?\2158y\254\001\272\230\277$\315\377yT\317\306?\354\227\372rI\007\232\277\246\320\353\251\302o\241?\232LA^\273\374\246\277onS~l\341\247?\357\321~\312~\223\210\277\n\313\262\004\201\030\264?AY\032\301\000\323\274\277\357a\346__\232\220\277\325Rp1=t\211?5H\307>k\254\210\277\277\253V\372\005D\254?\352\207\260\373e9\267?d\007\323\311\311\227\246\277\232\334 @\305\223x?\214\316!\016&\237\256\277\236|0A\214\036\253\277$\243\256#\033\334\253\277\202\357\332\200D-\275?\370D@\331\"\235\247?rp\205\360\360\255\267?\242\336@\254\230>\205\277\310\202\212\22119\303?Yn\"\252Q2\236\277$&\255\227#-\240\277\247P\345\2756\007\303?\233U@\001\315\370\250\277\342\217w\265\315\177\256?\312\024\375\251A\350\273?\360T\325#\021\337\235\277b\275)\367K\205\307\277}=\246$w\311\261\277!\327(\014Jb\305\277N=\260\274\244\024\265?\023=\004@\034;\246\277\370\2159B\364\335\210\277\177\035\237\254\216\377\215\277\200\262QY+\177\263?\250\321\006y\240\347r?\264\005\333\307k\343\256\277/\247:&\035\323\265\277\262\345\'\260{\355\264\277\260\035E\t\363~\257?v*$\004\262h\315\277!L\316\374l\027\265\277\354\231\000\243~!\267?T?\313D\021K\236?7\302F\350\216j\263\277\262=\366\365r\211\256\2770\336\r\376\346\255e?Ki\365p\235\345L?V\332d\203\205n\277?\367\002T\3139\030j?\235/\336\272\262t\305?\214\215\231\224I\007\241\277\227\313\027\020\346\326\255?\345\026\262U\250\312\227\277\323\005\017[1\002\247\277\270\274\353\266\233\032\255\277\020\035T\251\3142\224\277\000\334\027\201\231\276\270?\333Bh\227\341y\251\277O?\330H4a\225?\261@\034/\311\234\227?v0\2233\305\245\234?\226\240\356\335\377\327\230\277\315U\332\235\330P\262\277\264\322\323\004\227\262$\277\225P\177v\202\315\266\277\260\362\313}\003\030\262?\\\016\254\275+\013\276\277%\230x\266O\030\253\277\231}\241t\006\307\220?5\267\030\221\272\255\264?\273~\243\365(V\241\277\2405\264\335\217\221\303?\037\'\260\273\364\023\272\277)\354\264\230\340C\263?\021\t\030k5P\237\277\202\223-w\177k\275\277-2 p\342i\203\277\215\337\243#\342\225\301\277\032\253\317T\240\205\306?\323\343\361\374\300\346\277\2779\217ju\370\350\255?\264\2659\202\310/\305\277\314_F\230#D\254?\002\263\222\0328<\265?\233\3634\376W\276b\277o>hRGb\263\277\3752Is\236\344\275\277\372\021t7\004\326\251\277\336&q\261\004\037\224?\376\262@-\212\032\260\277\t\2632Q\255\317\314?\262\356\247\311\325\255\250?:\301\357\361\243\232\306\277\301p\300S\016\236\306?MS\247\014b^\221\277U\021\217\371\352\250\262\277\200\264\"/\251r\273?\265/\264`\303\033\213\277\362*\300\336!6\262\277\272\373\360\257\330\221\267?\224\333/\027\262]Y?K\363\300T\205\336\240?C\366vK\255m\272\277#\301\350\307\025y\260\277\022@\3217<\232\274?p.R\234.\"\266\277\314\245\026\274L\234\303\277\033|G\363\261;\265?\271\334qbR=\240?c\005\225^\"\224\247\277\237D\220\314\001\035\264\277\212\344\245\362\322\356\301?\262N\352Fj\210\246\277\367\253\231\025\353T\242?I\214\033\357}g\244?-S\n\253\271\202\305\277\217\212\327\214\327\325\320?\3005\253}\305\254V\277\226\343\263fs\\\257\277\312\276MT\232y\270\277*\375\301\031\000k\202\277\010Sg\347\035F\263?=\327\327\246>\345\277\277\236\252\363\200\264\006\310?\311Zz\226\373\313\240\277)\245\313?S\032\301\277\200\351w\206\335g\301?\002\364\027\277h\261\230\277\226\207\371\305\352\267\274\277\357\024og\270(\300?4\221)\264\270\375\237\277Tf\272\3238|\253?XJi\337\364\223\267\277\360\365\004Cbb\300\277\310\247\340\273m\177\314\277\036\026e\342\267\334\221\277e\005\206J\016\363\263?\356\321\262\022\340\202\266?\374\246L\271\305\222\204\277V\250\004p\006[\301?m\304\3357\321\003\273\277\300\256bx-`\235?\332\341\014I\210\203\301?x+\021\337\302\254\250?J\013\023\375D\010\245?*\177\301\"\274Cx\277N\363\223D~5\240\277.;\"\246\036\212Q\277`#\001\203\216A\255\277@\357,\006sG\233?\322P\221z\r{\252\277K\016=\367\207\023\267\277\370\242O\231\301*\260?A\303p\017\274\255\214?q\037\n\313\013\234\273\277\360%\315\310W\235\250\277\277r]\351jd\272?\230\357\026\032F\027\301\277]\035\266\033\022?\300?+\305\"\331\030.\247\277\241@\3406\3232\225\277\240\310\tw\024\014\250\2777M\010\032Z\003\233?\010\333\254\177\006(\257\277\221<\013.)o\227?\247\267\356\354\350\027n\277q\306\200WE\004\204\277E\337\"\213!\325\220\277\350\243\2550\230\177\305\277\271\332\255i\277g\236?\016?7\264)\313\300?\361\341\232\221\321i\274?\341FX4\327\344\240?\342N\026\251I\037\277?kyt8#\216\256\277a o\250V\236\241\277\377\305\312\375\302\337\274?\030s;O\022$\256\277\324pU\355Y\264}\277}\272\357\033\375\225\216?\027O\023\237\311\250\201\277(\256\303\232\236\335\266\277\n`G\"\217`\301?U\327\366\375\267\354\303?\245\022\251\252\037\014\244?\177\246\251S\335\377\261\277Vb\nGl\\\223\277\345w\272V\274\275\253?\342\262\222\345\364\357\272?Z\207\211pm\362\301?\013\323\223\266\343\216\200\277j\257\233\347+Y\271\277\017\256\215\310+\271\220?\232c\222YlY\234?d\273\3738\207\235\241\277kN\373\331\301\003\305?\203@\355\024/e\261?\331~\224\363\2622\226?\030\201\240\271\016B\212\277\311\253C\245;\217\250\277\244\027\034\342\001\'\233\277\262|R\277\355\035\240?Q\316\322\270\357\325\231?F\2426Oi?\304?\244\300\205Tv\331~?\346\227\377\245\333&}\277\247V\024\363\231w\263\277IMC+(\204\273\277\326\340j\336\272\331\226\277\233\213\323\272[?\242\277\236\374\2051&\233\025\277I\211\006\364\270\261\247?p\242\264\226\013\220\303\277\201\000\361\311\235\026\262?\025*\213*@A\244?\252\021\257\215oC\264?*\367mj\222q\245\277\321\337\362\310\001?v\277hR?\326\304[\243?[\227\026\207 \013\270?]\033\201&S\242\202\277\014`M\226R\007\212?\235\373{\266|\000\234?{u\264\325\303b~\277\226\377\353#\010\324\307?\257\356\177\377\004\217q?\203\221\275\2469\257\260\277aY\262\233\304\2231\277\207S\276\220\331a\305?\251yh9j\331\240?\025a_\202\224\024\260?\307\031\357\337\277K\302?\242\220\2658\247}\245?\264\270\270\355\276\305\255\277C\364\264\341\244h\262?\225\001M>N\302\227\277\255\273\3108\320\031\273?\200\2464\211\337\260\277?P\376d\375\350\212\245?3|E\211X\216\241\277\034\227\320\216<\021>?\215\335\227\031\303\315|?\211N\310\017N\306\270?\203\241\337\340\317\372o?\221a\202H\007m\234\277\215\337\242\224\220\325}\277\342\234\275\211\236h\270\277x\227mDqb\233?.\n\0143\177\027\250\277\240\005Z\347B\020\275?\270?\211|\375u\241?.u\204b\000\226\246?\307j7\337\324\036\275\277\207\027C\t\t\252y\277\251[\216 \305\252\266?\334\026=\334q\027\214?v\231\2117\\\316\237?\326\025E\004!\247\272\277`\217*}\211Q\221\277\303\266\333\270^\372\237\277\211qp^\'\316\252\277\323\375\267\017\232@\306?\316\253\007\214a\314\273\27774\206\251\206U\224\277\2226\230P\245\325\256?\347\346\323\263\275o\255?\215>k\211fw\234?\003+)D5\001\245?\214u\216+\305\026\267\277\212\334\303\003H\323\256?\014\340\205\037\200\006\276\277\324\313&\2018\226\265\277v\002\\0>\302\241?5k\346\226\355\007\301\277\264\324\n\336g\317\270\277\357\374\363\027b\277\275?\236*\205\222|\244\261\277\264\257\003d\2638\222\277\211\257uTu\336R?T\260F\371{4\244?\342\211\323\232 \006\241?Zo\256\330\013m\301?\227\334_\036\212\337\233\277\241n\364\361\313M\227?PR\373[\314R\230?\320\307(\2668\310\305\277\212\246Co^\233\260\277\257&\322\266\271\237\270\277Z`\246K\241\200\251?\341\375\244z\200\212\307\277l\026\212D\313i\227?\317#\351\336\232\234\250\277\0146\324`\211\355\262?\007\371R\336\222H\274\277\020V\201^:\226\260\277Q\n\206\261&%\237\277oO\023\354\220\354\305?\207\254m\376\0374~?m\025\262\213\232u\270?\205\252\226\231\313\255\263\277\355\375\352\213i\321\206\277\001\\#w\225\302\307?D&\316p\n\326\254?\326o\251)\221r\266\277\307\271\0334\350\362\203?\205\315\017k\311\200\254\277\336#\273\303!\003\265\277\232q\232\003\"q\233\277\234\326\257\255NO\305\2778\244\r\334\374\t\251?;\337\023[H\371b?\025p\354|n\234\273\277\370\n\272\250\332V\266\277\262\264\254D\264x\267?\207\221L\2454o\264?\014\007\323\202\245`\267?%\331X\007q\226\274?5\273\235\364yA\256\277\207R\256\027!\237\260\277\r\334\255( U\265\277\233c\331\235\371g\232?\n\371\326N\270f\245\277\346\327\306\360\234\315\223\277\240Ri\241\275\274\274?&\231\214\374\226s\246?\325\223\375F\223H\263?H\334\035\2552e\310\277\365\367\'o\312\233\270\277\275be\250\333\236\236?c\215\203\364x\007\301\277u\374\251\362Y+\276?\002\025\013\214\034Gp\277\304\371\251\317\316S\252\277\207\313\036K\215T\300?\313$\263af2\222\277F\305\355\014\275\003\271\277.J\267M\336\006\225?\245b\243\332\365/\306\2776\251\213I\206j\270\277\317\035\221\310\005\205w?}7~\376\305\247\274?\022\217B\211\241\372\216\277\301\240\2433\033f\300?`\330n\267\275\'\260?\344\203\363\377\274\023\232?\004cy)>~\264?N\275\0144A\030\241\277\233\307:M\374B\221\277\332\206}\235Yb\246\277\252\300\312,\005w\305?\207\356\030\356gs\301\277)h\375A\360\351\247?6)0\366IE\245?\213*\372\3738\203\244?\207-\216\354\010\276\275?\205\301f\354\025R\240?\021\277]\353\t\037`?\304\326\223\2170\276\204\277\367\264\376\356z\004\322\277\372+\327-j\312\257?<\215\273N\025 @\277\2563\t4\207\372\223\277u\270\204\235\324\222\225?,\2273\307\037\336s\277\220\256\343\215\205\243\245?\331;\353D;\232\232?rC\365\367\024|\276?\360\254\277\276\036s\261?\2551\025\304}Ax\277\342F\314d0\302\302?{T\260\023;\232\264\277s\277\244\320\264\241\270?\031\245\204\347\316*\300?\025\374\331s\333\355\242\2770\345\036\022\206\253\232?BlM\211B\t\276?\034\352sF\\KK\277\351\207\335\374fr\220?\002\222\334d#\017\274?\\>\202\346\332Y\252\277F&\027\343\233\200\300?o\346\260\354\333\212\261?u\006|Y\215\364\247\277il\033|\212H\265?vS\300\025\353\213\264?\234\207\256W\322\021\240\277\261\325\346M\3042\255?\266\342\271tl\350\215?\272\321\275\351\262s\276?l\342\376\333c\356\265?\256x\300\2455[\321?\230\366T\257\234?\275\277\236M\0368\304#\243\277C\350\3755\277\275\246?\250(\212\227\275R\304\277\034\252w:5\345\244?\006\255YJ\226\006\235\277D\374T\334\304\370\240\277u@\375c]\002\255?\226\345 \037\260\354\262\2775\256\305\n\2348\235\277\'\324\\\224\367\233\245\277\313\206\346\340\202G\221?\350}A\220\204\025\260\277,\t;\004LJ\263?o!\231\262\203\036\212?r\267d\372\375!\226\277\250\217\022\261\201%\305\277T\207?\350X\'\255? -\273\212\256\177j\277\223\037\031\321\246\253\301\277\357\225\262\243\035\331\300\277\332\201\020\222\035a\275?p\231\033\006B;\231\277\257\225\234\212\345\235\253\2777s\254\033\204\265\261\277\340\330\022\324\246N\236\277\257n\017[\021\037\274?\377\204\032\007\200p\240\2774huZ,\235\270?N\023\200\332^Z\231?.m\364\204\321\333f?\236=\230\242]\360\260?F\033\314\224\375\276\257\277L;\243<\247<\271\277~\376\230\2702T\267?\030j\313;\375\334\177\277\326z\370\020H\313\204\277H\310\373\353\0133\245?\354,q\314\362\311\275\277\245\'\314\033w\010\302\277\366\352K\253\250\262\221\277\250Y\250Amb\252\277\272\351\365\266\262\270\244\277\341\323l\331w\373\256\277\370\203\027\211>2\263?H\262\335\307\317\355\246?\204:\231\305Ll\232\277a\355\344\t\237\036\277?\373\033\326F=\035\241?\026r\226DT\235j?{\366\305\020z\001\264?>oY\034\2661\264?S>\026\352\376+\251\277\352\225\232n\010\340\266\277}f;\241\307k\224\277\277s\312\334\264\262p\277\3161\2565\325\345\210?q\243e6\021Z\223?\203\330\014\316\007\027\262?\311\266Jk\227$\230?\324\307\001\374\000\215\257?\361\333\315\206O\032y\277Z\270\211\253\363\377\267\277P\371*\"\327|s\277$\210\014\301\314\016\250\277\242\037l7\276d\266\277\213v\276VI\373\236?\352\366?\253mG\241\277\336\334W4\n6\271?\360\201^\266\211u\250?\221\320\333\227~8\263\277\t\335}\344\021\350\307?\035\246\267\021\350\337\257?\000\320\303W\033p\266?\r\303\301\245/\027\252?\214]h\206\257\273\242\277Y:r\263~\334\263?\305+\3724\365l\233?2\322,2Wk\265?\315\230\367\014\007$\251?q>y\221\024@\232\277\352 \264>4\327\303\277\266\232?\277tc\240?\252z\262tq\356\270?~\261\324\312\327\253\220?\253{4\263\r\324\226?\031\0028\235A\016\252?f0\275\335\'\314\253?\354\010\230:= \274?3\201F\307>\345\206\277\337s\364C\r\263\302\277F\270dU\030!\260\277\357P\340\'\000\003\271?h\224\r!\\\232\236?\210\0036\212\016\333\275\277Q>\317\277\377\351\300?#\032\273\367\276\217v\277@\232\347\264.~\226\277bUR+Y*\214?U\311C\300\030\236\255?\000O\220\201\320\205\252?l\247\366\353\301\235\261?(\207\247\0039\312\270\277Z4\254\340\202\223\263?\002\264\242\272\200q\240\277\023\270H\357\223\364\273\277\035\324P\355\341>\\\277 \210\266\231\356q\275\277\275wq/\275\016\215\277\244\234\367\204\204@[\277\363C5%\250\211\200?\357\260~\230\327\202\266?\215\0347\223\014\037\267?\'+\227\rCl\271?)\266e\r)\344\244?\001w\361\232\304u\303?hGu5!I\304\277\343\2107[9\313\255?\352\326\222\034\314\222\232\277Q\315\237;\213e\272?Q\361\355\001\365\005\303\277\260u\277\300\302\365m?\330\034]\242\346]w?f\304\324o\344\343\253?\313\265\037\320\320\362\265?t\006\376\240\2771\242\277\207\353(\337J\225\275\277\234\306G\037\205\374\302?p\220\356\020x\257\266\277q\232\305\374\267,\307?\3009*\372\220\021\262?`\323\364$C\365\251?\034\346\237\307\323\364\302?\260\034\005e\024\003\246\277Hb/\371\217\372\236\277\312\021<\260\257Lc?j+\375\237\275o\303?k\306+\2258C\257?\264\232\310\217^\213\307?\020\214c\036\020\333\241\277\024\377\230\223\223c\271?\337\233\017:\253\304\274?m\334\0066\271\037\204\277\314\232vlqu\214?=Yp\257\022\246\313\277*M\222\371\322*\272\277\267\265\276\026\230\244\244?\3739\375x\325v\241\277\370\033\253t_1\273\277N\316\253LB\233\266\277\241Pk9\256s\277?\244T?\267HJ\244?1u\236h\275\027\241\277WJ\321\270$R\300\277\\\252\242\262?&\341\272\227\304\304\274?\001:\357b\272{\240\277.\026f\035w\305\261?\035\323\311\231\214\017\271\277\364D\260\261\\!\205?\300\201f)y\330\300?\365b\232I\233\035\266?W\300Q\255a\337\267?\262\332\3565\314\r\262\277\0315\306\341\2518\301\277\272\324-\277\0074\320\277\261\025\376b\013B\266?s\362\353\3419q\260?\365\353\211pW\234\250\277\246\261.\024\255\300\272?\275\267\026\362\276\211\304?1\323\365\377\227j\247?M4\\q\\\037\261?\355\315\210\'\265\301\267?\365\007\272\362\023\036\256?\214\204\364\361T,\205?rR\031\314/#t\277a\365)i\236>\221\277\213y\313+\245\032\223?\336\363+\303\316\023\201?\312\353\032\220\344Tu\277\210\3740-\211\362\242\277\262\367^\316/u\300?\357\366t|&b\221\277\340\376\326V#\005\264\277\037l 2\325\246\244\277\231U\355\220\347\n\177\277\201.\207\235[\\\300?Ii\332\302L\347\300?\025\270\360\023\257\211\255?\253\374\350\230C\377\244\277\277\311^?\274\360\243\277\200\027\353e\002\033\247\277wt\235\214\020\005\300\277\202\005\312\206\271x\254\277o\234\264\327\025\006\310\277\014+T\275\276\027\242?\275\244\275#J\366\271?P\235\2435:C\301?\275\372g\n\356\212\241\277\314\376\333F\030#\240?l\342\016u\251\260\272?\365Ja\226X\224\306\277\226\007S\321N\216\235?\310H\024\2036(\300\277L\203\353\352\265\277\227\277\032F\326\013\016\266\261\277\241\333\230pH\270q?%\321\263\302\304\016\266\277\260`\254\r\177\351\264?\324\254AI\003\r\223?S\237\327n}\353\233\277\263\3729\013\211\230\261\277\202\265\"\016\021\000\273\277\342\320%\226f`\261\277\037\037\261\036\201\254\312?`9V\263\316s\262\277\325U\372\224\261\305\267\277\256\310\0205\273\371\242?\250T\000\026\217r\312?H\204e\331\014\177z\277\000f[\016[\016\300\277\374\031\322\010\320\274\263\2775h\314\267\006\263\257\277\252\267\025)^\353\262\277\004\322ajjj\220?A\243\276I\252\027\311?6\223i7\323\362\231?@\025a\035H;\261\277@\\\031\251\013\224\260?\235\2160\365r\247\265?h\230\224\326{\n\225?\227\321\254\307\344@\301\277&\347\035\321\004\276\235?\251\346\350Q\337K\264?\200\2243\037R\342\300\277\251\010\027\257\247Q\254\277*\246\344O\355\217\303\277\322\302\272/\250\311{\277\333\217b\030\231\020\307?\2045\335S\3720\245?\352\010\3177\217Q\262\277s\355\252\244\005\233\222\277c\325\277$C\033\305\277\201U7\027v\210\300?\363f\357\215\276 \232\277\215\010\257U\327\270\231\277I&\254\273\030\267\236?\352 \201\336\356d\267?G\t\"\035\343M\244?\201\341M\221\310\242\260?\341\304~F\236\026\257\277\270Wu\3534\362\202\277\033hw\220\313\020\251?\356\327rBD\371\254\277\032\344\311?\007I\234BD^\252\277\376\t\024N\276V\221?U\314Jc/\367\241?\311&\"\340\024\254\243?\242iB\036E\324\231?\215A\360\316\304\254\240\2774H]q!Q\303\277\242\350!\262\013\275\266\277\332Gp\320\260\342\300?\330l\235\024\247\352F\2772Y.#\257o\240?\032`\236?om\235\277\277\314\276:p\330\251?\373c.\013t\226\255\277u\370`\331\261\374\301?\003zf\021\371\007\251\277\270\"\035\357\255\260\260\277\371\302>\261\020\335\251?!\326\r\"C\034\221\277\273\304\377\331M\233\300?\207\231\351\203ZU\202?5\357\025F\n\214\304\277\205\373t\332\010\244\300\277\n=\242\234L\331\266\277\r\030\253\240\364S\266\277w\026\004Y\024\036\262?N\002\344\254\324\354\265?\212\'\264\377\265\200\264\277y\035\020U \306\223\277\257dd\003\013\212\245?gD\232[=\342\270?\216\253\202\255\201\026\272?P\r\020\205\020%\206?s\271\332u\025\260\207\277$2\314\362\264\234\221?\304\253\243\355\310\252\226\277\362\240\206+\276\203\232\277Z\3570\371\241\212\212?\235\346e\034\303\226\247\277\000\266\225\014}\357f\277\016!\341\332I\232\234\277\243\222\300\344I\267\211?\306\224\230(^\341\247?T\016\356\014\351\273p\277\031Y\001\236q\214\274\277\330\252\350nb\315\272?U>\277\250\326\322\257?\263\270`\"\364D\255?\221\'\332\222\242\031\256\277\345\246\201\023\006\001\252?\335\271\265%\207]\301?Sd\373\317\031\017\233?\007\322I\344!\017\262\277\331I\352\251\257\204\212?\345U)\225\277+\200\2774\026\'\004\366\261e\277\376/\275\354\017$\270\277\256\020\277\261M \223\277K\207\224,\213Dh?\354B\353m\036\025\302\2779\023\323Y=\274\254\277\n\250\2123u\257\253?\3710\0168E\233\234\277]\261R\034\277\025\261\277\037\255oP\337\205\257\277\231\304\316d\375\035\270\277\306D\347\010 \346\241\277\205u\337\300\273d\202?t\263b\t2*\267?\032\316y\243\353\315\224?\321\236\265p\242\207\234?HKTh\255\365\210?J2\325\261 3\251?\237L#\253O\354H?l+\227\027\014\027\240?\304\344\016\226\245\020\246\277a\350\276\265\252H\277\277\007\304\253\303~c\235?\252\303\221\030h\322\260\277\371n$\032D\242\302?\202r}\271z\204\306?\026\341a\356_\372\244\277\212\035L\215\207\210\260\277n\n\354.\027X\242\277\254\031\357\333e=\241?\254\276\342\235\024\027\240\277\363\014)>Db\273\277\314\340\246<\253\004\274\277%\2246&H\017\217\277Y\237\035_,*\307\277\003Sh\347\325\300\222?\006\205B\364\203\233\304?\343:\022\244\267\344\235\277\277\267\241~E\377\267?\245\325\202st\256\276?\370\320C\345}l\271?:\031\367\034\\\"\242\277\"O!\3454X\255\277\013z\264\372\243\331\203\277\204\270E\376\251l\260?\355T&\266C\320\240?\027\017\017\20556\264\277\037\313\027\221\266$\300\277\222^@\3638\366\276\277Q\310\351\334\025L\300?Y\350\241n\207\201\263\277\"D\347\353\215\235\264?\364(\034\000\237\335\264\277n*\223\2304\242\270\277\250\344Y[\210\274\263\277\353\344 \350\372x\210\277\231ZI,\211\222\265?\3335&\026\2056\210?\3552\037\365\321\322\273\277\3547:\017\260\007\275\277\025\212t\361\322\300\216?\343\251\315\215\222\370\261?b\343\232\361\r\220\201?R\356\0018H\330|?\374\341\0315\356\007\253?\206M\242\271\376\217y\277\207\352\332\035\376N\303?Z\361ee\306(\267\277x\344\256\315\210\016\270\277_\257\244n\202$\301\277\330* ;\336Sw?\020\211\021\026J\246\300\277\343\025\267s\265w\265??s\314\365Jk\266?\301\364\354D\322a\272?C\246C@\275\030z\277\266\306\276\030\250\020\274?cX\321\266\007\207\274?]Ou.Y\343\232?w\225+E\240\325\232?\235\322m\317 \343\260?\027/\236\366\340\r\276\277\215\353\363K\335E\271\277_f\311G\001o\206?\"\321?\375^+\266\277;\330\245\026\331\300\224\277\030\2432\222u\322\311\277\244\021\363\233\002\226\244\277\213N(\323B\202\266\277\020\3317\242\300\277\256\277\r\226\321!7\253\270?\311\226Q\271y\330\265?u6lw\327\311\233?\357\351\245\353k^\260?\370\204L\337\327\310\255\277\360\326\220z\325dv?\357\322C03\307\266?\256\237\322\356\206\267\220\277\013\253\366\221\374\220\263\277\375\3447\030\262\360\230?\000\007\211\364v\367\275\277\032j;m+&\262?\010\231\363\335\260Z\263?\030\226\263\224\365\037\273?0\323\035HGD\300\277Y\022 \272\370)\254?x!H\354\244=\240?e\021M\2776\270\227\277\2339\373z\367\347\262?\027\000\245\202I\262\272?\332E\220\321p\037\244\277\375\237\002\265Q\001\234?\250\021\353Z\352\rz\277@\352X\344\024\243\301\277~\300>\367X\365\266?\240\031\276\266@\026\263?[\233\314r\334\202\270?\000\345\364\'\212\037\244\277\037\017f\027\340T\245?\036\231U\214\255\230\303?gN\332\'\335\321\230?6iPC\333\013\266?GM-\356\233\213\203\277\211r6\331\274C\275?\321\035\251L>\374\267?%\242\307WG\336\243\277\013\232\213F\346w\272\277\010cgS\004\234i?\255U\263\256H8\203\277\235\254\336\222\327\370\202\277\307(\n\205\333Q\255\277~\034uwA\344\203?\214\372.~\026y\211?r\007\3053\243.\215?\013\325\357w\357W\221?.\271\2111\252\245\267\277\356G\316{\343T\255?_\214\211d\2115\303\277\016\016\177c\215Q\243\277\324\364\244(\345\317\247\277\\E<\034\372i\256?\034\2630\350\217\t\243\277Qjd\232k7\273?\331\376\340\306\277\373\262\305\033\010\034\304?k\332\341\377\312`\255?`O*\246*^\272?\rI\026\030\264\250\271?,\023b\003\r\021\267?\266\020\001\021\320\026\234?\004\306\217_\\\245\253?\003\t\316\230O\260\302\277aN*\262\263u\275\277\346~\3005\211\200\256?\210.\331\356\342$\265\277\276O\306\361\371\333\262?\377\255\373I\007\004k\277e\256oV\241\234\314\277\340\377\262\306\274V\244\277e\331\336Y\3401\310?\007+!@\2638\301?\020_\325\316\004\220\261?\326\303\335\324\030\244\257\277\356j\0011[\017\3005\316\032\260\277\237\240\322C\237\376\273?\317|[\351\335$\246?\234d\367\327)H\302?\246\345\304\317\272\000\266?z\246\006\234\357\302\300?\227\322\225\263\340S\251\277\264\006)\374b\275{\277Y8\316\271\357\330\207\277\332\311\305\2052P\303\277\275\364Wk>\017\216?BW\251-\220Q\243\277\232?Gkt\022\301\277e\214\374\037|\263:\201\2778\203\005n\037b\257\277\032\346\264\367\375=\241\277\256\277/f*\177\304?\236\020\314\354\262\336\303\277H\230\3248y&\204?q\206\361\235@M\251?G9\252DH~\236?\'\341k\316\232\310\263?v2\313\347\335~\266\277\241\323;\303\373\034\244?\004\375\177bY\334\277?s\304<\311\240\335\272?\343\364X\237\207\205\276?\276\375\204N\t\004\226?\314\375_\302H9\302?\255F:\236\216\031\243\277G)\004\274W\312\254?\372\307G\266\245\231\301?o\014d\346U6\263?Kx\202\275u\221\270?&E\276\r\3142\247\277\325\277\246*\202\027\206\277\001teJ\265\307\276?@m\230VB\006\277\277\007\032\377\256N<\231?\304g\272\034\254\221\262?9}\006\237\372\234\261\277\352\032\345Go\002\220?\340\003\372U\030\202\263?Q\346^\336\262F\306?\266\351:\353c\211\265\277\3509\244t^9\263\277\350\345%\014\212X\305?\377\310!\265\374\335\230\277y\335\221H\274\r\277?\257\326:q\311\302l?\017\213\240\245k\005\263\277}\037b\022\361\345\264?\254\253\210&\022}\251\277\031,\013\\b\340\263?\316\255\361L\021`\255?\010\372\017\211\310\337\251\277z\331\226\371(A\243?\216\246C\020U\362\260\277]\315\372\026z\014x\2777p\2305j\312\247\277\300\220Y\321i\201\244?\331_x\n\375\333\262\277\277\023\003f\247\021\300\277\234\260S\223\273\262\253\277o\215f\n\311\037\212\277\026\320\033a\304\274n\277\025\00771\276l\241\277\r\364\035(\240\'\273?\014+`\270T\006\267\2777\026\324\2021a\251\277R\216\343t\033\177\273?\022\313\215\365\033\212\233\277\377[\305\023\034\356\267?|\321\355\240\254^\225?J\277\001d\361\304\302?\034\177{+\3310\304\277c\340\204\264\213\343\267?\247\376qXW\241\266?\341\301\335\377d:\255\277$T\"\023\033\n\307\277u\314\211*\223\236\264?\006\000\250\260\345\031\243\277\236\r\206\3252J\255\277\313\237\n\246%q\274?\026E\301\274\331\221\236?\262\360\214\212%\205\240\277N\362\274\023\323T\262\277\260\234\340\025\014\036g\277\'\307\324\351\347j\251?\212\213\236\"\215G\236\277\231\354B\343\177\374\311?\213J\345L\201M\224\277\334@\372\315uo\312\277\2757-\014L\036\246\277\2631\'\252\013\004\245\277s\203\3605m\305\251\277J\365\272\204}U\262?\215\t\031\275\210\223\271\277@|\307\304~b\266?\026\202\211\000&\033\310\277(\302\267\002\331\360\252\277g\321qU\345\351\270?\334\003\025\033\366\271\260\277\315\363\242\013zC\230\277\177\223\036q \033\020??B\332\3703(\305\277\005\300\000\366{\246\233\277M8\262<,\223\257?\3360\177\372\3605\247?\214\241\005\031\203\r\227\277\037\321\231\226|\251\232\277~\230\376y\307?\260\277\t\r\033r\236\230\271\277W}\333\206/\351\221\277\237\357\266\217\007Z\2108\"\265?-\351\331\020f\275\274?\357\244\250\257~\263\237\277}NK\210l\363\261\277|{\335j\323\021\300\277\021)\341\271\222\267\261\277\265,|\267]?\241\277ogZE\230\223\246?\351DQ\361\263I\204?\021\211\301\320\357J\\\277Q.\206\316%@\227?\313\370\375/\3728\250\277\262_w_\367\322\242?d\372\023M$\362\246?<=\352\361\372\t\252?\336h\027v\235\007\274\277q~\351\264\205\214\200?\320\231\241^)w\261?\232V9<\277\225\260\277\200\334\315\270U\301\204?&\332\023\352\322^\232\277:1\273-\031d\217?k\375n\237kH\240\277}5>`\343\022\230\277\355\240\244\373\273\344\240\277FE\234\032\342-\236?\301d\230G\244-\260?=j\317\242H\206\221\277\253\230\316\267\370}\261?\312\236\r\255M\022\320\277*\214O\370\346\354\177\277_\263P\313\345.\250?\352\331\2758\225\334\250?\362\255\313\020\201\372\270?[Z\025\337E\021m?\243\007\24384\372\277\277\241\024\024\210\262l\213?ZJ\026\004\263\277Z\204x\006qN\270\277\032D\037\301n\267\271\277?\244\306\245\256*\252?m\275\017n\301\307\264?D\376!\'\232\317\270?\230\020L\305\345\260\272?\315\3247\226\030\256\253\277\022\201\235\334\'\377\256\277\033\262\032`\034%\231?G\227YLX>\300?~\317\300\246\205\257\255?\347\221\345$\253\216\223?\371\367\326@)\364l\277\303<\365\3355{\251?*\022\332\230\207\n\224?u\001\270\301#>\300\277a\251?%\253\300ar]F?\273\323\222\322\000X\234\277=8\241\231\367\360\254?{y\371 {\373\267\277\234W\007hq\362q?W\344\267\213\303\226\256\277uKyDu\252\254?\376\340\370\221qf\245\277\263\314\251\210~*\262\277\274[\330GZA\252\277\272Y\221\277\035\266\215?#\360D\371\3461\263?0\353.\r\272\263\264?\253\270\336\327o\226\272\277V\275\337\361F\332g?\341\263\362\255\370U\246\277\\\310\256\203\2753\246?\207$\305\250\342a\267\277\354\002\2452\302K}?l\272\216\201T \266\277\266\276A\t\017\327\303\277\300\225\027Z\244\342\242\277\275D}\357\230E\215\277\363\271\273\026\n7\252\277@\234\254h\326\263\253?\230\016\330\374\326\253\303?\335i\014\253\345\251\260\277\275\241\240\217v\315\270?QB\315\231\342\375\244?\3254eU\1773\265\277\244\020\250i\276C\220\277\307\342\366\302\203\367\270?N\032\331\222J\326\250\277]\225k\002\222K\\\277\030&$,\253C\273\2771\002oKt>\266?\305\326\017\263M?\232\277M\361q)S\330\240?\306z\322\235\273\010\245\277" + } + } + } +} +node { + name: "layer_0_type_1/matrix/read" + op: "Identity" + input: "layer_0_type_1/matrix" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@layer_0_type_1/matrix" + } + } + } +} +node { + name: "layer_0_type_1/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 120 + } + } + tensor_content: "\374\325\034\265c\177\366\277\350\226\303\214\246G\354\277\237\244zZRz\320?\010\346\246\257\212[\316\277\225\334\225\000\246\323\362\277\252\372A\252+\322\332?\345BA\357O%\325?\251d\2348\237\023\360?\256\004\262U\374\236\375?\366\030\225k\237A\353\277D\332=jN\357\344?h\0356\010/\300\354\277\372\205\003\321\r\301\304\277\010\033)Y\246\275\312\277\344\300\212\374\245\250\326\277\236\005\0057\232pw\277\244d\305\372h\034\371?\267\212G\351\267;\323?\320|\0016c\022\357? \353\233\033\3369\316?\375>\341\376\240l\343?\316\277i\207\325!\374\277\253Z*\247\0242\374\2775!\000\014\360k\366\277k\361\302cO\245\312?\327\"\323\2113\177\353\277X3\207\211\273\333\342\277W\245x\016j\202\374\277=\246j\352\230\257\356\277r\240\225\032\252\245\245?\306\277\307\200\373\253\350\277Zgq\234]K\367\277\261i\235\252\331\365\001\300]I\221\3067\225\333?\000\365\201${\273\363?f\320\325y\372\341\360?\010\200\231\\\3636\312?\363{\302=\301\201\272?\233@\t\262\363\322\311\277B\300\234\007N\201\373\277\353\370\036S\026\357\362\277z\312\016\340y\377\256?\221e\'\203\210\254\304?\311\217M\256\213:\350\277\373\021o\024:\302\361?-\'f\205\245{\352\277\362]Pd\215\362\262\277\226n> \266\027\004@\307vnN\300o\350\277\262?\204\346\017\364\341?\227kB3\251z\311?\211\214T\365\2317\352\277$tZ\0033\344\351?\013+\236\325\376X\326?4\275\311\346\207\205\345\277\022\253\234U\t1\235?W\311\027\224>P\353?\236\252lD\324X\246?\372\313\320H:d\337\277/\315\020\207Q\242\355\277\320\324\344M\325\236\241\277\247\264M\007E\t\000\300W\206\010\211\327n\364\277&\311e#~\260\364\277Y\272c)(b\273?91\351\341vI\315?\006z\177hG\316\345?.\346\036;\013\370\365\277\r6\227\312Y;\333\277\372g\014G\014\302\364?4\222\203K\006\203\361\277En\014;\372G\305\277w\237N\224\033\322\360\2773?Y\264b\340\316?w>\301q\242\356\330?\217\263\006\025\204\226\326?m\255\373\270\275\'\303\277\2434\335\262\366\320\353?\361\341AA2\347\360?=\303\315P4\006\361?$f\t\024\244%\302\277\326\275\207#+\363\353?\320\252mu#\240\362\277\345\271-20m\371\277pi\303\346%\246\260?\272Kc\264m\021\340?.\325\305\342zr\325\277?\305R\214l\351\355\277\211$\346f\231\032\002\300\010jYC*?\370?(\251\305\357G\037\345\277\241\347j\267C\213\337?\031\271\353\304\314V\274\277\330q\266\232\354\n\357\277\365\231\301\214\301\245\005\300I\356\252\0201\201\317??\332\213\243\230\301\362\277\205\233\320\335\276\207\333\277\355\031\267\376\205)\000\300\013(\2349\276\362\001\300\257\265=\310\315\354\341\277\257t\321?\301\3354?&\307\221\016\240c\352\277\221\356\275\007\025\033\305?}\332\312\304 \243\370\277\315 z\324 \330\361?5$\231Sk\037\320\277\320\372R\261\336\200\342?t\344F\251\3563\245?\003\206r$\321=\327?:\017\234\213P\240\340?\200N\315\217\'6\223?\341n\235u:\356\362?\276}\350\241\024i\373\277y\266\332\006\220#\363\277[jC\276\272X\267\277\2041\374\340\021\037\362\277\225<\306E\030\337\352\277\217O\305\227s\342\300?\267\254\030h%&\350\277" + } + } + } +} +node { + name: "layer_0_type_1/bias/read" + op: "Identity" + input: "layer_0_type_1/bias" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@layer_0_type_1/bias" + } + } + } +} +node { + name: "layer_0_type_1/MatMul" + op: "MatMul" + input: "Reshape_19" + input: "layer_0_type_1/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "layer_0_type_1/BiasAdd" + op: "BiasAdd" + input: "layer_0_type_1/MatMul" + input: "layer_0_type_1/bias/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "layer_0_type_1/Tanh" + op: "Tanh" + input: "layer_0_type_1/BiasAdd" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "layer_0_type_1/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377x\000\000\000" + } + } + } +} +node { + name: "layer_0_type_1/Reshape" + op: "Reshape" + input: "layer_0_type_1/Tanh" + input: "layer_0_type_1/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "final_layer_type_1/matrix" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 120 + } + dim { + size: 1 + } + } + tensor_content: "A\2101\303\313\035\302?\311\205]\235\3219\233\277\3633\207\"\035\355\250?`WB\241P>\307?u\324\316`\2433\226?[\333`A1x\262?\323\253\014Z\013\245\307?\353\rF\'\233\034\263\277k\001\372\253\272-\257\277z\215\210P\025L\271\277\351G\300y\227\002\275?#\335\r\210\245\344\263?\226V\316\332\031\205\241\277\317\275N(\312\013\311\277\276[&\256c\321\265?\\\311O\307\235\\\223\277M\274\361i\351\022\310?\365x\335\355\377\315\240\277\256\275\350}\317\363\274?\013\251x\033\200&\227?Su\350\327M\202\264?^yy\374\221j\314?\020r\323\206\260\214\267?m\211\027\212)\266\273?\2277\277\250\240M\262\277\266\217\307\321\266)t?r\276\036\352\212\277\267?\236\337\251\352\0134\247?\234c\342v\261\353\241?\212n\t\244J\030\263\277H\010v\tO\004\300\277Xk\013{@\342\260\277wP\\E\376\371\265?\341:\227\337\301\266\266?\003\310d\033\202#\257\277\314 \nS\224\201\271\277G6\303$>\235\260\277\250\344\355g\316n\224\277\0104I|\313\300\237?\232\313\t\356\210\326\242?G=\300C\255\037\301\277\330\337@\264\3503\315\277\262\265.v@0\220\277J\334\241\304+@\251\277\002bT\216\236\223\232\277EQ\274\r\016f\241\277\334\274+\2128\026\250?; 7D\371(\311\277\3755\023\261\024\343\261?-O\237\254\350\314\272\277\240\263\364\305\356\004\233\277\267\035\216&Z\325\234?[\000W\217\312\301\277?\\\221\267Y\t\327\252?\000\325\177\013\2622\251\277\263\261\264>\014S\222\277\372l\302C\234f\231\277\323P\357I\356k\253?\037\330\030;\226\"\266\277\362\272\375VD\006\263?x\363P\331\252n\244?$\257\251\245\307n\220?\206\232\360\n\316\025\261?\330\005\342\263\016\027\244?\315\234\252\264\014m\300\2776\033:|\001\242\220\277\217\310\275\2436g\267\277\351\235\342\r;\r\303\277\256\022\016,*N\265?\2055\352\236\237J\241\277\304+\006W\303\207\272\277\361\240to\013\342\261?*\264\365\\\370\343\301\277\306\253\024\210S3\312?\3571\325\304\177\037\233\277\'\254f\275\324z\254?\325>\3047\271\'\303\277\251h\327\225#\231\277?\231\177\367\001n\304\305\277`4}\324\277\025\252?Z\316SqG\245\201\277v\305\353Y\352b\240?\246\355\347\017f\273\216?\2358\276\272T\274\255\277\321\363|\036\002l\312?\032\373\345#\343\220\306\277\226\250\213z\304\270\271\277\214\300\032\250:k\302\277Ag5\2014\260\305\277WGp\312\343\352z?\t2x!&q\302?\311\245_7\221\306\245?i\027\216\353_\'\240?#\344\215\202\336\225\313?\036\020\351\244\255\005\226?\004`\247\203\311G\246\277\020q\261\244\233@\305\277M\256\031\326\026B\234?\204\264\275\364/\037q?)\210\354\205\261\205\207\277\242\334\254\340Y\357~?\375\264Rw>\213\274\277+8m\351\302\354\300?\234D\231\305\336\352\264?\035\230\324\003\3531\300\277<\227\361\205g\253\264\277w\242k\300q\201\243?\275\260!\210\0076\311\277}vMN\337\355\253?\006\010e\'@\301\273?\323\374\"\302\004#\272\277\276/\002\366\267P\212\277\374\336YW\310c\241\277\006\360B\360\\\n\270\277ON\016\325X\203\263?\206\037cb\327#\264\2774\024\026RE\366\267\277\271\247\274Y\177\323\203\277.\367\327:\206_\276\277m\361\355\200\366\244\265?" + } + } + } +} +node { + name: "final_layer_type_1/matrix/read" + op: "Identity" + input: "final_layer_type_1/matrix" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@final_layer_type_1/matrix" + } + } + } +} +node { + name: "final_layer_type_1/bias" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + dim { + size: 1 + } + } + double_val: 0.20219566093913552 + } + } + } +} +node { + name: "final_layer_type_1/bias/read" + op: "Identity" + input: "final_layer_type_1/bias" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@final_layer_type_1/bias" + } + } + } +} +node { + name: "final_layer_type_1/MatMul" + op: "MatMul" + input: "layer_0_type_1/Reshape" + input: "final_layer_type_1/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: false + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: false + } + } +} +node { + name: "final_layer_type_1/BiasAdd" + op: "BiasAdd" + input: "final_layer_type_1/MatMul" + input: "final_layer_type_1/bias/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "data_format" + value { + s: "NHWC" + } + } +} +node { + name: "Shape_5" + op: "Shape" + input: "Reshape_14" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_21/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_21/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_21/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_21" + op: "StridedSlice" + input: "Shape_5" + input: "strided_slice_21/stack" + input: "strided_slice_21/stack_1" + input: "strided_slice_21/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_22/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 3 + } + } + } +} +node { + name: "strided_slice_22/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 4 + } + } + } +} +node { + name: "strided_slice_22/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_22" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_22/stack" + input: "strided_slice_22/stack_1" + input: "strided_slice_22/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_20/shape" + op: "Pack" + input: "strided_slice_21" + input: "strided_slice_22" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_20" + op: "Reshape" + input: "final_layer_type_1/BiasAdd" + input: "Reshape_20/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "concat_3/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "concat_3" + op: "ConcatV2" + input: "Reshape_18" + input: "Reshape_20" + input: "concat_3/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "embedding_lookup_1/axis" + op: "Const" + attr { + key: "_class" + value { + list { + s: "loc:@fitting_attr/t_bias_atom_e" + } + } + } + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "embedding_lookup_1" + op: "GatherV2" + input: "fitting_attr/t_bias_atom_e/read" + input: "clip_by_value" + input: "embedding_lookup_1/axis" + attr { + key: "Taxis" + value { + type: DT_INT32 + } + } + attr { + key: "Tindices" + value { + type: DT_INT32 + } + } + attr { + key: "Tparams" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@fitting_attr/t_bias_atom_e" + } + } + } + attr { + key: "batch_dims" + value { + i: 0 + } + } +} +node { + name: "embedding_lookup_1/Identity" + op: "Identity" + input: "embedding_lookup_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "Shape_6" + op: "Shape" + input: "Reshape_14" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_24/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_24/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_24/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_24" + op: "StridedSlice" + input: "Shape_6" + input: "strided_slice_24/stack" + input: "strided_slice_24/stack_1" + input: "strided_slice_24/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_25/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_25/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 4 + } + } + } +} +node { + name: "strided_slice_25/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_25" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_25/stack" + input: "strided_slice_25/stack_1" + input: "strided_slice_25/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "Sum" + op: "Sum" + input: "strided_slice_25" + input: "Const" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "Reshape_21/shape" + op: "Pack" + input: "strided_slice_24" + input: "Sum" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_21" + op: "Reshape" + input: "embedding_lookup_1/Identity" + input: "Reshape_21/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "add_3" + op: "AddV2" + input: "concat_3" + input: "Reshape_21" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "mul_3" + op: "Mul" + input: "add_3" + input: "Cast" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "Reshape_22/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_22" + op: "Reshape" + input: "mul_3" + input: "Reshape_22/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Shape_7" + op: "Shape" + input: "Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_26/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_26/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_26/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_26" + op: "StridedSlice" + input: "Shape_7" + input: "strided_slice_26/stack" + input: "strided_slice_26/stack_1" + input: "strided_slice_26/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_27/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_27/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_27/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_27" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_27/stack" + input: "strided_slice_27/stack_1" + input: "strided_slice_27/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_28/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_28/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_28/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_28" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_28/stack" + input: "strided_slice_28/stack_1" + input: "strided_slice_28/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "Reshape_23/shape/2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "Reshape_23/shape" + op: "Pack" + input: "strided_slice_26" + input: "strided_slice_27" + input: "Reshape_23/shape/2" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_23" + op: "Reshape" + input: "Reshape_22" + input: "Reshape_23/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_24/shape" + op: "Pack" + input: "strided_slice_26" + input: "strided_slice_28" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_24" + op: "Reshape" + input: "Reshape_1" + input: "Reshape_24/shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Const_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "Const_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_29/stack/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_29/stack" + op: "Pack" + input: "strided_slice_29/stack/0" + input: "Const_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "strided_slice_29/stack_1/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_29/stack_1" + op: "Pack" + input: "strided_slice_29/stack_1/0" + input: "strided_slice_27" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "strided_slice_29/stack_2/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_29/stack_2" + op: "Pack" + input: "strided_slice_29/stack_2/0" + input: "Const_2" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "strided_slice_29" + op: "StridedSlice" + input: "Reshape_24" + input: "strided_slice_29/stack" + input: "strided_slice_29/stack_1" + input: "strided_slice_29/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 3 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 1 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "GreaterEqual_1/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "GreaterEqual_1" + op: "GreaterEqual" + input: "strided_slice_29" + input: "GreaterEqual_1/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "zeros_like" + op: "ZerosLike" + input: "strided_slice_29" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Select" + op: "Select" + input: "GreaterEqual_1" + input: "strided_slice_29" + input: "zeros_like" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_30/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_30/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_30/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_30" + op: "StridedSlice" + input: "model_attr/model_attr/t_out_bias/read" + input: "strided_slice_30/stack" + input: "strided_slice_30/stack_1" + input: "strided_slice_30/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "GatherV2/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "GatherV2" + op: "GatherV2" + input: "strided_slice_30" + input: "Select" + input: "GatherV2/axis" + attr { + key: "Taxis" + value { + type: DT_INT32 + } + } + attr { + key: "Tindices" + value { + type: DT_INT32 + } + } + attr { + key: "Tparams" + value { + type: DT_DOUBLE + } + } + attr { + key: "batch_dims" + value { + i: 0 + } + } +} +node { + name: "strided_slice_31/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_31/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_31/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_31" + op: "StridedSlice" + input: "model_attr/model_attr/t_out_std/read" + input: "strided_slice_31/stack" + input: "strided_slice_31/stack_1" + input: "strided_slice_31/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "GatherV2_1/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 0 + } + } + } +} +node { + name: "GatherV2_1" + op: "GatherV2" + input: "strided_slice_31" + input: "Select" + input: "GatherV2_1/axis" + attr { + key: "Taxis" + value { + type: DT_INT32 + } + } + attr { + key: "Tindices" + value { + type: DT_INT32 + } + } + attr { + key: "Tparams" + value { + type: DT_DOUBLE + } + } + attr { + key: "batch_dims" + value { + i: 0 + } + } +} +node { + name: "mul_5" + op: "Mul" + input: "Reshape_23" + input: "GatherV2_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "add_4" + op: "AddV2" + input: "mul_5" + input: "GatherV2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "ExpandDims/dim" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "ExpandDims" + op: "ExpandDims" + input: "GreaterEqual_1" + input: "ExpandDims/dim" + attr { + key: "T" + value { + type: DT_BOOL + } + } + attr { + key: "Tdim" + value { + type: DT_INT32 + } + } +} +node { + name: "Tile/multiples" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\001\000\000\000\001\000\000\000\001\000\000\000" + } + } + } +} +node { + name: "Tile" + op: "Tile" + input: "ExpandDims" + input: "Tile/multiples" + attr { + key: "T" + value { + type: DT_BOOL + } + } + attr { + key: "Tmultiples" + value { + type: DT_INT32 + } + } +} +node { + name: "Select_1" + op: "Select" + input: "Tile" + input: "add_4" + input: "Reshape_23" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "Shape_8" + op: "Shape" + input: "Reshape_22" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "Reshape_25" + op: "Reshape" + input: "Select_1" + input: "Shape_8" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_32/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_32/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_32/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_32" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_32/stack" + input: "strided_slice_32/stack_1" + input: "strided_slice_32/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "o_atom_energy/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "o_atom_energy/shape" + op: "Pack" + input: "o_atom_energy/shape/0" + input: "strided_slice_32" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "o_atom_energy" + op: "Reshape" + input: "Reshape_25" + input: "o_atom_energy/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "o_energy/reduction_indices" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "o_energy" + op: "Sum" + input: "o_atom_energy" + input: "o_energy/reduction_indices" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/Shape" + op: "Shape" + input: "Reshape_25" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/grad_ys_0/Const" + op: "Const" + attr { + key: "dtype" + value { + type: DT_DOUBLE + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_DOUBLE + tensor_shape { + } + double_val: 1.0 + } + } + } +} +node { + name: "gradients/grad_ys_0" + op: "Fill" + input: "gradients/Shape" + input: "gradients/grad_ys_0/Const" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "index_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_25_grad/Shape" + op: "Shape" + input: "Select_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_25_grad/Reshape" + op: "Reshape" + input: "gradients/grad_ys_0" + input: "gradients/Reshape_25_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Select_1_grad/zeros_like" + op: "ZerosLike" + input: "add_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/Select_1_grad/Select" + op: "Select" + input: "Tile" + input: "gradients/Reshape_25_grad/Reshape" + input: "gradients/Select_1_grad/zeros_like" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/Select_1_grad/Select_1" + op: "Select" + input: "Tile" + input: "gradients/Select_1_grad/zeros_like" + input: "gradients/Reshape_25_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/add_4_grad/Shape" + op: "Shape" + input: "mul_5" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/add_4_grad/Shape_1" + op: "Shape" + input: "GatherV2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/add_4_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/add_4_grad/Shape" + input: "gradients/add_4_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/add_4_grad/Sum" + op: "Sum" + input: "gradients/Select_1_grad/Select" + input: "gradients/add_4_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/add_4_grad/Reshape" + op: "Reshape" + input: "gradients/add_4_grad/Sum" + input: "gradients/add_4_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/mul_5_grad/Mul" + op: "Mul" + input: "gradients/add_4_grad/Reshape" + input: "GatherV2_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/mul_5_grad/Shape" + op: "Shape" + input: "Reshape_23" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/mul_5_grad/Shape_1" + op: "Shape" + input: "GatherV2_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/mul_5_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/mul_5_grad/Shape" + input: "gradients/mul_5_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/mul_5_grad/Sum" + op: "Sum" + input: "gradients/mul_5_grad/Mul" + input: "gradients/mul_5_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/mul_5_grad/Reshape" + op: "Reshape" + input: "gradients/mul_5_grad/Sum" + input: "gradients/mul_5_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN" + op: "AddN" + input: "gradients/Select_1_grad/Select_1" + input: "gradients/mul_5_grad/Reshape" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/Select_1_grad/Select_1" + } + } + } +} +node { + name: "gradients/Reshape_23_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -1 + } + } + } +} +node { + name: "gradients/Reshape_23_grad/Reshape" + op: "Reshape" + input: "gradients/AddN" + input: "gradients/Reshape_23_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_22_grad/Shape" + op: "Shape" + input: "mul_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_22_grad/Reshape" + op: "Reshape" + input: "gradients/Reshape_23_grad/Reshape" + input: "gradients/Reshape_22_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/mul_3_grad/Mul" + op: "Mul" + input: "gradients/Reshape_22_grad/Reshape" + input: "Cast" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/mul_3_grad/Shape" + op: "Shape" + input: "add_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/mul_3_grad/Shape_1" + op: "Shape" + input: "Cast" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/mul_3_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/mul_3_grad/Shape" + input: "gradients/mul_3_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/mul_3_grad/Sum" + op: "Sum" + input: "gradients/mul_3_grad/Mul" + input: "gradients/mul_3_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/mul_3_grad/Reshape" + op: "Reshape" + input: "gradients/mul_3_grad/Sum" + input: "gradients/mul_3_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/add_3_grad/Shape" + op: "Shape" + input: "concat_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/add_3_grad/Shape_1" + op: "Shape" + input: "Reshape_21" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/add_3_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/add_3_grad/Shape" + input: "gradients/add_3_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/add_3_grad/Sum" + op: "Sum" + input: "gradients/mul_3_grad/Reshape" + input: "gradients/add_3_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/add_3_grad/Reshape" + op: "Reshape" + input: "gradients/add_3_grad/Sum" + input: "gradients/add_3_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/concat_3_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/concat_3_grad/mod" + op: "FloorMod" + input: "concat_3/axis" + input: "gradients/concat_3_grad/Rank" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/concat_3_grad/ShapeN" + op: "ShapeN" + input: "Reshape_18" + input: "Reshape_20" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/concat_3_grad/ConcatOffset" + op: "ConcatOffset" + input: "gradients/concat_3_grad/mod" + input: "gradients/concat_3_grad/ShapeN" + input: "gradients/concat_3_grad/ShapeN:1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "shape_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/concat_3_grad/Slice" + op: "Slice" + input: "gradients/add_3_grad/Reshape" + input: "gradients/concat_3_grad/ConcatOffset" + input: "gradients/concat_3_grad/ShapeN" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/concat_3_grad/Slice_1" + op: "Slice" + input: "gradients/add_3_grad/Reshape" + input: "gradients/concat_3_grad/ConcatOffset:1" + input: "gradients/concat_3_grad/ShapeN:1" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/Reshape_18_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "gradients/Reshape_18_grad/Reshape" + op: "Reshape" + input: "gradients/concat_3_grad/Slice" + input: "gradients/Reshape_18_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_20_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "gradients/Reshape_20_grad/Reshape" + op: "Reshape" + input: "gradients/concat_3_grad/Slice_1" + input: "gradients/Reshape_20_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/final_layer_type_0/MatMul_grad/MatMul" + op: "MatMul" + input: "gradients/Reshape_18_grad/Reshape" + input: "final_layer_type_0/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/final_layer_type_1/MatMul_grad/MatMul" + op: "MatMul" + input: "gradients/Reshape_20_grad/Reshape" + input: "final_layer_type_1/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/layer_0_type_0/Reshape_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377x\000\000\000" + } + } + } +} +node { + name: "gradients/layer_0_type_0/Reshape_grad/Reshape" + op: "Reshape" + input: "gradients/final_layer_type_0/MatMul_grad/MatMul" + input: "gradients/layer_0_type_0/Reshape_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/layer_0_type_1/Reshape_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377x\000\000\000" + } + } + } +} +node { + name: "gradients/layer_0_type_1/Reshape_grad/Reshape" + op: "Reshape" + input: "gradients/final_layer_type_1/MatMul_grad/MatMul" + input: "gradients/layer_0_type_1/Reshape_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/layer_0_type_0/Tanh_grad/TanhGrad" + op: "TanhGrad" + input: "layer_0_type_0/Tanh" + input: "gradients/layer_0_type_0/Reshape_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/layer_0_type_1/Tanh_grad/TanhGrad" + op: "TanhGrad" + input: "layer_0_type_1/Tanh" + input: "gradients/layer_0_type_1/Reshape_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/layer_0_type_0/MatMul_grad/MatMul" + op: "MatMul" + input: "gradients/layer_0_type_0/Tanh_grad/TanhGrad" + input: "layer_0_type_0/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/layer_0_type_1/MatMul_grad/MatMul" + op: "MatMul" + input: "gradients/layer_0_type_1/Tanh_grad/TanhGrad" + input: "layer_0_type_1/matrix/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/Reshape_17_grad/Shape" + op: "Shape" + input: "Slice_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_17_grad/Reshape" + op: "Reshape" + input: "gradients/layer_0_type_0/MatMul_grad/MatMul" + input: "gradients/Reshape_17_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_19_grad/Shape" + op: "Shape" + input: "Slice_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_19_grad/Reshape" + op: "Reshape" + input: "gradients/layer_0_type_1/MatMul_grad/MatMul" + input: "gradients/Reshape_19_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "gradients/Slice_2_grad/Shape" + op: "Shape" + input: "Slice_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Slice_2_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/Slice_2_grad/stack" + op: "Pack" + input: "gradients/Slice_2_grad/Rank" + input: "gradients/Slice_2_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/Slice_2_grad/Reshape" + op: "Reshape" + input: "Slice_2/begin" + input: "gradients/Slice_2_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/Shape_1" + op: "Shape" + input: "Reshape_14" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Slice_2_grad/sub" + op: "Sub" + input: "gradients/Slice_2_grad/Shape_1" + input: "gradients/Slice_2_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/sub_1" + op: "Sub" + input: "gradients/Slice_2_grad/sub" + input: "Slice_2/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/Reshape_1" + op: "Reshape" + input: "gradients/Slice_2_grad/sub_1" + input: "gradients/Slice_2_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/Slice_2_grad/concat" + op: "ConcatV2" + input: "gradients/Slice_2_grad/Reshape" + input: "gradients/Slice_2_grad/Reshape_1" + input: "gradients/Slice_2_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_2_grad/Pad" + op: "Pad" + input: "gradients/Reshape_17_grad/Reshape" + input: "gradients/Slice_2_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "gradients/Slice_3_grad/Shape" + op: "Shape" + input: "Slice_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Slice_3_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/Slice_3_grad/stack" + op: "Pack" + input: "gradients/Slice_3_grad/Rank" + input: "gradients/Slice_3_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/Slice_3_grad/Reshape" + op: "Reshape" + input: "Slice_3/begin" + input: "gradients/Slice_3_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/Shape_1" + op: "Shape" + input: "Reshape_14" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Slice_3_grad/sub" + op: "Sub" + input: "gradients/Slice_3_grad/Shape_1" + input: "gradients/Slice_3_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/sub_1" + op: "Sub" + input: "gradients/Slice_3_grad/sub" + input: "Slice_3/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/Reshape_1" + op: "Reshape" + input: "gradients/Slice_3_grad/sub_1" + input: "gradients/Slice_3_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/Slice_3_grad/concat" + op: "ConcatV2" + input: "gradients/Slice_3_grad/Reshape" + input: "gradients/Slice_3_grad/Reshape_1" + input: "gradients/Slice_3_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Slice_3_grad/Pad" + op: "Pad" + input: "gradients/Reshape_19_grad/Reshape" + input: "gradients/Slice_3_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_1" + op: "AddN" + input: "gradients/Slice_2_grad/Pad" + input: "gradients/Slice_3_grad/Pad" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/Slice_2_grad/Pad" + } + } + } +} +node { + name: "gradients/Reshape_14_grad/Shape" + op: "Shape" + input: "o_descriptor" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_14_grad/Reshape" + op: "Reshape" + input: "gradients/AddN_1" + input: "gradients/Reshape_14_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_12_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\020\000\000\000" + } + } + } +} +node { + name: "gradients/Reshape_12_grad/Reshape" + op: "Reshape" + input: "gradients/Reshape_14_grad/Reshape" + input: "gradients/Reshape_12_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_12_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 3 + } + } + tensor_content: "\377\377\377\377\004\000\000\000\004\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_12_grad/Reshape" + op: "Reshape" + input: "gradients/Reshape_12_grad/Reshape" + input: "gradients/filter_type_all/Reshape_12_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/MatMul" + op: "BatchMatMulV2" + input: "filter_type_all/Slice_4" + input: "gradients/filter_type_all/Reshape_12_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: true + } + } + attr { + key: "grad_x" + value { + b: true + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/MatMul_1" + op: "BatchMatMulV2" + input: "filter_type_all/truediv" + input: "gradients/filter_type_all/Reshape_12_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Shape" + op: "Shape" + input: "filter_type_all/truediv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Slice_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_6_grad/Shape" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack_1" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_6_grad/Shape_1" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack_1" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice" + input: "gradients/filter_type_all/MatMul_6_grad/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Sum" + op: "Sum" + input: "gradients/filter_type_all/MatMul_6_grad/MatMul" + input: "gradients/filter_type_all/MatMul_6_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_6_grad/Sum" + input: "gradients/filter_type_all/MatMul_6_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Sum_1" + op: "Sum" + input: "gradients/filter_type_all/MatMul_6_grad/MatMul_1" + input: "gradients/filter_type_all/MatMul_6_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_6_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_6_grad/Sum_1" + input: "gradients/filter_type_all/MatMul_6_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Shape" + op: "Shape" + input: "filter_type_all/Slice_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/stack" + op: "Pack" + input: "gradients/filter_type_all/Slice_4_grad/Rank" + input: "gradients/filter_type_all/Slice_4_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Reshape" + op: "Reshape" + input: "filter_type_all/Slice_4/begin" + input: "gradients/filter_type_all/Slice_4_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Shape_1" + op: "Shape" + input: "filter_type_all/truediv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/sub" + op: "Sub" + input: "gradients/filter_type_all/Slice_4_grad/Shape_1" + input: "gradients/filter_type_all/Slice_4_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/sub_1" + op: "Sub" + input: "gradients/filter_type_all/Slice_4_grad/sub" + input: "filter_type_all/Slice_4/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/Slice_4_grad/sub_1" + input: "gradients/filter_type_all/Slice_4_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/concat" + op: "ConcatV2" + input: "gradients/filter_type_all/Slice_4_grad/Reshape" + input: "gradients/filter_type_all/Slice_4_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_4_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_4_grad/Pad" + op: "Pad" + input: "gradients/filter_type_all/MatMul_6_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_4_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_2" + op: "AddN" + input: "gradients/filter_type_all/MatMul_6_grad/Reshape" + input: "gradients/filter_type_all/Slice_4_grad/Pad" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/MatMul_6_grad/Reshape" + } + } + } +} +node { + name: "gradients/filter_type_all/truediv_grad/RealDiv" + op: "RealDiv" + input: "gradients/AddN_2" + input: "filter_type_all/truediv/y" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/MatMul" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_4" + input: "gradients/filter_type_all/truediv_grad/RealDiv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: true + } + } + attr { + key: "grad_x" + value { + b: true + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/MatMul_1" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_5" + input: "gradients/filter_type_all/truediv_grad/RealDiv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Shape" + op: "Shape" + input: "filter_type_all/Reshape_5" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_4" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_2_grad/Shape" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack_1" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_2_grad/Shape_1" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack_1" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice" + input: "gradients/filter_type_all/MatMul_2_grad/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Sum" + op: "Sum" + input: "gradients/filter_type_all/MatMul_2_grad/MatMul" + input: "gradients/filter_type_all/MatMul_2_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_2_grad/Sum" + input: "gradients/filter_type_all/MatMul_2_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Sum_1" + op: "Sum" + input: "gradients/filter_type_all/MatMul_2_grad/MatMul_1" + input: "gradients/filter_type_all/MatMul_2_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_2_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_2_grad/Sum_1" + input: "gradients/filter_type_all/MatMul_2_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/MatMul" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_10" + input: "gradients/filter_type_all/truediv_grad/RealDiv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: true + } + } + attr { + key: "grad_x" + value { + b: true + } + } + attr { + key: "grad_y" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/MatMul_1" + op: "BatchMatMulV2" + input: "filter_type_all/Reshape_11" + input: "gradients/filter_type_all/truediv_grad/RealDiv" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "adj_x" + value { + b: false + } + } + attr { + key: "adj_y" + value { + b: false + } + } + attr { + key: "grad_x" + value { + b: false + } + } + attr { + key: "grad_y" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Shape" + op: "Shape" + input: "filter_type_all/Reshape_11" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_10" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_5_grad/Shape" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack_1" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: -2 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1" + op: "StridedSlice" + input: "gradients/filter_type_all/MatMul_5_grad/Shape_1" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack_1" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 1 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice" + input: "gradients/filter_type_all/MatMul_5_grad/strided_slice_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Sum" + op: "Sum" + input: "gradients/filter_type_all/MatMul_5_grad/MatMul" + input: "gradients/filter_type_all/MatMul_5_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_5_grad/Sum" + input: "gradients/filter_type_all/MatMul_5_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Sum_1" + op: "Sum" + input: "gradients/filter_type_all/MatMul_5_grad/MatMul_1" + input: "gradients/filter_type_all/MatMul_5_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: false + } + } +} +node { + name: "gradients/filter_type_all/MatMul_5_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_5_grad/Sum_1" + input: "gradients/filter_type_all/MatMul_5_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_5_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\\\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_5_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_2_grad/Reshape" + input: "gradients/filter_type_all/Reshape_5_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_4_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_4_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_2_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_4_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_11_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\270\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_11_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_5_grad/Reshape" + input: "gradients/filter_type_all/Reshape_11_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_10_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_10_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/MatMul_5_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_10_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Shape" + op: "Shape" + input: "filter_type_all/concat_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/add_1_grad/Shape" + input: "gradients/filter_type_all/add_1_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Sum" + op: "Sum" + input: "gradients/filter_type_all/Reshape_4_grad/Reshape" + input: "gradients/filter_type_all/add_1_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_1_grad/Sum" + input: "gradients/filter_type_all/add_1_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Sum_1" + op: "Sum" + input: "gradients/filter_type_all/Reshape_4_grad/Reshape" + input: "gradients/filter_type_all/add_1_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_1_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/add_1_grad/Sum_1" + input: "gradients/filter_type_all/add_1_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Shape" + op: "Shape" + input: "filter_type_all/concat_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_9" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/add_3_grad/Shape" + input: "gradients/filter_type_all/add_3_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Sum" + op: "Sum" + input: "gradients/filter_type_all/Reshape_10_grad/Reshape" + input: "gradients/filter_type_all/add_3_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_3_grad/Sum" + input: "gradients/filter_type_all/add_3_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Sum_1" + op: "Sum" + input: "gradients/filter_type_all/Reshape_10_grad/Reshape" + input: "gradients/filter_type_all/add_3_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_3_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/add_3_grad/Sum_1" + input: "gradients/filter_type_all/add_3_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/mod" + op: "FloorMod" + input: "filter_type_all/concat_1/axis" + input: "gradients/filter_type_all/concat_1_grad/Rank" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/ShapeN" + op: "ShapeN" + input: "filter_type_all/add" + input: "filter_type_all/add" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/ConcatOffset" + op: "ConcatOffset" + input: "gradients/filter_type_all/concat_1_grad/mod" + input: "gradients/filter_type_all/concat_1_grad/ShapeN" + input: "gradients/filter_type_all/concat_1_grad/ShapeN:1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "shape_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/Slice" + op: "Slice" + input: "gradients/filter_type_all/add_1_grad/Reshape" + input: "gradients/filter_type_all/concat_1_grad/ConcatOffset" + input: "gradients/filter_type_all/concat_1_grad/ShapeN" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/concat_1_grad/Slice_1" + op: "Slice" + input: "gradients/filter_type_all/add_1_grad/Reshape" + input: "gradients/filter_type_all/concat_1_grad/ConcatOffset:1" + input: "gradients/filter_type_all/concat_1_grad/ShapeN:1" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Reshape_3_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_3_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_1_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_3_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/mod" + op: "FloorMod" + input: "filter_type_all/concat_3/axis" + input: "gradients/filter_type_all/concat_3_grad/Rank" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/ShapeN" + op: "ShapeN" + input: "filter_type_all/add_2" + input: "filter_type_all/add_2" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/ConcatOffset" + op: "ConcatOffset" + input: "gradients/filter_type_all/concat_3_grad/mod" + input: "gradients/filter_type_all/concat_3_grad/ShapeN" + input: "gradients/filter_type_all/concat_3_grad/ShapeN:1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "shape_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/Slice" + op: "Slice" + input: "gradients/filter_type_all/add_3_grad/Reshape" + input: "gradients/filter_type_all/concat_3_grad/ConcatOffset" + input: "gradients/filter_type_all/concat_3_grad/ShapeN" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/concat_3_grad/Slice_1" + op: "Slice" + input: "gradients/filter_type_all/add_3_grad/Reshape" + input: "gradients/filter_type_all/concat_3_grad/ConcatOffset:1" + input: "gradients/filter_type_all/concat_3_grad/ShapeN:1" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Reshape_9_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\004\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_9_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_3_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_9_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/Tanh_1_grad/TanhGrad" + op: "TanhGrad" + input: "filter_type_all/Tanh_1" + input: "gradients/filter_type_all/Reshape_3_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Tanh_3_grad/TanhGrad" + op: "TanhGrad" + input: "filter_type_all/Tanh_3" + input: "gradients/filter_type_all/Reshape_9_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/MatMul_1_grad/MatMul" + op: "MatMul" + input: "gradients/filter_type_all/Tanh_1_grad/TanhGrad" + input: "filter_type_all/matrix_2_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/MatMul_4_grad/MatMul" + op: "MatMul" + input: "gradients/filter_type_all/Tanh_3_grad/TanhGrad" + input: "filter_type_all/matrix_2_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/AddN_3" + op: "AddN" + input: "gradients/filter_type_all/concat_1_grad/Slice" + input: "gradients/filter_type_all/concat_1_grad/Slice_1" + input: "gradients/filter_type_all/MatMul_1_grad/MatMul" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/concat_1_grad/Slice" + } + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Shape" + op: "Shape" + input: "filter_type_all/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/add_grad/Shape" + input: "gradients/filter_type_all/add_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Sum" + op: "Sum" + input: "gradients/AddN_3" + input: "gradients/filter_type_all/add_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_grad/Sum" + input: "gradients/filter_type_all/add_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Sum_1" + op: "Sum" + input: "gradients/AddN_3" + input: "gradients/filter_type_all/add_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/add_grad/Sum_1" + input: "gradients/filter_type_all/add_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_4" + op: "AddN" + input: "gradients/filter_type_all/concat_3_grad/Slice" + input: "gradients/filter_type_all/concat_3_grad/Slice_1" + input: "gradients/filter_type_all/MatMul_4_grad/MatMul" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/concat_3_grad/Slice" + } + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Shape" + op: "Shape" + input: "filter_type_all/concat_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_8" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/BroadcastGradientArgs" + op: "BroadcastGradientArgs" + input: "gradients/filter_type_all/add_2_grad/Shape" + input: "gradients/filter_type_all/add_2_grad/Shape_1" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Sum" + op: "Sum" + input: "gradients/AddN_4" + input: "gradients/filter_type_all/add_2_grad/BroadcastGradientArgs" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_2_grad/Sum" + input: "gradients/filter_type_all/add_2_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Sum_1" + op: "Sum" + input: "gradients/AddN_4" + input: "gradients/filter_type_all/add_2_grad/BroadcastGradientArgs:1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } + attr { + key: "keep_dims" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/add_2_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/add_2_grad/Sum_1" + input: "gradients/filter_type_all/add_2_grad/Shape_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/mod" + op: "FloorMod" + input: "filter_type_all/concat/axis" + input: "gradients/filter_type_all/concat_grad/Rank" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/ShapeN" + op: "ShapeN" + input: "filter_type_all/Reshape_1" + input: "filter_type_all/Reshape_1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/ConcatOffset" + op: "ConcatOffset" + input: "gradients/filter_type_all/concat_grad/mod" + input: "gradients/filter_type_all/concat_grad/ShapeN" + input: "gradients/filter_type_all/concat_grad/ShapeN:1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "shape_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/Slice" + op: "Slice" + input: "gradients/filter_type_all/add_grad/Reshape" + input: "gradients/filter_type_all/concat_grad/ConcatOffset" + input: "gradients/filter_type_all/concat_grad/ShapeN" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/concat_grad/Slice_1" + op: "Slice" + input: "gradients/filter_type_all/add_grad/Reshape" + input: "gradients/filter_type_all/concat_grad/ConcatOffset:1" + input: "gradients/filter_type_all/concat_grad/ShapeN:1" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Reshape_2_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\002\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_2_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_2_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/mod" + op: "FloorMod" + input: "filter_type_all/concat_2/axis" + input: "gradients/filter_type_all/concat_2_grad/Rank" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/ShapeN" + op: "ShapeN" + input: "filter_type_all/Reshape_7" + input: "filter_type_all/Reshape_7" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/ConcatOffset" + op: "ConcatOffset" + input: "gradients/filter_type_all/concat_2_grad/mod" + input: "gradients/filter_type_all/concat_2_grad/ShapeN" + input: "gradients/filter_type_all/concat_2_grad/ShapeN:1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "shape_type" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/Slice" + op: "Slice" + input: "gradients/filter_type_all/add_2_grad/Reshape" + input: "gradients/filter_type_all/concat_2_grad/ConcatOffset" + input: "gradients/filter_type_all/concat_2_grad/ShapeN" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/concat_2_grad/Slice_1" + op: "Slice" + input: "gradients/filter_type_all/add_2_grad/Reshape" + input: "gradients/filter_type_all/concat_2_grad/ConcatOffset:1" + input: "gradients/filter_type_all/concat_2_grad/ShapeN:1" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Reshape_8_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\002\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_8_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/add_2_grad/Reshape_1" + input: "gradients/filter_type_all/Reshape_8_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } + attr { + key: "_has_manual_control_dependencies" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/Tanh_grad/TanhGrad" + op: "TanhGrad" + input: "filter_type_all/Tanh" + input: "gradients/filter_type_all/Reshape_2_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/Tanh_2_grad/TanhGrad" + op: "TanhGrad" + input: "filter_type_all/Tanh_2" + input: "gradients/filter_type_all/Reshape_8_grad/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } +} +node { + name: "gradients/filter_type_all/MatMul_grad/MatMul" + op: "MatMul" + input: "gradients/filter_type_all/Tanh_grad/TanhGrad" + input: "filter_type_all/matrix_1_0/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/filter_type_all/MatMul_3_grad/MatMul" + op: "MatMul" + input: "gradients/filter_type_all/Tanh_2_grad/TanhGrad" + input: "filter_type_all/matrix_1_1/read" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "grad_a" + value { + b: true + } + } + attr { + key: "grad_b" + value { + b: false + } + } + attr { + key: "transpose_a" + value { + b: false + } + } + attr { + key: "transpose_b" + value { + b: true + } + } +} +node { + name: "gradients/AddN_5" + op: "AddN" + input: "gradients/filter_type_all/concat_grad/Slice" + input: "gradients/filter_type_all/concat_grad/Slice_1" + input: "gradients/filter_type_all/MatMul_grad/MatMul" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/concat_grad/Slice" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_1_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_1_grad/Reshape" + op: "Reshape" + input: "gradients/AddN_5" + input: "gradients/filter_type_all/Reshape_1_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_6" + op: "AddN" + input: "gradients/filter_type_all/concat_2_grad/Slice" + input: "gradients/filter_type_all/concat_2_grad/Slice_1" + input: "gradients/filter_type_all/MatMul_3_grad/MatMul" + attr { + key: "N" + value { + i: 3 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/concat_2_grad/Slice" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_7_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\001\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_7_grad/Reshape" + op: "Reshape" + input: "gradients/AddN_6" + input: "gradients/filter_type_all/Reshape_7_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Shape" + op: "Shape" + input: "filter_type_all/Slice_1" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/stack" + op: "Pack" + input: "gradients/filter_type_all/Slice_1_grad/Rank" + input: "gradients/filter_type_all/Slice_1_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Reshape" + op: "Reshape" + input: "filter_type_all/Slice_1/begin" + input: "gradients/filter_type_all/Slice_1_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/sub" + op: "Sub" + input: "gradients/filter_type_all/Slice_1_grad/Shape_1" + input: "gradients/filter_type_all/Slice_1_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/sub_1" + op: "Sub" + input: "gradients/filter_type_all/Slice_1_grad/sub" + input: "filter_type_all/Slice_1/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/Slice_1_grad/sub_1" + input: "gradients/filter_type_all/Slice_1_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/concat" + op: "ConcatV2" + input: "gradients/filter_type_all/Slice_1_grad/Reshape" + input: "gradients/filter_type_all/Slice_1_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_1_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_1_grad/Pad" + op: "Pad" + input: "gradients/filter_type_all/Reshape_1_grad/Reshape" + input: "gradients/filter_type_all/Slice_1_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Shape" + op: "Shape" + input: "filter_type_all/Slice_3" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/stack" + op: "Pack" + input: "gradients/filter_type_all/Slice_3_grad/Rank" + input: "gradients/filter_type_all/Slice_3_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Reshape" + op: "Reshape" + input: "filter_type_all/Slice_3/begin" + input: "gradients/filter_type_all/Slice_3_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Shape_1" + op: "Shape" + input: "filter_type_all/Reshape_6" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/sub" + op: "Sub" + input: "gradients/filter_type_all/Slice_3_grad/Shape_1" + input: "gradients/filter_type_all/Slice_3_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/sub_1" + op: "Sub" + input: "gradients/filter_type_all/Slice_3_grad/sub" + input: "filter_type_all/Slice_3/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/Slice_3_grad/sub_1" + input: "gradients/filter_type_all/Slice_3_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/concat" + op: "ConcatV2" + input: "gradients/filter_type_all/Slice_3_grad/Reshape" + input: "gradients/filter_type_all/Slice_3_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_3_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_3_grad/Pad" + op: "Pad" + input: "gradients/filter_type_all/Reshape_7_grad/Reshape" + input: "gradients/filter_type_all/Slice_3_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\\\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/Slice_1_grad/Pad" + input: "gradients/filter_type_all/Reshape_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Reshape_6_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\270\000\000\000" + } + } + } +} +node { + name: "gradients/filter_type_all/Reshape_6_grad/Reshape" + op: "Reshape" + input: "gradients/filter_type_all/Slice_3_grad/Pad" + input: "gradients/filter_type_all/Reshape_6_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_7" + op: "AddN" + input: "gradients/filter_type_all/Reshape_5_grad/Reshape" + input: "gradients/filter_type_all/Reshape_grad/Reshape" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/Reshape_5_grad/Reshape" + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Shape" + op: "Shape" + input: "filter_type_all/Slice" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/stack" + op: "Pack" + input: "gradients/filter_type_all/Slice_grad/Rank" + input: "gradients/filter_type_all/Slice_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Reshape" + op: "Reshape" + input: "filter_type_all/Slice/begin" + input: "gradients/filter_type_all/Slice_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Shape_1" + op: "Shape" + input: "Reshape_9" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/sub" + op: "Sub" + input: "gradients/filter_type_all/Slice_grad/Shape_1" + input: "gradients/filter_type_all/Slice_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/sub_1" + op: "Sub" + input: "gradients/filter_type_all/Slice_grad/sub" + input: "filter_type_all/Slice/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/Slice_grad/sub_1" + input: "gradients/filter_type_all/Slice_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/concat" + op: "ConcatV2" + input: "gradients/filter_type_all/Slice_grad/Reshape" + input: "gradients/filter_type_all/Slice_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_grad/Pad" + op: "Pad" + input: "gradients/AddN_7" + input: "gradients/filter_type_all/Slice_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_8" + op: "AddN" + input: "gradients/filter_type_all/Reshape_11_grad/Reshape" + input: "gradients/filter_type_all/Reshape_6_grad/Reshape" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/Reshape_11_grad/Reshape" + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Rank" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 2 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Shape" + op: "Shape" + input: "filter_type_all/Slice_2" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/stack/1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/stack" + op: "Pack" + input: "gradients/filter_type_all/Slice_2_grad/Rank" + input: "gradients/filter_type_all/Slice_2_grad/stack/1" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Reshape" + op: "Reshape" + input: "filter_type_all/Slice_2/begin" + input: "gradients/filter_type_all/Slice_2_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Shape_1" + op: "Shape" + input: "Reshape_9" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/sub" + op: "Sub" + input: "gradients/filter_type_all/Slice_2_grad/Shape_1" + input: "gradients/filter_type_all/Slice_2_grad/Shape" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/sub_1" + op: "Sub" + input: "gradients/filter_type_all/Slice_2_grad/sub" + input: "filter_type_all/Slice_2/begin" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Reshape_1" + op: "Reshape" + input: "gradients/filter_type_all/Slice_2_grad/sub_1" + input: "gradients/filter_type_all/Slice_2_grad/stack" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/concat/axis" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 1 + } + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/concat" + op: "ConcatV2" + input: "gradients/filter_type_all/Slice_2_grad/Reshape" + input: "gradients/filter_type_all/Slice_2_grad/Reshape_1" + input: "gradients/filter_type_all/Slice_2_grad/concat/axis" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "Tidx" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/filter_type_all/Slice_2_grad/Pad" + op: "Pad" + input: "gradients/AddN_8" + input: "gradients/filter_type_all/Slice_2_grad/concat" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tpaddings" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/AddN_9" + op: "AddN" + input: "gradients/filter_type_all/Slice_grad/Pad" + input: "gradients/filter_type_all/Slice_2_grad/Pad" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "_class" + value { + list { + s: "loc:@gradients/filter_type_all/Slice_grad/Pad" + } + } + } +} +node { + name: "gradients/Reshape_9_grad/Shape" + op: "Shape" + input: "Reshape_8" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "gradients/Reshape_9_grad/Reshape" + op: "Reshape" + input: "gradients/AddN_9" + input: "gradients/Reshape_9_grad/Shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "gradients/Reshape_8_grad/Reshape/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\024\001\000\000" + } + } + } +} +node { + name: "gradients/Reshape_8_grad/Reshape" + op: "Reshape" + input: "gradients/Reshape_9_grad/Reshape" + input: "gradients/Reshape_8_grad/Reshape/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "Shape_9" + op: "Shape" + input: "o_nlist" + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "out_type" + value { + type: DT_INT32 + } + } + experimental_type { + type_id: TFT_PRODUCT + args { + type_id: TFT_SHAPE_TENSOR + args { + type_id: TFT_INT32 + } + } + } +} +node { + name: "strided_slice_33/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_33/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_33/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_33" + op: "StridedSlice" + input: "Shape_9" + input: "strided_slice_33/stack" + input: "strided_slice_33/stack_1" + input: "strided_slice_33/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "strided_slice_34/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 0 + } + } + } +} +node { + name: "strided_slice_34/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_34/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_34" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_34/stack" + input: "strided_slice_34/stack_1" + input: "strided_slice_34/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul_6/y" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 276 + } + } + } +} +node { + name: "mul_6" + op: "Mul" + input: "strided_slice_34" + input: "mul_6/y" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_26/shape" + op: "Pack" + input: "strided_slice_33" + input: "mul_6" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_26" + op: "Reshape" + input: "gradients/Reshape_8_grad/Reshape" + input: "Reshape_26/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "ProdForceSeA" + op: "ProdForceSeA" + input: "Reshape_26" + input: "o_rmat_deriv" + input: "o_nlist" + input: "t_natoms" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "n_a_sel" + value { + i: 69 + } + } + attr { + key: "n_r_sel" + value { + i: 0 + } + } +} +node { + name: "ProdVirialSeA" + op: "ProdVirialSeA" + input: "Reshape_26" + input: "o_rmat_deriv" + input: "o_rij" + input: "o_nlist" + input: "t_natoms" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "n_a_sel" + value { + i: 69 + } + } + attr { + key: "n_r_sel" + value { + i: 0 + } + } +} +node { + name: "strided_slice_35/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_35/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_35/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_35" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_35/stack" + input: "strided_slice_35/stack_1" + input: "strided_slice_35/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul_7/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "mul_7" + op: "Mul" + input: "mul_7/x" + input: "strided_slice_35" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "Reshape_27/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "Reshape_27/shape" + op: "Pack" + input: "Reshape_27/shape/0" + input: "mul_7" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "Reshape_27" + op: "Reshape" + input: "ProdForceSeA" + input: "Reshape_27/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_36/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_36/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_36/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_36" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_36/stack" + input: "strided_slice_36/stack_1" + input: "strided_slice_36/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul_8/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 3 + } + } + } +} +node { + name: "mul_8" + op: "Mul" + input: "mul_8/x" + input: "strided_slice_36" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "o_force/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "o_force/shape" + op: "Pack" + input: "o_force/shape/0" + input: "mul_8" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "o_force" + op: "Reshape" + input: "Reshape_27" + input: "o_force/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "o_virial/shape" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 2 + } + } + tensor_content: "\377\377\377\377\t\000\000\000" + } + } + } +} +node { + name: "o_virial" + op: "Reshape" + input: "ProdVirialSeA" + input: "o_virial/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +node { + name: "strided_slice_37/stack" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_37/stack_1" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 2 + } + } + } +} +node { + name: "strided_slice_37/stack_2" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + dim { + size: 1 + } + } + int_val: 1 + } + } + } +} +node { + name: "strided_slice_37" + op: "StridedSlice" + input: "t_natoms" + input: "strided_slice_37/stack" + input: "strided_slice_37/stack_1" + input: "strided_slice_37/stack_2" + attr { + key: "Index" + value { + type: DT_INT32 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "begin_mask" + value { + i: 0 + } + } + attr { + key: "ellipsis_mask" + value { + i: 0 + } + } + attr { + key: "end_mask" + value { + i: 0 + } + } + attr { + key: "new_axis_mask" + value { + i: 0 + } + } + attr { + key: "shrink_axis_mask" + value { + i: 1 + } + } +} +node { + name: "mul_9/x" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: 9 + } + } + } +} +node { + name: "mul_9" + op: "Mul" + input: "mul_9/x" + input: "strided_slice_37" + attr { + key: "T" + value { + type: DT_INT32 + } + } +} +node { + name: "o_atom_virial/shape/0" + op: "Const" + attr { + key: "dtype" + value { + type: DT_INT32 + } + } + attr { + key: "value" + value { + tensor { + dtype: DT_INT32 + tensor_shape { + } + int_val: -1 + } + } + } +} +node { + name: "o_atom_virial/shape" + op: "Pack" + input: "o_atom_virial/shape/0" + input: "mul_9" + attr { + key: "N" + value { + i: 2 + } + } + attr { + key: "T" + value { + type: DT_INT32 + } + } + attr { + key: "axis" + value { + i: 0 + } + } +} +node { + name: "o_atom_virial" + op: "Reshape" + input: "ProdVirialSeA:1" + input: "o_atom_virial/shape" + attr { + key: "T" + value { + type: DT_DOUBLE + } + } + attr { + key: "Tshape" + value { + type: DT_INT32 + } + } +} +library { +} +versions { + producer: 1994 +} diff --git a/source/tests/pt/test_init_frz_model.py b/source/tests/pt/test_init_frz_model.py index 62fbeede3c..612ef45f1c 100644 --- a/source/tests/pt/test_init_frz_model.py +++ b/source/tests/pt/test_init_frz_model.py @@ -13,6 +13,9 @@ import numpy as np +from deepmd.entrypoints.convert_backend import ( + convert_backend, +) from deepmd.pt.entrypoints.main import ( freeze, get_trainer, @@ -20,6 +23,9 @@ from deepmd.pt.infer.deep_eval import ( DeepPot, ) +from deepmd.tf.utils.convert import ( + convert_pbtxt_to_pb, +) from .common import ( run_dp, @@ -29,7 +35,7 @@ class TestInitFrzModel(unittest.TestCase): def setUp(self) -> None: input_json = str(Path(__file__).parent / "water/se_atten.json") - with open(input_json) as f: + with open(input_json, encoding="utf-8") as f: config = json.load(f) config["model"]["descriptor"]["smooth_type_embedding"] = True config["training"]["numb_steps"] = 1 @@ -58,7 +64,7 @@ def setUp(self) -> None: empty_config["model"]["fitting_net"] = {} empty_config["training"]["numb_steps"] = 0 tmp_input = tempfile.NamedTemporaryFile(delete=False, suffix=".json") - with open(tmp_input.name, "w") as f: + with open(tmp_input.name, "w", encoding="utf-8") as f: json.dump(empty_config, f, indent=4) run_dp( f"dp --pt train {tmp_input.name} --init-frz-model {self.models[-1]} --use-pretrain-script --skip-neighbor-stat" @@ -129,6 +135,43 @@ def test_dp_test(self) -> None: np.testing.assert_allclose(av1, av2, rtol=1e-10, atol=1e-10) np.testing.assert_allclose(av1, av3, rtol=1e-10, atol=1e-10) + def test_init_frz_model_pb2pth(self) -> None: + """Test initialization from frozen model converted from pb.""" + frozen_model = "frozen_model_pb2pth.pth" + # Convert pth model from pb model + convert_pbtxt_to_pb( + str(Path(__file__).parent / "model/models/se_e2_a.pbtxt"), "frozen_model.pb" + ) + convert_backend(INPUT="frozen_model.pb", OUTPUT=frozen_model) + + # Create a base model + input_json = str(Path(__file__).parent / "model/models/se_e2_a.json") + with open(input_json, encoding="utf-8") as f: + config = json.load(f) + config["training"]["save_freq"] = 1 + config["learning_rate"]["start_lr"] = 1.0 + config["training"]["training_data"]["systems"] = [ + str(Path(__file__).parent / "water/data/single") + ] + config["training"]["validation_data"]["systems"] = [ + str(Path(__file__).parent / "water/data/single") + ] + config["training"]["numb_steps"] = 0 + + trainer = get_trainer(config, init_frz_model=frozen_model) + # Explicit assertions to make test success criteria clear + self.assertIsNotNone(trainer, "Trainer should be successfully initialized") + self.assertTrue( + hasattr(trainer, "model"), "Trainer should have a model attribute" + ) + self.assertTrue( + hasattr(trainer, "optimizer"), "Trainer should have an optimizer attribute" + ) + # Run the trainer (this would fail if initialization was incorrect) + trainer.run() + # Verify the model was properly initialized from the frozen model + self.assertIsNotNone(trainer.model, "Model should be properly initialized") + def tearDown(self) -> None: for f in os.listdir("."): if f.startswith("frozen_model") and f.endswith(".pth"): @@ -139,3 +182,5 @@ def tearDown(self) -> None: os.remove(f) if f in ["stat_files"]: shutil.rmtree(f) + if f.startswith("frozen_model") and f.endswith(".pb"): + os.remove(f)