Xiang Gao <qasdfgtyu...@gmail.com> added the comment:

Hi Eric,

Thanks for your valuable information and fast reply. You understand the problem 
exactly correct: initially pytorch had codes like `isinstance(x, tuple)` and 
lots of `PyTuple_Check`, but when we start to change the return type from tuple 
to structseq, these checks starts to fail.

Yes, I agree generally the impact is small for this issue. Most users of 
PyTorch would just use the way like `values, indices = a.max(dim=0)`, which 
works perfectly before or after that PR. The impacts are probably mostly on 
libraries that use PyTorch as dependency. These libraries might have generic 
code that should be able to handle returns of most operators, for example, 
something like:

User code:
```
import torch
import a_deep_learning_library

class MyModel(torch.nn.Module):
    ......
    def forward(self, input_):
        ......
        return tensor.sum(dim=0)

model = MyModel()
a_deep_learning_library.do_something(model)
```

Code of a_deep_learning_library:
```
def do_something(model):
    input_ = prepare_input()
    output = model(input_)
    if torch.is_tensor(output):
        do_something_1(output)
    elif isinstance(output, float):
        do_something_2(output)
    elif isinstance(output, tuple):
        sum_ = sum(output)
        do_something_3(sum_)
    elif ....
```

Unpacking does not always work because it is hard to differentiate these two 
cases: `a, b = torch.tensor([1, 2])` and `a, b = torch.tensor([1, 2]), 
torch.tensor([3, 4])`, but your suggestion is very valuable.

I am neither a member of PyTorch team nor a Facebook employee. I am just a 
community contributor working on that issue. I will open an issue on PyTorch 
discussing the problem.

Thanks!

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35914>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to