월 14,740원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
파이토치책 코드오류 질문
안녕하세요 항상 좋은 강의 감사드립니다. 출간하신 파이토치 책과 함께 학습 중에 오류가 있어서 질문드립니다. 강의와 다르게 책에는 CIFAR10 이미지에 맞도록 model.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1) 코드를 넣어주신 것 같은데, 이후에 나와있는model.load_state_dict(torch.load("/models/cifar10_resnet18.pth")) 코드를 구동하였을 때, RuntimeError: Error(s) in loading state_dict for ResNet: Missing key(s) in state_dict: "conv1.bias". size mismatch for conv1.weight: copying a param with shape torch.Size([64, 3, 7, 7]) from checkpoint, the shape in current model is torch.Size([64, 3, 3, 3]). 이러한 오류가 발생합니다. 보기에는 로드한 모델 파라미터가 7x7의 Conv1 커널 사이즈에 맞춰저있는 것 같은데 맞는지 궁금합니다. 또한 Conv1 선언시 bias=False 도 같이 넣어줘야 하는 것인지 궁금합니다. 우선은 오류로 인해 model.conv1 선언 없이 강의 코드대로 했을 경우에는 정상적으로 작동하였습니다. 또한 추가 질문으로, 학습된 모델에 대해서 model.fc 를 항등함수로 바꾸어 주기에 model.fc = nn.Linear(num_ftrs, 10) 코드는 사실상 사용안하여도 되는 것처럼 보이는데 맞는지 궁금합니다!!!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
np.uint8((data[0][0]/2 + 0.5) * 255) 관련 질문
np.uint8((data[0][0]/2 + 0.5) * 255) 관련하여 궁금증이 있어 다른 수강생분들의 질문을 보았지만 이해가 되지 않는 부분이 있어 질문 드립니다. "데이터가 전처리 z=(x-m)/sigma를 통해 이미 normalize된 상태입니다. 따라서 원본 이미지로 복구하기 위해 역산 x=sigma*z+m을 이용한 것입니다." 라고 다른 질문에 답을 주셨는데, 해당 강의에서는 transform.Normalize 전처리 없이 transform.ToTensor 만을 적용해 이미지 값을 0~255에서 0~1로 바꿔주었으니 z=(x-min)/(max-min) 에서 역산을 하여 x를 구해줘야 하는게 아닌가 생각됩니다. 만약 전처리 과정에서 transform.ToTensor 이후 transform.Normalize을 적용해주었다면 강사님께서 해주신 답변이 이해가 되는데 그렇지 않아 헷갈리네요ㅠㅠ
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
파이토치 책 내용 중 ResNet 구현 관련 질문 있습니다.
출간하신 파이토치 책 내에서 ResNet 부분을 구현해보면서 Residual Block 구축 부분에서 궁금한점이 생겨 질문 드립니다. class ResidualBlock(nn.Module): def __init__(self, in_channels, out_channels, stride=1): super(ResidualBlock, self).__init__() self.in_channels = in_channels self.out_channels = out_channels self.stride = stride self.conv_block = nn.Sequential( nn.Conv2d(self.in_channels, self.out_channels, kernel_size=3, stride=stride, padding=1, bias=False), nn.BatchNorm2d(self.out_channels), nn.ReLU(), nn.Conv2d(self.out_channels, self.out_channels, kernel_size=3, stride=1, padding=1, bias=False), nn.BatchNorm2d(self.out_channels) ) if self.stride != 1 or self.in_channels != self.out_channels : self.downsample = nn.Sequential( nn.Conv2d(self.in_channels, self.out_channels, kernel_size=1, stride=stride, bias=False), nn.BatchNorm2d(self.out_channels) ) def forward(self, x): out = self.conv_block(x) if self.stride != 1 or self.in_channels != self.out_channels : x = self.downsample(x) out = F.relu(x + out) return out 다음 코드에서 forward 부분에 다음과 같은 조건문이 있으니, (if self.stride != 1 or self.in_channels != self.out_channels :) __init__ 에 있는 동일한 조건문은 따로 필요 없이 바로 self.downsample 을 선언해주면 되는게 아닌가 궁금증이 생겼는데, 해당 조건문을 해당 부분에도 사용하신 이유가 무엇인지 알고싶습니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
가중 손실 함수 질문있습니다.
가중 손실 함수(Weighted Loss Function)에서는 가중치를 클래스별 데이터 갯수를 파악하여서 데이터 각각의 가중치가 아닌, 클래스별 가중치를 구하여 입력값으로 넣어줘야 하는건가요?? 아니면 가중 랜덤 샘플링(Weighted Random Sampling)에서 함수로 가중치 구한 것처럼, 각 데이터별 가중치를 계산해서 사용하는것은 안되나요??
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
활성화함수 inplace=True 관련 질문있습니다.
안녕하세요. 출간하신 Pytorch 입문 책과 함께 공부 중에 GAN 파트에서 질문이 있습니다. 영상에서와 다르게 책에서는 활성화함수층에 일부는 inplace=True 를 설정하여 주셨는데, 그 이유가 무엇인지 잘 이해가 잘 안가고 헷갈리네요.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
transf 관련해서 질문이 있습니다!
선생님 안녕하세요, transf = tr.Compose([tr.RandomCrop(32, padding = 4), tr.RandomHorizontalFlip(), tr.ToTensor(), tr.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010))]) 위의 코드와 관련하여 질문이 있습니다. 만약 trainmode가 train으로 설정되어 있다면, 위의 transform으로 데이터 전처리를 해주는데, tr.RandomCrop(32, padding = 4)의 의도가 궁금합니다. 테스트용 이미지에 우선 zero padding을 4개씩 이미지 가장자리에 둘러주고 그런 다음에 32x32의 이미지로 잘라낸다는 의미인가요? 감사합니다! 그리고 기본적인 질문인데요, train시에 들어가는 이미지의 size와 validation & test시에 들어가는 이미지의 size는 동일해야 되는것이 맞죠? 좋은 주말 되시길 바랍니다!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
질문 드립니다!
강의에서 features에 512개의 Average Pooling 값이 들어간다고 말씀해 주셨는데 왜 이게 features의 차원이 512개인지 궁금합니다! (Batch_Size, # of Filter, H, W) 이렇게 4차원의 데이터가 들어오는게 아닌가요??
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
전처리 관련 질문
강사님 안녕하세요, 이미 작성된 질문글을 보고도 잘 이해가 안되서 이렇게 다시 질문 드리게 되었습니다! " 데이터가 전처리 z=(x-m)/sigma를 통해 이미 normalize된 상태입니다. 따라서 원본 이미지로 복구하기 위해 역산 x=sigma*z+m을 이용한 것입니다. " 이전 질문글에서 위와 같은 답변을 주셨는데요, data[0][0]에 입력으로 들어온 이미지의 픽셀값이 들어있다고 할 때, 이를 원본 이미지로 복원시켜주기 위해 위의 공식을 적용할 경우, sigma = 0.5 그리고 mean = 0.5여야만 공식이 성립하게 됩니다. 해당 dataset을 정규화 하는 과정이 코드에서 Transform의 .toTensor()밖에 보이지 않는데 해당 함수가 값의 범위를 [0, 1]로 다시 바꿔준다는 부분은 알고 있습니다. 혹시 toTensor()함수에서 이미지 전처리를 진행할 때 평균 = 0.5, 표준편차 = 0.5 인 상태에서 픽셀값을 [0, 1] 사이즈로 정규화 시켜주는 건가요? 미리 감사합니다!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Dataset 상속의 의미
강사님 항상 친절하고 자세한 설명 감사드립니다!! 강의를 듣다가 질문이 생겨서 질문 드립니다. 제가 궁금한 것은 저희가 Custom으로 Dataset을 상속해서 def __init__, def __getitem__, def __len__ 이렇게 3개의 함수를 정의해주는 의미가 기존 Dataset에 짜여져 있는 코드에 오버라이딩하는 것일까요???
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
잠재변수 선정과 관련하여 질문있습니다.
예시에서는 잠재변수를 128개로 잡으셨는데 GAN을 사용하면서 잠재변수 개수를 선정하기 위한 고려사항이 특별히 있을까요?? 또한 잠재변수를 많이 설정할수록 Generator가 더 뛰어난 결과물을 만들어 낼 수 있는 것인가요??
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Normalization? 관련 질문 드립니다.
안녕하세요 강사님. 강의 잘 듣고 있습니다. cam 함수에서 " 원본 이미지의 데이터가 0~255로 이루어져 있어서 255를 곱한다고 하셨는데, 이 부분이 이해가 안 갑니다. 각 픽셀 값이 0~255로 이루어져있는 것은 알고 있는데 여기서 ((data[0][0] / 2 + 0.5) * 255)가 이해가 안 갑니다. 예를 들어 원본 이미지의 한 픽셀값이 200이라고 가정해봤을 때, (200 / 2 + 0.5) * 255 = 25,627.5가 나오는 데,,,,, 강사님의 설명을 부탁드립니다!!!!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
코드 질문입니다.
안녕하세요 강사님. Test 모드에서 테스트하고 나온 예측값과 실제값을 numpy로 변경하는 이유가 궁금합니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
torchvision 전처리 관련 질문있습니다.
torchvision 전처리 예시에서 넘파이 배열에 tr.Compose로 tr.ToPILImage 적용 후 tr.ToTensor를 적용해주는데, 그렇다면 inputs = torch.FloatTensor(inputs) inputs = inputs.permute(2,0,1) labels = torch.FloatTensor(labels) 해당 코드를 안써도 무방한거 아닌가요?? 헷갈리네요ㅠㅠ
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
self.함수() 관련 질문 드립니다.
안녕하세요 강사님 강의 잘 듣고 있습니다.ㅎㅎ 강의를 듣던 중 질문이 생겨서 글을 작성합니다. 1. 여기서 제가 언급한 self.minmax()가 작동이 되는 근거는 위의 minmax함수의 return이 self라서 가능한 건가요?? 2. 여기서 solver 함수를 실행했을 때 self.minmax()의 결과가 minmax()함수의 return 값이 self랑 return 값이 self.data인 것들이 동일한 데 그 이유가 궁금합니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 타입에 관련된 질문입니다.
안녕하세요 호형님의 강의를 기본베이스로 듣고, 인터넷에서 이것저것 보면서 1D CNN을 제가 가진 데이터셋 분류에 적용하고있는 학생입니다. CustomDataSet을 만들고 DataLoader구현 후, 훈련과 검증, 테스트를 거치는 코드를 작성하였는데요. 훈련과 검증단계에서는 문제없이 진행되나 다른 섹션을 만들어 테스트코드를 돌리는중 type에러가 발생하였습니다. 왜 같은 dataset과 dataloader인데 test셋에서만 이런 문제가 나타나는건지 알고싶습니다. # 강의질문이 아니라 문제가 된다면 지우겠습니다ㅠㅠ
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
미분 계산이 이해가 안됩니다
x를 torch.ones(2, requires_grad=True) 로 계산했는데, 원래 예상한 값은 z' = x+1이므로 x.grad = tensor([2,2]) 인줄 알았는데, 아래와 같이 x =tensor([1., 1.], requires_grad=True) x.grad = tensor([4., 4.]) [4,4]가 나왔는데, 왜 이렇게 계산이 된건가요?
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
[코드 질문] 10-1강 오토인코더 질문드립니다!
안녕하세요. 호영님! 코드 관련 질문드립니다. 10.4 시각화 함수 만들기 부분의 코드입니다. plt.imshow(img.2) #1채널인 경우 2로 변환 위의 원본이미지를 보여주는 코드가 없는 문법으로 나옵니다. 왜 그런걸까요? 또한, 1채널인 경우 2로 변환한다는건 어떤 의미일까요?? 우선 위 코드 바로 아래에있는 cv를 활용한 코드로 변경하여 사용하면 문제 없이 모델의 학습과 시각화가 가능합니다. 다음으로는 생성 이미지를 보여주는 코드에서 plt.imshow(img.squeeze()) 이미지를 보여줄때 어떤 이유에서 squeeze를 활용해서 차원을 변환하는 걸까요? 괜찮으시다면 확인후 답변 부탁드리겠습니다. 마지막으로, 제가 온라인 e-book으로 코딩관련된 책들은 구매하는걸 선호하는데, 언제쯤 이번에 출간하신 책이 e-book으로 발매될까요? 계속 확인하고 있는데 아직 발매되지 않은것 같습니다. 감사합니다!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
[코드 오류 질문] 7.모델 프리징 코드 관련 질문입니다.
안녕하세요. 호영님! 7. 모델 프리징을 공부하던중 오류가 생겨서 질문드립니다. 프리징된 사전학습 모델을 이용한 학습 부분에서 아래와 같이 중간 단계에 차원 오류가 발생합니다. 어떻게 해결해야할지 어렵습니다. 확인해보시고 답변해주실 수 있으실까요? 감사합니다!
- 해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
재현가능한 실험에 대한 질문입니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요 안녕하세요, 강의 재미있게 듣고 있습니다. 최근에는 출간된 딥호형님의 책도 구매 예정이에요~ 다름이 아니라, cifar10 터미널 실행 코드에 관한 문의입니다. 해당 코드가 train과 eval시의 test score가 다르게 나와서 https://daebaq27.tistory.com/72 블로그를 참조하여 seed를 고정시키는 func을 main,py의 시작에 실행시키도록 수정했어요 이 이후로는 test score의 경우는 재현이 되는데 training 후 마지막에 나오는 train score과 evaluation 후 마지막에 나오는 train score가 재현이 불가능해서요. 혹시 원인과 솔루션 알 수 있을까요?
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불균형 문제 질문
안녕하세요! 데이터 불균형 파트에서 1. weighted random sampling 사용해서 dataloader 이용해서 구현하는 중 질문이 생겨 올립니다. ex) -개 이미지 800개 -고양이 이미지 200개 데이터셋을 단순히 배치사이즈를 10으로 하였을때, 평균적으로 개 이미지 8개, 고양이 이미지2개가 들어가게 됩니다. 이를 위의 sampler 방식을 사용하게 되면 배치 내에 평균 5개씩 이미지가 들어가게 되었는데요 의문점은 1) 실제 개 이미지 중 300개는 아예 쓰지 못하게 되고, 고양이 이미지는 중복으로 더 들어가게 되는 상황이 되더라구요. 이러면 사용하지 못하는 이미지가 생기게 되는데, 사용하지 못하는 이미지를 활용할 수 있는 방법은 없는지요? 2) 위의 문제를 해결하기 위해 data_augmentation을 보조수단으로 써서 불균형 차이를 줄이는 것도 방법이 되는것인가요?