Example #1
0
# 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()
Example #2
0
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()
Example #3
0
# 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()