PyTorch에서view의 사용법 설명 기반
내 이해는:
원래tensor의 데이터를 줄 우선순위에 따라 1차원 데이터로 배열하고 (여기는 주소가 연속적으로 저장되어야 하기 때문일 것이다) 매개 변수에 따라 다른 차원의tensor로 조합한다.
예를 들어 네가 원래의 데이터가 [[1,2,3], [4,5,6]이든 [1,2,3,4,5,6]이든 1차원 벡터로 배열된 것은 모두 6개의 원소이기 때문에view 뒤의 매개 변수가 일치하면 얻은 결과는 모두 같다.
예를 들면,
a=torch.Tensor([[[1,2,3],[4,5,6]]])
b=torch.Tensor([1,2,3,4,5,6])
print(a.view(1,6))
print(b.view(1,6))
얻은 결과는 모두
tensor([[1., 2., 3., 4., 5., 6.]])
다시 한 번 예를 들자.
a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.view(3,2))
획득:
tensor([[1., 2.],
[3., 4.],
[5., 6.]])
1, 2, 3, 4, 5, 6 순서의 수조로 필요한 모양을 채우는 셈이다.하지만 다음과 같은 결과를 얻으려면 다음과 같이 하십시오.
tensor([[1., 4.],
[2., 5.],
[3., 6.]])
다른 함수를 사용해야 합니다:permute ().내 또 다른 블로그를 참조하십시오:PyTorch에서 permute 사용법 또한 매개변수는 비워둘 수 없습니다.매개 변수 중의 -1은 이 위치를 다른 위치의 숫자로 추정하는 것을 대표한다. 다른 뜻을 가지지 않는 상황에서view 매개 변수는 추정할 수 있다. 즉, 사람이 모양을 추정할 수 있는 상황에서view 함수도 추정할 수 있다.
예를 들어 atensor의 데이터 개수는 6개이고view(1,-1)이면 우리는tensor의 원소 개수에 따라 -1이 6을 대표한다고 추정할 수 있다.
만약view(-1,-1,2)라면 사람은 어떻게 추정해야 할지 모르고 기계도 모른다.
또 다른 상황은 사람이 추정할 수 있지만 기계가 추정할 수 없는 경우:view(-1,-1,6), 사람이 알 수 있는 -1은 모두 1을 대표하지만 기계는 두 개의 마이너스 1을 동시에 허용하지 않는다.
만약 -1이 없다면, 모든 매개 변수의 곱셈은tensor의 원소의 총 개수와 일치해야 한다. 그렇지 않으면 오류가 발생할 것이다.
추가:pytorch에서 x.view () 와permute 사용
pytorch에서 x.view() 사용법
pytorch에서 x.view () 를 자주 볼 수 있습니다. 이것은 Tensor의 차원을view가 지정한 차원으로 바꾸는 것을 나타냅니다. 이것은 resize 함수와 유사합니다.
b=torch.Tensor([[[[1,2,3],[4,5,6],[7,8,9]],[[1,2,3],[4,5,6],[7,8,9]]]])
print(b.size())
(1, 2, 3, 3)
print(b.view(b.size(0),-1))
tensor([[1., 2., 3., 4., 5., 6., 7., 8., 9., 1., 2., 3., 4., 5., 6., 7., 8., 9.]])
print(b.view(b.size(0),-1).size())
(1, 18)
b.size(0)는 b중 0차원==1,-1은 원 데이터에 따라 자동으로 분배되는 열수를 나타낸다.
a=torch.Tensor([[[1,2,3],[4,5,6]]])
print(a.size())
(1, 2, 3)
print(a.view(6,-1))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(6,-1).size())
(6, 1)
a를 6행 1열로 변환
print(a.view(-1,6).size())
(1, 6)
또는 a를 1행 6열로 변환프로그램에서view 함수 뒤에permute () 함수를 따라가는 것을 자주 볼 수 있습니다. 이 함수는 차원 변환을 하는 것입니다
print(a.view(-1,6).permute(1,0))
tensor([[1.],
[2.],
[3.],
[4.],
[5.],
[6.]])
print(a.view(-1,6).permute(1,0).size())
(6, 1)
퍼뮤트를 넣으면 a는 (1,6)에서 (6,1)로 변한다.이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IceVision에서 형식별 데이터를 읽는 방법2021년에 가장 멋있는 물체 검출 프레임워크라고 해도 과언이 아닌 IceVision을 사용해, VOC format과 COCO format의 데이터 세트에 대해 Object Detection을 간단하게 실시하기 위한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.