예제 #1
0
 def testAggregateH5FormatSaveLoad(self):
     model_config = configs.AggregateFunctionConfig(
         feature_configs=feature_configs,
         regularizer_configs=[
             configs.RegularizerConfig('calib_hessian', l2=1e-4),
             configs.RegularizerConfig('torsion', l2=1e-3),
         ],
         middle_calibration=True,
         middle_monotonicity='increasing',
         output_min=0.0,
         output_max=1.0,
         output_calibration=True,
         output_calibration_num_keypoints=8,
         output_initialization=[0.0, 1.0])
     model = premade.AggregateFunction(model_config)
     # Compile and fit model.
     model.compile(loss='mse', optimizer=tf.keras.optimizers.Adam(0.1))
     model.fit(fake_data['train_xs'], fake_data['train_ys'])
     # Save model using H5 format.
     with tempfile.NamedTemporaryFile(suffix='.h5') as f:
         # Note: because of naming clashes in the optimizer, we cannot include it
         # when saving in HDF5. The keras team has informed us that we should not
         # push to support this since SavedModel format is the new default and no
         # new HDF5 functionality is desired.
         tf.keras.models.save_model(model, f.name, include_optimizer=False)
         loaded_model = tf.keras.models.load_model(
             f.name, custom_objects=premade.get_custom_objects())
         self.assertAllClose(model.predict(fake_data['eval_xs']),
                             loaded_model.predict(fake_data['eval_xs']))
예제 #2
0
 def testLatticeEnsembleH5FormatSaveLoad(self):
     model_config = configs.CalibratedLatticeEnsembleConfig(
         feature_configs=copy.deepcopy(feature_configs),
         lattices=[['numerical_1', 'categorical'],
                   ['numerical_2', 'categorical']],
         num_lattices=2,
         lattice_rank=2,
         separate_calibrators=True,
         regularizer_configs=[
             configs.RegularizerConfig('calib_hessian', l2=1e-3),
             configs.RegularizerConfig('torsion', l2=1e-4),
         ],
         output_min=-1.0,
         output_max=1.0,
         output_calibration=True,
         output_calibration_num_keypoints=5,
         output_initialization=[-1.0, 1.0])
     model = premade.CalibratedLatticeEnsemble(model_config)
     # Compile and fit model.
     model.compile(loss='mse', optimizer=tf.keras.optimizers.Adam(0.1))
     model.fit(fake_data['train_xs'], fake_data['train_ys'])
     # Save model using H5 format.
     with tempfile.NamedTemporaryFile(suffix='.h5') as f:
         tf.keras.models.save_model(model, f.name)
         loaded_model = tf.keras.models.load_model(
             f.name, custom_objects=premade.get_custom_objects())
         self.assertAllClose(model.predict(fake_data['eval_xs']),
                             loaded_model.predict(fake_data['eval_xs']))
예제 #3
0
 def testLatticeEnsembleFromConfig(self):
     model_config = configs.CalibratedLatticeEnsembleConfig(
         feature_configs=copy.deepcopy(feature_configs),
         lattices=[['numerical_1', 'categorical'],
                   ['numerical_2', 'categorical']],
         num_lattices=2,
         lattice_rank=2,
         separate_calibrators=True,
         regularizer_configs=[
             configs.RegularizerConfig('calib_hessian', l2=1e-3),
             configs.RegularizerConfig('torsion', l2=1e-4),
         ],
         output_min=-1.0,
         output_max=1.0,
         output_calibration=True,
         output_calibration_num_keypoints=5,
         output_initialization=[-1.0, 1.0])
     model = premade.CalibratedLatticeEnsemble(model_config)
     loaded_model = premade.CalibratedLatticeEnsemble.from_config(
         model.get_config(), custom_objects=premade.get_custom_objects())
     self.assertEqual(
         json.dumps(model.get_config(), sort_keys=True, cls=self.Encoder),
         json.dumps(loaded_model.get_config(),
                    sort_keys=True,
                    cls=self.Encoder))
예제 #4
0
 def testLatticeH5FormatSaveLoad(self, parameterization, num_terms):
   model_config = configs.CalibratedLatticeConfig(
       feature_configs=copy.deepcopy(feature_configs),
       parameterization=parameterization,
       num_terms=num_terms,
       regularizer_configs=[
           configs.RegularizerConfig('calib_wrinkle', l2=1e-3),
           configs.RegularizerConfig('torsion', l2=1e-3),
       ],
       output_min=0.0,
       output_max=1.0,
       output_calibration=True,
       output_calibration_num_keypoints=6,
       output_initialization=[0.0, 1.0])
   if parameterization == 'kronecker_factored':
     model_config.regularizer_configs = None
     for feature_config in model_config.feature_configs:
       feature_config.lattice_size = 2
       feature_config.unimodality = 'none'
       feature_config.reflects_trust_in = None
       feature_config.dominates = None
       feature_config.regularizer_configs = None
   model = premade.CalibratedLattice(model_config)
   # Compile and fit model.
   model.compile(loss='mse', optimizer=tf.keras.optimizers.Adam(0.1))
   model.fit(fake_data['train_xs'], fake_data['train_ys'])
   # Save model using H5 format.
   with tempfile.NamedTemporaryFile(suffix='.h5') as f:
     tf.keras.models.save_model(model, f.name)
     loaded_model = tf.keras.models.load_model(
         f.name, custom_objects=premade.get_custom_objects())
     self.assertAllClose(
         model.predict(fake_data['eval_xs']),
         loaded_model.predict(fake_data['eval_xs']))
예제 #5
0
 def testLatticeFromConfig(self):
   model_config = configs.CalibratedLatticeConfig(
       feature_configs=copy.deepcopy(feature_configs),
       regularizer_configs=[
           configs.RegularizerConfig('calib_wrinkle', l2=1e-3),
           configs.RegularizerConfig('torsion', l2=1e-3),
       ],
       output_min=0.0,
       output_max=1.0,
       output_calibration=True,
       output_calibration_num_keypoints=6,
       output_initialization=[0.0, 1.0])
   model = premade.CalibratedLattice(model_config)
   loaded_model = premade.CalibratedLattice.from_config(
       model.get_config(), custom_objects=premade.get_custom_objects())
   self.assertEqual(
       json.dumps(model.get_config(), sort_keys=True, cls=self.Encoder),
       json.dumps(loaded_model.get_config(), sort_keys=True, cls=self.Encoder))
예제 #6
0
 def testAggregateFromConfig(self):
   model_config = configs.AggregateFunctionConfig(
       feature_configs=feature_configs,
       regularizer_configs=[
           configs.RegularizerConfig('calib_hessian', l2=1e-4),
           configs.RegularizerConfig('torsion', l2=1e-3),
       ],
       middle_calibration=True,
       middle_monotonicity='increasing',
       output_min=0.0,
       output_max=1.0,
       output_calibration=True,
       output_calibration_num_keypoints=8,
       output_initialization=[0.0, 1.0])
   model = premade.AggregateFunction(model_config)
   loaded_model = premade.AggregateFunction.from_config(
       model.get_config(), custom_objects=premade.get_custom_objects())
   self.assertEqual(
       json.dumps(model.get_config(), sort_keys=True, cls=self.Encoder),
       json.dumps(loaded_model.get_config(), sort_keys=True, cls=self.Encoder))