① torch.add는 말 그대로 더하라는 메서드입니다. 또한, 단순히 torch.add가 아닌 torch.add_가 사용되고 있는데 이 둘 간의 차이는 다음과 같습니다.
x = torch.tensor([1, 2]) y = x.add(10) ------ torch.add 적용 print(y) print(x is y) print('------------') y = x.add_(10) ------ torch.add_ 적용 print(y) print(x is y)
다음과 같이 torch.add와 torch.add_의 결과는 같지만, x가 y와 같은지(x is y) 물었을 때는 다른 값을 출력합니다.
tensor([11, 12]) False ------------ tensor([11, 12]) True
즉, torch.add의 결과는 새로운 메모리 공간이 할당되어 저장되기 때문에 x와 y가 같은지 물었을 때 False라는 결과를 출력한 반면, torch.add_는 새로운 공간 할당 없이 기존의 메모리에 위치한 값을 대체합니다. 참고로 메서드에 _ 표시가 있다면(예 torch.clamp_()) 기존의 메모리 공간에 있는 값을 새로운 값으로 대체하겠다는 의미로 받아들이면 됩니다.