Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    I have to say that does sound appealing to me at the moment xD
    Also those early commits/PRs on Theano are so void of context that it seems difficult to understand the reasoning behind some of the features / changes
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    I think a lot of the code was written in isolation and later cobbled together
    and there wasn't much interest/effort toward cohesion
    you can see this all over the scan codebase
    one of those clone functions comes from that
    and started to be used all throughout the library
    I believe it created one of the bad dependency chains we had to fix early on
    that issue is very related to all of this
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    especially the excessive need to clone entire graphs and manually remap the cloned values
    we could/should separate the non-in-place replacement logic from FunctionGraph
    when that's implemented
    that would be an answer to a lot of clone-like use cases
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    Trying to see what you mean by non-inplace replacement.
    a = at.scalar('a')
    b = a + 1; b.name = 'b'
    c = b + 1; c.name = 'c'
    fg = FunctionGraph([a], [c], clone=False)
    fg.replace(b, at.sin(a))
    Would anything change in that toy example under the hood?
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    yeah, you've gotta test the bad and the good
    if only to set expectations
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    Totally unrelated this is interesting. They are suggesting there is no need for R_Ops at all: Theano/Theano#6400
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    yeah, I remember that one
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    This is the blogpost where they presented it: https://j-towns.github.io/2017/06/12/A-new-trick.html
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    it's a pretty natural idea, from what I recall
    try porting that PR to Aesara
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    I think they were blocked with special behavior of OpFromGraphs but I can try to open a draft and see what we get
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    that's easy enough to fix
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    Would it be too insane to add aliases for numpy constans (np.pi, np.inf, np.e...) in aesara.tensor?
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    to account for floatX?
    or to reduce the need to explicitly import numpy in some cases?
    either one is probably a reason enough
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    The second one. So that we can just write at.sqrt(x + at.pi) or at.switch(..., ..., at.inf)
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    ok
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    They only have a handful of constants, ignoring their own aliases: https://numpy.org/doc/stable/reference/constants.html
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    Next aesara-family library idea aevmap?
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    what does the vmap represent?
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    JAX's vmap behavior
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    what part of it?
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    Vectorization of "arbitrary" subgraphs. I have tried this in the past to vectorize a model logp, and the best I could come up with was OpFromGraph + Scan
    Which for a small model was no better than a Python list comprehension
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    this all depends on exactly what vectorization means in this context
    for instance, if it's more directly aligned with NumPy-like ufuncs, then that's already covered by Aesara's Composite Op
    Ricardo Vieira
    @ricardov94:matrix.org
    [m]
    That would be more in line with numpy.vectorize (although that one does nothing clever), I think?
    That's what Composite is more like right? Builds on top of scalar operators
    brandonwillard
    @brandonwillard:matrix.org
    [m]
    yeah, this is all very overlapping functionality
    same with Elemwise
    but, yes, there is no numpy.vectorize-like helper function in Aesara
    and I don't recall jax.vmap doing anything particularly special
    it seemed quite literally like a numpy.vectorize clone