else: tf_regloss = muscat.tf_lambda_reg * (tf_regloss_real) tf_regloss_tv, tf_my_tv_loss_map = reg.Reg_TV_RH( 1e3 * muscat.TF_obj, Eps=muscat.tf_eps ) #Alernatively tf_total_variation_regularization # total_variation tf_regloss += muscat.tf_lambda_reg * tf_regloss_tv if (is_absorption): tf_regloss += muscat.tf_lambda_reg * reg.Reg_TV_RH( muscat.TF_obj_absorption, Eps=muscat.tf_eps) elif (experiments.regularizer == 'GR'): # Goods roughness rgularizer print('We are using GR - Regularization') tf_regloss += muscat.tf_lambda_reg * reg.Reg_GR( muscat.TF_obj, muscat.tf_eps, muscat.tf_eps ) #, eps1=muscat.tf_eps, eps2=muscat.tf_eps) #Alernatively tf_total_variation_regularization # total_variation if is_absorption: tf_regloss += muscat.tf_lambda_reg * reg.Reg_GR( muscat.TF_obj_absorption, muscat.tf_eps, muscat.tf_eps) elif (experiments.regularizer == 'L1'): # L1 rgularizer print('We are using L1 - Regularization') tf_regloss += muscat.tf_lambda_reg * ( reg.Reg_L1(muscat.TF_obj) + reg.Reg_L1(muscat.TF_obj_absorption)) elif (experiments.regularizer == 'L2'): # L1 rgularizer print('We are using L2 - Regularization') tf_regloss = muscat.tf_lambda_reg * ( reg.Reg_L2(muscat.TF_obj) + reg.Reg_L2(muscat.TF_obj_absorption))
# tf_regloss += muscat.tf_lambda_reg*reg.Reg_TV(muscat.TF_obj, BetaVals = [muscat.myparams.dz,muscat.myparams.dx,muscat.myparams.dy], epsR=muscat.tf_eps, is_circ = True, is_xy=False) #Alernatively tf_total_variation_regularization # total_variation # if(is_absorption): # tf_regloss += muscat.tf_lambda_reg*reg.Reg_TV(muscat.TF_obj_absorption, BetaVals = [muscat.myparams.dz,muscat.myparams.dx,muscat.myparams.dy], epsR=muscat.tf_eps, is_circ = True, is_xy=False) #Alernatively tf_total_variation_regularization # total_variation tf_regloss += muscat.tf_lambda_reg * reg.Reg_TV_RH( muscat.TF_obj, Eps=muscat.tf_eps ) #Alernatively tf_total_variation_regularization # total_variation if (is_absorption): tf_regloss += muscat.tf_lambda_reg * reg.Reg_TV_RH( muscat.TF_obj_absorption, Eps=muscat.tf_eps) elif (experiments.regularizer == 'GR'): # Goods roughness rgularizer print('We are using GR - Regularization') tf_regloss += muscat.tf_lambda_reg * ( reg.Reg_GR(muscat.TF_obj) + reg.Reg_GR(muscat.TF_obj_absorption) ) #, eps1=muscat.tf_eps, eps2=muscat.tf_eps) #Alernatively tf_total_variation_regularization # total_variation elif (experiments.regularizer == 'L1'): # L1 rgularizer print('We are using L1 - Regularization') tf_regloss += muscat.tf_lambda_reg * (reg.Reg_L1( muscat.TF_obj) + reg.Reg_L1(muscat.TF_obj_absorption)) elif (experiments.regularizer == 'L2'): # L1 rgularizer print('We are using L2 - Regularization') tf_regloss = muscat.tf_lambda_reg * (reg.Reg_L2( muscat.TF_obj) + reg.Reg_L2(muscat.TF_obj_absorption)) if (0): tf_zernloss = experiments.lambda_zernike * reg.Reg_L2(
muscat.TF_obj, BetaVals=[muscat.dx, muscat.dy, muscat.dz], epsR=muscat.tf_eps, is_circ=True ) #Alernatively tf_total_variation_regularization # total_variation tf_tvloss += muscat.tf_lambda_tv * reg.Reg_TV( muscat.TF_obj_absorption, BetaVals=[muscat.dx, muscat.dy, muscat.dz], epsR=muscat.tf_eps, is_circ=True ) #Alernatively tf_total_variation_regularization # total_variation else: # Goods Roughness print('We are using GOODS ROUGHNESS - Regularization') tf_tvloss = muscat.tf_lambda_tv * reg.Reg_GR( muscat.TF_obj ) #Alernatively tf_total_variation_regularization # total_variation tf_tvloss += muscat.tf_lambda_tv * reg.Reg_GR(muscat.TF_obj_absorption) '''Negativity Constraint''' tf_negsqrloss = lambda_neg * reg.Reg_NegSqr(muscat.TF_obj) tf_negsqrloss += lambda_neg * reg.Reg_NegSqr(muscat.TF_obj_absorption) # Correc the fwd model - not good here! tf_fwd_corrected = tf_fwd / tf.cast( tf.abs(tf_global_abs), tf.complex64) * tf.exp( 1j * tf.cast(tf_global_phase, tf.complex64)) '''Define Loss-function''' if (0): print('-------> ATTENTION Losstype is L1') tf_fidelity = tf.reduce_mean( (tf.abs(muscat.tf_meas - tf_fwd_corrected)