unsqueeze(dim)とunsqueeze_(dim)の違いは?
unsqueeze(dim)とunsqueeze_(dim)の違い【PyTorch】
私は以前まで、PyTorchのunsqueeze(dim)とunsqueeze_(dim)の違いを知らずに使用していました。
この記事では2つの違いをまとめていきます。
目次
公式ドキュメンテーションによると...
以下で引用している公式ドキュメンテーションによると、unsqueeze_(dim)はunsqueeze(dim)の「in-place」バージョンだそうです。
▶PyTorch documentation: torch.Tensor
unsqueeze(dim)
Returns a new tensor with a dimension of size one inserted at the specified position.
unsqueeze_(dim)
In-place version of unsqueeze()
in-placeとは
元のテンソルを書き換える処理のことです。
テスト
unsqueeze(dim)のテスト
>>> import torch >>> x.size() torch.Size([2, 3]) >>> x.unsqueeze(0).size() torch.Size([1, 2, 3]) >>> x.size() torch.Size([2, 3])
unsqueeze_(dim)のテスト
>>> import torch >>> x.size() torch.Size([2, 3]) >>> x.unsqueeze_(0).size() torch.Size([1, 2, 3]) >>> x.size() torch.Size([1, 2, 3])
まとめ
- unsqueeze(dim):元のテンソルを書き換えずに、次元を増やしたテンソルを返す
- unsqueeze_(dim):元のテンソルを書き換えて、テンソルの次元を増やす
さいごに
PyTorchのunsqueeze(dim)とunsqueeze_(dim)の違いをまとめてみました。参考になれば幸いです。
以上です。
Ad.
コメント