목록AI/Pytorch api (5)
Deep Learning study
torch.nn.functional.pad(input, pad, mode='constant', value=0) 내가 원하는대로 padding을 줄 수 있는 함수이다. pad 를 마지막 dim에만 줄 경우 (pad_left, pad_right) 모양으로 준다. pad 를 마지막 2개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom) 모양으로 준다. pad 를 마지막 3개의 dim에 줄 경우 (pad_left, pad_right, pad_top, pad_bottom, pad_front, pad_back) 모양으로 준다. 예제를 보면서 쉽게 생각해보자. >>> t4d = torch.empty(3, 3, 4, 2) #쉽게 이미지를 생각하자 (batch, channe..
view(*args) → Tensor view는 Tensor의 size를 바꾸어주는 역할을 한다 . 이건 다른것 보다는 예시를 보는게 이해가 빠를것 같다. y라는 tensor를 하나 준다. y를 y.size(1) * y.size(2) * y.size(0) 로 view한다. 결과는 아래와 같다. 마찬가지로 2*2*3 이였던 tensor를 3*4 tensor로 바꾸었다. 위의 y tensor를 4*3 tensor로 바꾸었다. view를 하는 방식은 tensor안에있는 값들을 차례대로 나열하여 다시 재배열 시키는 것 같다. 위의 y로 예를들면 1 1 2 2 3 3 4 4 5 5 6 6 을 4*3으로 만들려고 하면 1 1 2 / 2 3 3 / 4 4 5 / 5 6 6 이런식으로 자르는 것이다. 그리고 아직도 헷..
class torch.nn.Sequential(*args)[source] 편하게 순차적으로 실행하도록 담는 container라고 생각하면 될 것 같다. 내가 했던것을 예를들면 x = self.conv1(x) x = self.dropout(x) x = self.pool(F.relu(x)) x = self.conv2(x) ... 뭐 이런식으로 썼다. 하지만 위의 함수를 쓰면 model = nn.Sequential( nn.Conv2d(....), nn.ReLU(), nn.Conv2d(20,64,5), nn.RELU() ) 이므로 forward() 에서 x = self.model(x) 만 써주면 된다. 깔끔하고 편리한 함수인것 같다. 이걸 왜 지금 알았을까 원문보러가기
class torch.nn.Upsample(size=None, scale_factor=None, mode='nearest')[source] input은 minibatch * channels * depth * height * width 이다, 하지만 2D에서는 4D Tensor만 있으면 된다. Size와 scale_factor는 같이 사용하면 의미가 명확하지 않기 때문에, 같이사용하지 않는다. size(tuple, optional) : output사이즈를 직접 설정해 준다. (Depth, Height, Width) scale_factor(int, optional) : Depth, Height, Width에 입력받은 정수 만큼 곱해준다. (1,1,2,2) 가 인풋으로 들어오면 (1,1,4,4)가 된다. mo..
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) Conv2d의 parameters는 차례대로 in_channels, out_channels, kernel_size, stride, padding, diction , groups, bias 가 있다. 필수 요소로는 in_channels, out_channels,kernel_size 가있다. in_channels(int) : input image의 channel수 이다. rgb이미지라면 3이 되겠다. out_channels(int) : convolution에 의해서 생성된 channel의 수 이다. ke..