월 14,740원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Validation Dataset의 Shuffle 관련 질문
안녕하세요. 강의 통해 항상 도움 받고 있습니다.다름이 아니라 현재 진행중인 프로젝트에서 모델을 학습하며 Validation 데이터셋에 대한 성능을 확인하는데, Validation 데이터셋의 shuffle을 했을 때와 안했을 때 성능에 유의미한 차이가 발생합니다.무엇이 이유이며 Validation 및 Test Dataset은 항상 Shuffle=False로 설정해주어야 하는지 궁금합니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
학습자료 다운로드 ipynb파일이 없음
코드파일을 다운받았는데 ipynb파일이 없습니다. 폴더는 있고 강의하시는 자료가 없습니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
register_forward_hook을 활용한 피쳐맵 추출에서 문제가 발생합니다ㅠㅠ
안녕하세요. 현재 코랩환경에서 파이토치 제공 Mask-RCNN을 활용하고 있습니다. 강의에서 알려주신 Hook를 활용하여 중간 레이어의 피쳐맵을 추출하고자 진행하던 과정에서 문제가 발생하여 질문드립니다ㅠㅠ모델은 제가 가진 데이터셋에 맞춰 출력층을 바꾸어준 후에 학습을 완료한 상태입니다. 이후 for문을 통해 모델에 여러 입력 이미지들을 넣어주어 이미지별 중간 레이어의 피쳐맵을 얻으려고 하였으나, 출력결과 하나의 이미지에 대한 피쳐맵만 반복적으로 출력되는 문제가 발생합니다...모델 학습 및 가중치 로드 후 코드는 다음과 같습니다.Hook 함수def get_activation(name): def hook(models, input, output): activation[name] = output return hook입력 이미지별 피쳐맵 저장activation = {} device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") models.to(device) for i in range(1, 5): test_img = Image.open("입력 이미지 루프").convert('RGB') test_img = test_img.resize((800, 800)) test_img = tr.functional.to_tensor(test_img) test_img = test_img.reshape(1, 3, 800, 800) with torch.no_grad(): models.eval() models.backbone.fpn.extra_blocks.register_forward_hook(get_activation("fm{}".format(i))) test_img = test_img.to(device) models(test_img)출력 결과activation["fm1"] 부터 ["fm4"] 까지 동일한 값이 들어가 있음아무리 찾아보고 여러 시도를 해보아도 해결이 되지않아 답답하네요ㅠㅠ추가로 위의 코드를 한번 돌리면 런타임을 다시 시작하지 않는 이상 이후에 코드를 수정하여 hook 함수부터 다시 돌려도 적용이 되지 않는 문제도 발생합니다...
- 해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Augmentation 질문
안녕하세요. 데이터 증강 부분에 대해서 궁금점이 있어서 질문드립니다.가지고 있는 데이터가 1000개 라고 가정했을 때, tr.Compose를 적용시키면 '기존 이미지 1000개 + 증강된 추가 이미지 개수' 가 되는건가요??제가 간단하게 해봤을 때는 transform 했을 때 이미지 개수 증가가 아니라 단순 이미지 변환까지만 이루어지는 것 같은데, 제가 잘못된 부분이 있는건가 좀 헷갈려서 질문 드립니다.만약 단순 이미지 변환만 이루어지는 것이라면 이미지 개수 증가를 위해서 추가적인 작업을 진행해주어야 하는지도 궁금하네요.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
pytorch custom layer
안녕하세요! pytorch library에 대한 질문이 있습니다.저희는 pytorch로 모델을 구현할 때, nn.Module 오버라이딩하여 사전에 존재하는 모듈을 사용하여 모델을 구축합니다. 예를들어 lstm 같은 경우, 파이토치에 이미 lstm block이 구현되어있어서 그대로 가져다 씁니다. 만약 제가 직접 파이토치 상에서 layer를 직접 구축하고 싶을 때, 어떻게 구축해야하는지 궁금합니다. 파이토치 상에서 구현되지 않은 알고리즘을 파이토치로 구현하고 싶습니다.혹시 참고할 만한 레퍼런스가 있다면 뭐든 너무 감사드립니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불러오기 강의에서 오류가 발생하였습니다.
다음과 같이 에러가 발생하였다고 하는데 코랩을 사용해보는게 처음이라 스스로 해결하는데 어려움이 있어 질문드립니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
5-1 CNN코드에서 모델 정확도 구할때
안녕하세요! 좋은 강의 감사드립니다.5-1 CNN코드에서 모델 정확도 구할 때correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data[0].to(device), data[1].to(device) outputs = net(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) # 개수 누적(총 개수) correct += (predicted == labels).sum().item() # 누적(맞으면 1, 틀리면 0으로 합산) print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total)) _, predicted = torch.max(outputs.data, 1)에서 _ 는 무엇을 뜻하나요?? 그리고 max에서 max(outputs.data, 1) 에서 1은 무엇을 의미하나요?? 감사합니다!!
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
5-1강 CNN코드에서
class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) # 합성곱 연산 (입력 채널수 3, 출력 채널수 6, 필터크기 5x5 , stride=1(defualt)) self.pool1 = nn.MaxPool2d(2, 2) # 합성곱 연산 (필터크기 2, stride=2) self.conv2 = nn.Conv2d(6, 16, 5) # 합성곱 연산 (입력 채널수 6, 출력 채널수 16, 필터크기 5x5 , stride=1(defualt)) self.pool2 = nn.MaxPool2d(2, 2) # 합성곱 연산 (필터크기 2, stride=2) self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5x5 피쳐맵 16개를 일렬로 피면 16*5*5개의 노드가 생성 self.fc2 = nn.Linear(120, 10) # 120개 노드에서 클래스의 개수인 10개의 노드로 연산 def forward(self, x): x = self.pool1(F.relu(self.conv1(x))) # conv1 -> ReLU -> pool1 x = self.pool2(F.relu(self.conv2(x))) # conv2 -> ReLU -> pool2 x = x.view(-1, 16 * 5 * 5) # 5x5 피쳐맵 16개를 일렬로 만든다. x = F.relu(self.fc1(x)) x = self.fc2(x) return x net = Net().to(device) # 모델 선언에 x = x.view(-1, 16 * 5 * 5) # 5x5 피쳐맵 16개를 일렬로 만든다.에서 -1이 배치의 개수라고 하셨는데 그럼 이 파일의 코드에서trainloader = torch.utils.data.DataLoader(trainset, batch_size=8, shuffle=True)trainloader에서 batch_size 가 8이니까 -1값이 제일 마지막에 나누어 떨어지지 않을 때 제외하고8 인건가요??아니면print(len(trainloader))하니까 6250이 나오는데 6250일까요..배치의 크기를 의미하는건지 헷갈립니다..
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
4-3 cross validation 강의
안녕하세요! 늘 친절하게 설명해주셔서 감사드립니다.4-3 강의 코드에서validation_loss = [] for fold, (train_idx, val_idx) in enumerate(kfold.split(trainset)): train_subsampler = torch.utils.data.SubsetRandomSampler(train_idx) # index 생성 val_subsampler = torch.utils.data.SubsetRandomSampler(val_idx) # index 생성 # sampler를 이용한 DataLoader 정의 trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, sampler=train_subsampler) valloader = torch.utils.data.DataLoader(trainset, batch_size=32, sampler=val_subsampler) # 모델 model = Regressor() optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-7) for epoch in range(400): # 400번 학습을 진행한다. for data in trainloader: # 무작위로 섞인 32개 데이터가 있는 배치가 하나 씩 들어온다. inputs, values = data # data에는 X, Y가 들어있다. optimizer.zero_grad() # 최적화 초기화 outputs = model(inputs) # 모델에 입력값 대입 후 예측값 산출 loss = criterion(outputs, values) # 손실 함수 계산 loss.backward() # 손실 함수 기준으로 역전파 설정 optimizer.step() # 역전파를 진행하고 가중치 업데이트 train_rmse = evaluation(trainloader) # 학습 데이터의 RMSE val_rmse = evaluation(valloader) print("k-fold", fold," Train Loss: %.4f, Validation Loss: %.4f" %(train_rmse, val_rmse)) validation_loss.append(val_rmse) validation_loss = np.array(validation_loss) mean = np.mean(validation_loss) std = np.std(validation_loss) print("Validation Score: %.4f, ± %.4f" %(mean, std)) 위 코드에서 이중 for 문이 있는데 제가 생각하기에는첫번째 for 문for fold, (train_idx, val_idx) in enumerate(kfold.split(trainset)):여기서 dataset에 있는 모든 데이터가 DataLoader에 담겨야지다음 for문인 for epoch in range(400): # 400번 학습을 진행이 되어야하는 거 같은데 위 코드 대로라면첫번째 for문 for fold, (train_idx, val_idx) in enumerate(kfold.split(trainset)) 에서train_idx, val_idx가 하나씩만 들어오게 되고 다음 for 문인 400번 학습 진행하는 for epoch in range(400): # 400번 학습을 진행한다. 가 오는데 제가 잘못이해한건가 싶어 질문드립니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불러오기 강의에서 cd
강의에 나온 코드cd/content/gdrive/My Drive/deeplearningbro/pytorch를 하면 오류가 뜨는데 cd 로 경로 변경이 안되나요??NameError: name 'cd' is not defined 가 뜹니다.
- 해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
실습코드
제2강에 있는 실습코드는 어떻게 다운로드 받는건가요??호형님 아이디 비번이 있는건가요?? 제가 찾아봐도 잘 모르겟네요.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
(이미지수)x(너비)x(높이)x(채널수) 순서에 대한 질문
데이터불러오기(심화편)에서 32*32 이미지 데이터를 넘파이로 만들때...train_images = np.random.randint(255, size=(100,32,32,3)) # (이미지수)x(너비)x(높이)x(채널수) 위와 같이 주석이 달려있는데, 순서대로 보면 (너비)x(높이)가 아니라 (높이)x(너비)가 아닌지요??
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
MSELoss 와 mean_squared_error
섹션3의 보스턴 집값 예측 강의 부분에 대한 질문입니다.로스 부분인데요.토치에서의 MSELoss와 사이킷런의 mean_squared_error는 같은 것 아닌가요?패키지만 달리있고 예측과 정답을 넣으면 오차 결과를 반환하는건 같은거 같은데...굳이 학습에는 MSELoss를 쓰시고, 평가에는 mean_squared_error를 쓰신거 같아서...(제가 모르는 이유가 있을것 같습니다.)만약 MSELoss가 입력값이 텐서고, mean_squared_error 입력값이 넘파이여서라면 변환해서 쓰면 될것도 같은데...강의 보면서 계속 걸리네요... 쩝
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
def cam 부분에 일부가 조금 설명이 필요해서 질문남깁니다
12.5 CAM 모델 구축에서for idx in range(act.size(0)): if idx == 0: tmp = act[idx] * w[label][idx] else: tmp += act[idx] * w[label][idx] 이 부분은 어떤 기능을 하나요 ?? 직관적으로 잘 모르겠네요
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Random Crop
랜덤크롭이 랜덤하게 사이즈대로 데이터를 그냥 자르는건가요 아니면랜덤하게 잘라낸 데이터를 증강시키는게 맞나요 ?? 만약에 증강시키는거라면 증강개수는 어떻게 설정하는건가요 ??
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
옵티마이저랑 with
중첩 for문 안에서optimizer.zero_grad 의미를 잘 모르겠는데 어떤건가요 ??그리고 왜 옵티마이저를 초기화하는지 이유가 궁금해요 with torch.no_grad(): 이 부분의 기능도 모르겠어요 그리고 with함수에 대해서 구글검색해봐도 잘 모르겠는데 어떤기능을하나요 ?? 좋은 강의 감사드립니다 :)
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
model 선언할떄 .to(device) 하는 이유가 궁금해요
model = VanillaRNN(input ~~~, device = device).to(device) 에서괄호 안에 디바이스를 gpu로 선언해줬는데밖에 to(device)를 하는 이유가 궁금해요 그리고 out.shape[0]은 출력값인거 알겠는데원래 out은 형태가 어떻게 생겼는지 궁금해요
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
같은
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
실습 자료 사용법 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.실습 코드 사용 방법에서는 수업자료를 다운 받아서 구글 드라이브에 복사하라는 것 외에 이걸 어떻게 코랩에 불러오는지 설명이 없습니다. 이 부분에 대한 설명을 요청드립니다.
- 미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
5-1강 CNN 의 정확도 구하기 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 딥러닝호형님 !질문을 하다가 아래 질문들을 쭉 읽어보게 되었는데, 저도 궁금했던 torch.max(outputs.data, 1) 부분에 대한 설명을 보게되었습니다. 아래와 같이 설명을 해주셨는데 이해가 가지않아 질문드립니다. outputs = [[0.1, 0.4, 0.5], [0.2, 0.6, 0,2]] " 여기서의 최댓값의 위치는 2번째(0.5)와 1번째(0.6)입니다. 즉, 첫번째 이미지는 2라고 예측하는 것이고 두번째 이미지는 1이라고 예측을 하게 됩니다. 이를 torch.max를 이용하여 나타냅니다. "행이아닌 열(1)을 기준으로 하나의 이미지가되며 이 기준으로 최댓값을 뽑는다고 하셨는데 위의 outputs를 "열"을 기준으로 한다면 최댓값은 총 3개 (0.2, 0.6, 0.5) 이렇게 나와야할 것 같다고 생각이 듭니다. 이 부분에 대해 설명 부탁드립니다. 감사합니다!