Это потому, что expand()
только создает новый взгляд на существующий тензор, поэтому он не выделяет всю память, необходимую для получения всех элементов из операции mu * foo
, которая имеет больше элементов, чем исходный тензор foo
. Вы можете исправить это, используя expand().clone()
или repeat()
, что даст вам полный тензор.
foo = torch.eye(5).expand(5, 5, 5).clone() # clone gives the full tensor
foo.copy_(mu * foo) # ok!
albanD предполагает, что выполнение expand().clone()
все еще может быть быстрее, чем repeat()
.
См. здесь и здесь для получения более подробной информации о expand()
и repeat()
.