Git Product home page Git Product logo

Comments (1)

mfalt avatar mfalt commented on August 17, 2024

I think this is a very interesting idea, but I think we have to think it through really carefully. I think there are a couple of trade-offs regarding how much data should be saved to be efficient on multiple calls versus being efficient on a single call.
Do you think this should be the output even for prox!? This could potentially lead to a lot of extra allocations, for example in

for i = 1:100000
   prox!(y,f,x)
   x = 0.5*x .+ 0.5*y
end

we would allocate one point::AbstractArray in every call. Unless we let this element refer to the vector y, in which case the user might inadvertently change the elements inside the ProximalPoint. (Immutable only means that it will reference the same array, the elements in the array might still change).

As a side-note: We should probably not let the definition be

immutable ProximalPoint <: AbstractArray
  f::ProximableFunction
  point::AbstractArray
  value::Real
end

but rather

immutable ProximalPoint{F<:ProximableFunction, P<:AbstractArray, V<:Real}
  f::F
  point::P
  value::V
end

I created a related issue #23 for the existing problems of this type.

from proximaloperators.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.