Класс линейного оператора вызывает несуществующий метод PyTorchPython

Программы на Python
Ответить
Anonymous
 Класс линейного оператора вызывает несуществующий метод PyTorch

Сообщение Anonymous »

Я использую библиотеку Python для линейных операторов. Я создаю BlockDiagLinearOperator, чей base_linear_op является тензором (10000, 2, 2). Вызов его метода _diagonal() вызывает self.base_linear_op._diagonal(), но у PyTorch Tensors такого метода нет. Кажется, _diagonal() предполагает, что base_linear_op сам по себе является LinearOperator. Я считаю, что это недосмотр в реализации, или я недопонимаю. Любые разъяснения приветствуются!
Воспроизводимый фрагмент:
C = torch.randn(10000, 2, 2)
op = linear_operators.operators.BlockDiagLinearOperator(C)
op._diagonal()

Трассировка стека:
AttributeError Traceback (most recent call last) Cell In[51], line 1 ----> 3 op._diagonal()

File ~/venv/lib64/python3.13/site-packages/linear_operator/operators/_linear_operator.py:1419, in LinearOperator.diagonal(self, offset, dim1, dim2)
1417 elif not self.is_square:
1418 raise RuntimeError("LinearOperator#diagonal is only implemented for square operators.")
-> 1419 return self._diagonal()

File ~/venv/lib64/python3.13/site-packages/linear_operator/operators/block_diag_linear_operator.py:94, in BlockDiagLinearOperator._diagonal(self)
93 def _diagonal(self: Float[LinearOperator, "... M N"]) -> Float[torch.Tensor, "... N"]:
---> 94 res = self.base_linear_op._diagonal().contiguous()
95 return res.view(*self.batch_shape, self.size(-1))

AttributeError: 'Tensor' object has no attribute '_diagonal'


Подробнее здесь: https://stackoverflow.com/questions/798 ... rch-method
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»