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_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: