src/Denoise.jl

changeset 67
fe38c518e67e
parent 53
f8a3bc920f6a
equal deleted inserted replaced
66:a20429780845 67:fe38c518e67e
81 81
82 #################### 82 ####################
83 # Run the algorithm 83 # Run the algorithm
84 #################### 84 ####################
85 85
86 q = norm₂²(b-x)/2
87 cum = 0.0
88
86 v = iterate(params) do verbose :: Function 89 v = iterate(params) do verbose :: Function
87 ω = params.accel ? 1/√(1+2*γ*τ) : 1 90 ω = params.accel ? 1/√(1+2*γ*τ) : 1
88 91
89 ∇₂ᵀ!(Δx, y) # primal step: 92 ∇₂ᵀ!(Δx, y) # primal step:
90 @. x̄ = x # | save old x for over-relax 93 @. x̄ = x # | save old x for over-relax
95 proj_norm₂₁ball!(y, α) # | prox 98 proj_norm₂₁ball!(y, α) # | prox
96 99
97 if params.accel 100 if params.accel
98 τ, σ = τ*ω, σ/ω 101 τ, σ = τ*ω, σ/ω
99 end 102 end
100 103
104 qnew = norm₂²(b-x)/2
105 cum = qnew - q + dot(∇y, x) - dot(∇x, y)
106 q = qnew
107
101 ################################ 108 ################################
102 # Give function value if needed 109 # Give function value if needed
103 ################################ 110 ################################
104 v = verbose() do 111 v = verbose() do
105 ∇₂!(Δy, x) 112 #∇₂!(Δy, x)
106 value = norm₂²(b-x)/2 + params.α*γnorm₂₁(Δy, params.ρ) 113 #value = norm₂²(b-x)/2 + params.α*γnorm₂₁(Δy, params.ρ)
107 value, x 114 cum, x
108 end 115 end
109 116
110 v 117 v
111 end 118 end
112 119

mercurial