• sjudubya@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 days ago

    Nice suggestions, and I like your API. Using the context manager to look like loops is nifty.

    • dynomight@lemmy.worldOPM
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      2 days ago

      Thanks, the one problem with that is that you have to use dumpy.wrap if you ever create a function that uses loops and then you want to call it inside another loop. But I don’t see any way around that.

  • YetiBeets@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 days ago

    Along the same vein, could we just move entirely to Einstein summation? It seems like your solution is 90% there.

    I assume there is a good reason why you didn’t

    • dynomight@lemmy.worldOPM
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 days ago

      Well, Einstein summation is good, but it only does multiplication and sums. (Or, more generally, some scalar operation and some scalar reduction.) I want a notation that works for ANY type of operation, including non-scalar ones, and that’s what DumPy does. So I’d argue it moves further than Einstein summation.

  • m_f@discuss.online
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 days ago

    Great follow-up to “I don’t like NumPy”, it’s always better to show by example how things could be better. Minor nit, it would be nice if the different code samples at the end were displayed side-by-side somehow. Also wondering if the assert x.ndim == 1 in softmax_dumpy somehow meaningful? The other examples, including “DumPy (alternate)”, don’t have that check.

    • dynomight@lemmy.worldOPM
      link
      fedilink
      English
      arrow-up
      3
      ·
      3 days ago

      At one point, I actually had some (LLM-generated) boxes where you could click to switch between the different implementations for the same problem. But in the end I didn’t like how it looked, so I switched to simple expandy-boxes. Design is hard…

      There’s no magical significance to the assert x.ndim==1 check. I think I just wanted to demonstrate that the softmax code was “simple” and didn’t have to think about high dimensions. I think I’ll just remove that, thanks.