tf.losses.mean_squared_error(tf.real(muscat.tf_meas),
                                             tf.real(tf_fwd))
            )  # allow a global phase parameter to avoid unwrapping effects
            tf_fidelity_imag = tf.reduce_mean(
                tf.losses.mean_squared_error(tf.imag(muscat.tf_meas),
                                             tf.imag(tf_fwd))
            )  # allow a global phase parameter to avoid unwrapping effects
            tf_fidelity = tf_fidelity_real + tf_fidelity_imag
        else:
            print('-------> Losstype is L2')
            tf_fidelity_real = tf.reduce_mean(
                tf.losses.mean_squared_error(tf.abs(muscat.tf_meas),
                                             tf.abs(tf_fwd))
            )  # allow a global phase parameter to avoid unwrapping effects
            tf_fidelity_imag = tf.reduce_mean(
                tf.losses.mean_squared_error(tf_helper.angle(muscat.tf_meas),
                                             tf_helper.angle(tf_fwd))
            )  # allow a global phase parameter to avoid unwrapping effects
            tf_fidelity = tf_fidelity_real + tf_fidelity_imag

        tf_loss = tf_fidelity + tf_negsqrloss + tf_regloss

        #tf_optimizer = tf.train.AdamOptimizer(muscat.tf_learningrate)
        tf_optimizer = tf.train.MomentumOptimizer(1e1,
                                                  momentum=.9,
                                                  use_nesterov=True)
        if not is_estimatepsf:
            # ordinary case - we want to optimize for the object
            tf_lossop_obj = tf_optimizer.minimize(tf_loss,
                                                  var_list=[muscat.TF_obj])
            tf_lossop_obj_absorption = tf_optimizer.minimize(
Exemplo n.º 2
0
     tf_fidelity = tf.reduce_mean((tf.abs((muscat.tf_meas) - tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
 elif(0):
     print('-------> Losstype mixed L2 ')
     tf_fidelity = tf.reduce_mean(tf_helper.tf_abssqr(tf.real(muscat.tf_meas) - tf.real(tf_fwd))+tf_helper.tf_abssqr(tf.imag(muscat.tf_meas) - tf.imag(tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
 elif(1):
     print('-------> Losstype is L2')
     tf_fidelity = tf.reduce_mean(tf_helper.tf_abssqr(muscat.tf_meas - tf_fwd + tf_norm)) # allow a global phase parameter to avoid unwrapping effects
 elif(0):
     print('-------> Losstype is L2')
     tf_fidelity_real = tf.reduce_mean(tf.losses.mean_squared_error(tf.real(muscat.tf_meas), tf.real(tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
     tf_fidelity_imag = tf.reduce_mean(tf.losses.mean_squared_error(tf.imag(muscat.tf_meas), tf.imag(tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
     tf_fidelity = tf_fidelity_real + tf_fidelity_imag 
 else:
     print('-------> Losstype is L2')
     tf_fidelity_real = tf.reduce_mean(tf.losses.mean_squared_error(tf.abs(muscat.tf_meas), tf.abs(tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
     tf_fidelity_imag = tf.reduce_mean(tf.losses.mean_squared_error(tf_helper.angle(muscat.tf_meas), tf_helper.angle(tf_fwd))) # allow a global phase parameter to avoid unwrapping effects
     tf_fidelity = tf_fidelity_real + tf_fidelity_imag 
 
 tf_loss = tf_fidelity + tf_negsqrloss + tf_regloss
    
 #tf_optimizer = tf.train.AdamOptimizer(muscat.tf_learningrate)
 tf_optimizer = tf.train.MomentumOptimizer(1e1, momentum=.9, use_nesterov=True)
 if not is_estimatepsf:
     # ordinary case - we want to optimize for the object                
     tf_lossop_obj = tf_optimizer.minimize(tf_loss, var_list = [muscat.TF_obj])
     tf_lossop_obj_absorption = tf_optimizer.minimize(tf_loss, var_list = [muscat.TF_obj,muscat.TF_obj_absorption])
     tf_lossop = tf_optimizer.minimize(tf_loss, var_list = [muscat.TF_obj,muscat.TF_obj_absorption, muscat.TF_shiftIcX, muscat.TF_shiftIcY, muscat.TF_zernikefactors])
     tf_lossop_aberr = tf_optimizer.minimize(tf_loss, var_list = [muscat.TF_shiftIcX, muscat.TF_shiftIcY, muscat.TF_zernikefactors])
   
 else: