@@ -310,7 +310,7 @@ def __init__(
310310 dataset = tf .data .Dataset .from_tensor_slices (sample_indices )
311311
312312 batched_data = dataset .batch (batch_size )
313- batched_data = batched_data .map (fetch_fn )
313+ batched_data = batched_data .map (fetch_fn , num_parallel_calls = pkg_constants . TF_NUM_THREADS )
314314 batched_data = batched_data .prefetch (1 )
315315
316316 def map_model (idx , data ) -> BasicModelGraph :
@@ -434,7 +434,7 @@ def __init__(
434434 training_data = data_indices .apply (tf .contrib .data .shuffle_and_repeat (buffer_size = 2 * batch_size ))
435435 # training_data = training_data.apply(tf.contrib.data.batch_and_drop_remainder(batch_size))
436436 training_data = training_data .batch (batch_size , drop_remainder = True )
437- training_data = training_data .map (fetch_fn )
437+ training_data = training_data .map (fetch_fn , num_parallel_calls = pkg_constants . TF_NUM_THREADS )
438438 training_data = training_data .prefetch (buffer_size )
439439
440440 iterator = training_data .make_one_shot_iterator ()
@@ -768,7 +768,7 @@ class TrainingStrategy(Enum):
768768 "stop_at_loss_change" : 0.05 ,
769769 "loss_window_size" : 10 ,
770770 "use_batching" : False ,
771- "optim_algo" : "GD " ,
771+ "optim_algo" : "ADAM " ,
772772 },
773773 ]
774774 EXACT = [
@@ -814,7 +814,7 @@ class TrainingStrategy(Enum):
814814 "stop_at_loss_change" : 0.25 ,
815815 "loss_window_size" : 10 ,
816816 "use_batching" : False ,
817- "optim_algo" : "GD " ,
817+ "optim_algo" : "ADAM " ,
818818 },
819819 ]
820820
@@ -837,6 +837,7 @@ def __init__(
837837 quick_scale = False ,
838838 model : EstimatorGraph = None ,
839839 extended_summary = False ,
840+ dtype = "float64" ,
840841 ):
841842 """
842843 Create a new Estimator
@@ -871,8 +872,6 @@ def __init__(
871872 :param extended_summary: Include detailed information in the summaries.
872873 Will drastically increase runtime of summary writer, use only for debugging.
873874 """
874- dtype = input_data .X .dtype
875-
876875 # validate design matrix:
877876 if np .linalg .matrix_rank (input_data .design_loc ) != np .linalg .matrix_rank (input_data .design_loc .T ):
878877 raise ValueError ("design_loc matrix is not full rank" )
@@ -920,9 +919,9 @@ def __init__(
920919
921920 logger .info ("Using closed-form MLE initialization for mean" )
922921 logger .debug ("RMSE of closed-form mean:\n %s" , a_prime [1 ])
923- logger .debug ("Should train mu:\t %s" , self ._train_mu )
922+ logger .info ("Should train mu: %s" , self ._train_mu )
924923 except np .linalg .LinAlgError :
925- pass
924+ logger . warning ( "Closed form initialization failed!" )
926925
927926 if isinstance (init_b , str ) and (init_b .lower () == "auto" or init_b .lower () == "closed_form" ):
928927 try :
@@ -951,9 +950,9 @@ def __init__(
951950
952951 logger .info ("Using closed-form MME initialization for dispersion" )
953952 logger .debug ("RMSE of closed-form dispersion:\n %s" , b_prime [1 ])
954- logger .debug ("Should train r:\t %s" , self ._train_r )
953+ logger .info ("Should train r: %s" , self ._train_r )
955954 except np .linalg .LinAlgError :
956- pass
955+ logger . warning ( "Closed form initialization failed!" )
957956
958957 if init_model is not None :
959958 if isinstance (init_a , str ) and (init_a .lower () == "auto" or init_a .lower () == "init_model" ):
@@ -992,33 +991,56 @@ def __init__(
992991
993992 # ### prepare fetch_fn:
994993 def fetch_fn (idx ):
995- X_tensor = tf .py_func (input_data .fetch_X , [idx ], dtype )
996- X_tensor .set_shape (
997- idx .get_shape ().as_list () + [input_data .num_features ]
994+ X_tensor = tf .py_func (
995+ func = input_data .fetch_X ,
996+ inp = [idx ],
997+ Tout = input_data .X .dtype ,
998+ stateful = False
998999 )
999-
1000- design_loc_tensor = tf .py_func (input_data .fetch_design_loc , [idx ], dtype )
1001- design_loc_tensor .set_shape (
1002- idx .get_shape ().as_list () + [input_data .num_design_loc_params ]
1000+ X_tensor .set_shape (idx .get_shape ().as_list () + [input_data .num_features ])
1001+ X_tensor = tf .cast (X_tensor , dtype = dtype )
1002+
1003+ design_loc_tensor = tf .py_func (
1004+ func = input_data .fetch_design_loc ,
1005+ inp = [idx ],
1006+ Tout = input_data .design_loc .dtype ,
1007+ stateful = False
10031008 )
1004- design_scale_tensor = tf .py_func (input_data .fetch_design_scale , [idx ], dtype )
1005- design_scale_tensor .set_shape (
1006- idx .get_shape ().as_list () + [input_data .num_design_scale_params ]
1009+ design_loc_tensor .set_shape (idx .get_shape ().as_list () + [input_data .num_design_loc_params ])
1010+ design_loc_tensor = tf .cast (design_loc_tensor , dtype = dtype )
1011+
1012+ design_scale_tensor = tf .py_func (
1013+ func = input_data .fetch_design_scale ,
1014+ inp = [idx ],
1015+ Tout = input_data .design_scale .dtype ,
1016+ stateful = False
10071017 )
1018+ design_scale_tensor .set_shape (idx .get_shape ().as_list () + [input_data .num_design_scale_params ])
1019+ design_scale_tensor = tf .cast (design_scale_tensor , dtype = dtype )
10081020
10091021 if input_data .size_factors is not None :
1010- size_factors_tensor = tf .log (tf .py_func (input_data .fetch_size_factors , [idx ], dtype ))
1022+ size_factors_tensor = tf .log (tf .py_func (
1023+ func = input_data .fetch_size_factors ,
1024+ inp = [idx ],
1025+ Tout = input_data .size_factors .dtype ,
1026+ stateful = False
1027+ ))
10111028 size_factors_tensor .set_shape (idx .get_shape ())
1029+ size_factors_tensor = tf .cast (size_factors_tensor , dtype = dtype )
10121030 else :
1013- size_factors_tensor = tf .constant (0 , shape = (), dtype = X_tensor . dtype )
1031+ size_factors_tensor = tf .constant (0 , shape = (), dtype = dtype )
10141032
10151033 # return idx, data
10161034 return idx , (X_tensor , design_loc_tensor , design_scale_tensor , size_factors_tensor )
10171035
10181036 if isinstance (init_a , str ):
10191037 init_a = None
1038+ else :
1039+ init_a = init_a .astype (dtype )
10201040 if isinstance (init_b , str ):
10211041 init_b = None
1042+ else :
1043+ init_b = init_b .astype (dtype )
10221044
10231045 with graph .as_default ():
10241046 # create model
0 commit comments