def plotcur(logim_step): global nit nit += 1 #print "iteration %d" % nit #refresh_interval = 100 if nit%10 == 0: print "iteration %d" % nit Frames = np.exp(logim_step.reshape((-1, N_pixel, N_pixel))) chi2 = np.sum(mx.chisq(Frames[i].ravel(), A_List[i], vis_List[i], sigma_List[i]) for i in range(N_frame))/N_frame s = np.sum(-mx.ssimple(Frames[i].ravel(), nprior_List[i]) for i in range(N_frame)) s_dynamic = dynamic_regularizer(Frames, gauss) print "chi2: %f" % chi2 print "s: %f" % s print "s_dynamic: %f" % s_dynamic #plot_i(Frames[0], Prior_List[0], nit, chi2, ipynb=ipynb) if nit%refresh_interval == 0: plot_i_dynamic(Frames, Prior_List[0], nit, chi2, s, s_dynamic, ipynb=ipynb) if 1==0: numeric_gradient = objgrad_numeric(logim_step) analytic_gradient = objgrad(logim_step) print "Numeric Gradient:" print numeric_gradient print "Analytic Gradient:" print analytic_gradient print "Max Fractional Difference in gradients:" print max(abs((numeric_gradient - analytic_gradient)/numeric_gradient))
def objfunc(logim): Frames = np.exp(logim.reshape((-1, N_pixel, N_pixel))) if entropy == "simple": s = np.sum(-mx.ssimple(Frames[i].ravel(), nprior_List[i]) for i in range(N_frame)) elif entropy == "l1": s = np.sum(-mx.sl1(Frames[i].ravel(), nprior_List[i]) for i in range(N_frame)) elif entropy == "gs": s = np.sum(-mx.sgs(Frames[i].ravel(), nprior_List[i]) for i in range(N_frame)) elif entropy == "tv": s = np.sum(-mx.stv(Frames[i].ravel(), Prior_List[0].xdim, Prior_List[0].ydim) for i in range(N_frame)) chisq_total = np.sum(mx.chisq(Frames[i].ravel(), A_List[i], vis_List[i], sigma_List[i]) for i in range(N_frame))/N_frame #print ("chisq_total ",chisq_total) s_dynamic = dynamic_regularizer(Frames, gauss) #print ("s_dynamic ",s_dynamic) #return s_dynamic return s + beta * s_dynamic + alpha * (chisq_total - 1.)