# Dampening parameter for landweber iterations = 100 omega = 1 / conv.opnorm() ** 2 # Display callback callback = solvers.CallbackApply(lambda result: plt.plot(conv(result))) # Test CGN plt.figure() plt.plot(phantom) solvers.conjugate_gradient_normal(conv, discr_space.zero(), phantom, iterations, callback) # Landweber plt.figure() plt.plot(phantom) solvers.landweber(conv, discr_space.zero(), phantom, iterations, omega, callback) # testTimingCG with Timer("Optimized CG"): solvers.conjugate_gradient_normal(conv, discr_space.zero(), phantom, iterations) # Landweber timing with Timer("Optimized LW"): solvers.landweber(conv, discr_space.zero(), phantom, iterations, omega) plt.show()
cont_kernel = cont_space.element(lambda x: np.exp(x / 2) * np.cos(x * 1.172)) cont_data = cont_space.element(lambda x: x ** 2 * np.sin(x) ** 2 * (x > 5)) # Discretization discr_space = odl.uniform_discr_fromspace(cont_space, 5000, impl="cuda") kernel = discr_space.element(cont_kernel) data = discr_space.element(cont_data) # Create operator conv = CudaConvolution(kernel) # Dampening parameter for landweber iterations = 100 omega = 1.0 / conv.opnorm() ** 2 # Display partial partial = solvers.util.ForEachPartial(lambda result: plt.plot(conv(result).asarray())) # Test CGN plt.figure() plt.plot(data) solvers.conjugate_gradient_normal(conv, discr_space.zero(), data, iterations, partial) # Landweber plt.figure() plt.plot(data) solvers.landweber(conv, discr_space.zero(), data, iterations, omega, partial) plt.show()
# Create operator conv = Convolution(kernel) # Dampening parameter for landweber iterations = 100 omega = 1 / conv.opnorm() ** 2 # Display partial partial = solvers.util.ForEachPartial(lambda result: plt.plot(conv(result))) # Test CGN plt.figure() plt.plot(phantom) solvers.conjugate_gradient_normal(conv, discr_space.zero(), phantom, iterations, partial) # Landweber plt.figure() plt.plot(phantom) solvers.landweber(conv, discr_space.zero(), phantom, iterations, omega, partial) # testTimingCG with Timer("Optimized CG"): solvers.conjugate_gradient_normal(conv, discr_space.zero(), phantom, iterations) # Landweber timing with Timer("Optimized LW"): solvers.landweber(conv, discr_space.zero(), phantom, iterations, omega) plt.show()