html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/3232#issuecomment-769656592,https://api.github.com/repos/pydata/xarray/issues/3232,769656592,MDEyOklzc3VlQ29tbWVudDc2OTY1NjU5Mg==,98330,2021-01-29T08:26:23Z,2021-01-29T08:26:23Z,NONE,"> I'm starting to suspect not because that would involve data_array being _both_ `DataArray` and a `Torch.Tensor` object. It seems what I'm in fact enabling is that `DataArray.data` is a `Torch.Tensor`.
`some_sum` is still a `DataArray`, which doesn't have a `backward` method. You could use
```
data_array = xr.DataArray(
xr_tsr,
coords=dict(a=[""a1"", ""a2"", ""a3""], b=[""b1"", ""b1""]),
dims=[""a"", ""b""],
name=""dummy"",
attrs={""grad"": xr_tsr.grad, ""backward"": xr_tsr.backward},
)
```
and your example should work (I assume you meant `.grad` not `.grid`).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-766669784,https://api.github.com/repos/pydata/xarray/issues/3232,766669784,MDEyOklzc3VlQ29tbWVudDc2NjY2OTc4NA==,98330,2021-01-25T09:12:51Z,2021-01-25T09:12:51Z,NONE,"> Does this mean I shouldn't fill out `__array_function__` in my subclass? Or is this just a forward looking expectation?
No, adding it should be perfectly fine. The dispatch mechanism itself isn't going anywhere, it's part of numpy and it works. Whether or not `torch.Tensor` itself has an `__array_function__` method isn't too relevant for your subclass.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-765906982,https://api.github.com/repos/pydata/xarray/issues/3232,765906982,MDEyOklzc3VlQ29tbWVudDc2NTkwNjk4Mg==,98330,2021-01-23T11:12:59Z,2021-01-23T11:12:59Z,NONE,"Note that your the main work in adding `__array_function__` is not the dispatch mechanism, but mapping to 100% compatible APIs. That job should have gotten a lot easier now compared to 9 months ago. PyTorch now has a completely matching `fft` module, and a ~70% complete `linalg` module in master. And functions in the main namespace have gained dtype keywords, integer-to-float promotion, and other NumPy compat changes. So it should be feasible to write your custom subclass.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-765905229,https://api.github.com/repos/pydata/xarray/issues/3232,765905229,MDEyOklzc3VlQ29tbWVudDc2NTkwNTIyOQ==,98330,2021-01-23T10:57:48Z,2021-01-23T11:09:52Z,NONE,"> Create a custom subclass of PyTorch's Tensors which meets the [duck array](http://xarray.pydata.org/en/latest/internals.html) required methods and attributes. Since this isn't officially supported, looks like I could run into issues getting this subclass to persist through tensor operations.
If you use PyTorch 1.7.1 or later, then Tensor subclasses are much better preserved through pytorch functions and operations like slicing. So a custom subclass, adding the attributes and methods Xarray requires for a duck array should be feasible.
> `data = as_compatible_data(data)`
Looks like you need to patch that internally just a bit, probably adding pytorch to `NON_NUMPY_SUPPORTED_ARRAY_TYPES`.
Note that I do not expect anymore that we'll be adding `__array_function__` to `torch.Tensor`, and certainly not any time soon. My current expectation is that the ""get the correct namespace from an array/tensor object directly"" from https://numpy.org/neps/nep-0037-array-module.html#how-to-use-get-array-module and https://data-apis.github.io/array-api/latest/ will turn out to be a much better design long-term.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-523101805,https://api.github.com/repos/pydata/xarray/issues/3232,523101805,MDEyOklzc3VlQ29tbWVudDUyMzEwMTgwNQ==,98330,2019-08-20T16:53:40Z,2019-08-20T16:53:40Z,NONE,"> This is a definite downside of reusing NumPy's existing namespace.
We didn't discuss an alternative very explicitly I think, but at least we'll have wide adoption fast. Hopefully the pain is limited ....","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-522824647,https://api.github.com/repos/pydata/xarray/issues/3232,522824647,MDEyOklzc3VlQ29tbWVudDUyMjgyNDY0Nw==,98330,2019-08-20T02:18:59Z,2019-08-20T02:18:59Z,NONE,"> Personally, I think the most viable way to achieve seamless integration with deep learning libraries would be to support integration with JAX, which already implements NumPy's API almost exactly.
Less familiar with that, but pytorch does have experimental XLA support, so that's a start. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307
https://github.com/pydata/xarray/issues/3232#issuecomment-522824210,https://api.github.com/repos/pydata/xarray/issues/3232,522824210,MDEyOklzc3VlQ29tbWVudDUyMjgyNDIxMA==,98330,2019-08-20T02:16:32Z,2019-08-20T02:16:32Z,NONE,"> I think there has been some discussion about this, but I don't know the current status (CC @rgommers).
The PyTorch team is definitely receptive to the idea of adding `__array_function__` and `__array_ufunc__`, as well as expanding the API for better NumPy compatibility.
Also, they want a `Tensor.__torch_function__` styled after `__array_function__` so they can make their own API overridable.
The tracking issue for all of this is https://github.com/pytorch/pytorch/issues/22402
> The biggest challenge for pytorch would be defining the translation layer that implements NumPy's API.
Agreed. No one is working on `__array_function__` at the moment. Implementing it has some backwards compat concerns as well, because people may be relying on `np.somefunc(some_torch_tensor)` to be coerced to `ndarray`. It's not a small project, but implementing a prototype with a few function in the `torch` namespace that are not exactly matching the NumPy API would be a useful way to start pushing this forward.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,482543307