안녕하세요! 섹션 9에서 AdaGrad, RMSProp 강의를 보다 궁금한 점이 생겨 질문드립니다. 제가 이해한 바로는, RMSProp은 학습이 잘 안되었음에도 t가 커질수록 $G_t$가 커지는 문제를 최대한 막는 방법이라고 이해했습니다. $G_t = \gamma G_{t-1} + (1 - \gamma)g_t^2$ 그런데 위 식대로라면 미분값($g_t$)이 커질때 오히려 $G_t$가 감소할수도 있을 것 같은데 RMSProp은 AdaGrad와 달리 learning_rate가 커지는 쪽으로도 조절될 수 있도록 한 것인가요? 만약 맞다면 제가 알기로는 learning_rate는 t에 따라 감소하도록 하는 것이 일반적이라고 알고 있는데 RMSProp에서 이렇게하면 학습에서 어떤 이점이 있는 것인지 궁금합니다.
약 11분 경에 행렬 곱셈을 설명하는 부분에서 "앞 행렬의 행의 갯수와 뒷 행렬의 열의 갯수가 같아야 행렬간 곱셈이 가능하다"고 되어있는데 제가 알기로는 (n, k) @ (k, m) = (n, m) 이어서 앞 행렬의 열의 갯수와 뒷 행렬의 행의 갯수가 같아야 행렬 곱셈이 가능하다고 알고 있습니다. 제가 알고 있는게 맞을까요? 검색해봐도 설명이 이렇게 나와서 어느것이 맞는지 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요. t-SNE 수업에 대하여 궁금한점이 있습니다. 강의에서는 classification 문제에 대한 시각화를 알려 주셨는데요, 혹시 regression 에 대해서도 t-SNE를 적용할 수 있을지 궁금합니다. 만약 불가능 하다면, t-SNE 이외에 활용할 수 있는 다른 방법이 있을지 궁금합니다.
강사님 안녕하세요. test loss 및 validation loss 관련하여 질문드립니다. train loss와 validation loss 플랏을 보고, 이 모델이 잘 학습이 되었는지 어떻게 판단해야 하는지가 궁금하여 질문드리게 되었습니다. 강의 코드를 활용하여 학습하고자 하는 데이터에 적용해 보았습니다. 같은 데이터여도, 모델을 어떻게 구성하는지에 따라 에폭에 따른 loss 값이 큰 차이를 보였습니다. Case 1) 초기 epoch의 validation loss가 train loss보다 낮은 경우 Case 2 ) validation loss와 train loss의 차이가 큰 경우 Case 3) Validation loss가 감소하는 형태를 띄나, 크게 fluctuation 할 경우 Case 4) Validation loss가 크게 fluctuation하며, 감소하는 형태가 아닌 경우 (증가 -> 감소) 말씀드린 4가지 case 경우 모두, 최종적으로 loss 값 자체는 낮게 나왔습니다. 하지만 제가 이상적이라고 생각한 loss 곡선에는 모두 벗어나는것 같아서, 위 형태들도 학습이 잘 되었다고 판단할 수 있을지 궁금하여 질문드립니다! 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. if val_loss < early_stopping_loss: torch.save(resnet.state_dict(), PATH) early_stopping_train_loss = train_loss early_stopping_val_loss = val_loss early_stopping_epoch = epoch 강사님 안녕하세요. 위 코드에 궁금한 점이 있어서 질문드립니다. 위 코드의 4번째 줄에서 아래와 같이 early_stopping_loss 변수를 업데이트 해줘야 하는게 아닌지 궁금합니다. early_stopping_loss = val_loss 지금 코드 상으로는 early_stopping_loss가 업데이트 되는 부분이 없어보여서요. 지금 코드로는 모든 epoch에서 if 문에 들어가는것이 아닐지 질문드립니다! 감사합니다.
전이학습 부분에서 질문이 있습니다! 전이학습 종류는 총 네 가지로 나눌 수 있다고 하셨는데, network-base를 제외하고는 모두 Imagenet 과 같은 대용량의 데이터를 직접 받아 학습에 사용하는 것인가요?저도 지금 딥러닝 관련 분야에서 일을 하고 있는데, network-base 전이학습을 제외하고는 사용해본 적이 없어서 신기해서 여쭤봅니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 데이터 불균형 수업 관련하여 질문드립니다. 수업중에 알려주신 예시는 classification 문제에서의 데이터 불균형 해결 방법을 알려주셨는데요, 혹시 regression 문제에서도 데이터 불균형 해결이 필요한것이 맞을까요? (예를들어 신장(키) 학습 시 평균 키를 가지는 샘플이 많은 경우) regression 문제에서 데이터 불균형이 있을 경우, 어떤 방법으로 해결할 수 있을지 궁금합니다! 감사합니다.
training시에 필요한 action matrix와 reward를 받기위해 inputs에 dummy로 input_action_matrixs와 input_rewards를 정의하고 있는것처럼 보이는데요. 이렇게 하지않고 MyModel에 예를들면 setActionMatrixs, setRewards 이런식으로 함수를 정의하고 fit를 호출하기전에 set함수를 호출하여도 될것 같은데, 이렇게 했을때 단점이 있나요?
전이 학습을 하겠다는것은 이전에 학습한 weight를 이용하겠다는 의미로 알고 있는데요 맨앞에 있는 conv1을 수정하게 되면 모델 파라메터랑 weight랑 안맞지 않나요? 그리고 동결 시키지 않으면 결국 기존 weight를 무시하고 처음부터 다시 학습 할꺼같은데 해당 예제에서 어떻게 기존 weight를 활용하게 되는것인지 궁금합니다.
cnn에서는 다음과 같이 dataloader로 부터 얻은 data를 gpu로 변경 했습니다. seq, target = data[0].to(device),data[1].to(device), 하지만 RNN에서는 다음과 같이 cpu로 처리 합니다. 이유가 무엇 인가요?? seq, target = data
안녕하세요! 수업중 궁금한 부분이 있어 문의 드립니다. self.encoder = nn.Sequential( nn.Conv2d(1, k, 3, stride=2), # 흑백 이미지로 체널이 1개, 나머지는 임의로 설정 nn.ReLU(), nn.Conv2d(k, 2*k, 3, stride=2), nn.ReLU(), nn.Conv2d(2*k, 4*k, 3, stride=1), nn.ReLU(), Flatten(), nn.Linear(1024, 10), nn.ReLU() nn.Linear(1024, 10) 이 부분에서, MNIST의 경우 미리 계산하면 1024가 나온다고 말씀 주셨는데요, 어떻게 계산해야 하는건지 알 수 있을까요? 또한, 이 수치를 코드 작성자가 꼭 계산해서 넣어줘야 하는지도 궁금합니다! 크기(1024)를 코드로 출력해서 확인해 보는 방법이나, 저 부분에 1024 크기가 계산되어 들어가도록 코드를 작성할 수도 있을까요?
챕터1의 ppt 10p에 x1,x2,x3들이 각각 fx를 통과한 g(x1*w+b), g(x2*w+b) 이런 식으로 다음 각각 Activation function을 통과하는 것으로 나타내져 있는데 제가 알기론 g((x1*w +b)+(x2*w+b)+(x3*w+b))이렇게 다 더해진 값이 activation 을 통과하는 걸로 알고 있어서 뭐가 맞는건가요? 다른 질문이 생겼는데 질문 작성이 금지되어서 여기에다가 작성드립니다 강의자료 2단원 8페이지에서는 a벡터가 1xL1의 차원에 있다고 나오는데 그 다음 페이지 9페이지에서는 첫번째 레이어의 a벡터의 "트랜스포즈"가 1xL1차원에 있다고 나와있어서요 그러면 a벡터는 행벡터인가요 열벡터인가요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. IMDBDataset 파일 다운로드가 안되는데 어떻게 받을 수 있을까요? > !gdown https://drive.google.com/uc?id=1RFs-jV18dy9I3cWQ2M80kHfON-fDCerg ------------------------------------------- Access denied with the following error: Cannot retrieve the public link of the file. You may need to change the permission to 'Anyone with the link', or have had many accesses. You may still be able to access the file from the browser: https://drive.google.com/uc?id=1RFs-jV18dy9I3cWQ2M80kHfON-fDCerg
실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기5 강의에서 질문입니다. 해당 강의 2:50 부분부터 Evaluation 코드에 관해 설명을 해주셨는데요, with torch.no _grad() 안쪽의 코드에서는 with torch.no_grad(): model.eval() ret = None for img, fileid in data_loader: img = img.to(device) pred = model(img) ids += list(fileid) # ex) [1, 2] + [3, 4] -> [1, 2, 3, 4] if ret is None: ret = pred.cpu().numpy() else: ret = np.vstack([ret, pred.cpu().numpy()]) return ret, ids pred.cpu().numpy()와 같이 detach()를 따로 사용하지 않은 걸 볼 수 있었습니다. detach()의 사용에 관해서 찾아보니, with torch.no _grad() 블록은 역전파(gradient 계산)를 비활성화 하므로, pred는 gradient 계산과 관련이 없기에, detach()를 따로 호출하지 않고 numpy 배열로 변환할 수 있다 라는 내용을 찾을 수 있었습니다. 그 전에 수업 시간에 보여주신 코드에서는 model.eval() with torch.no_grad(): for x_minibatch in x_test_batch_list: y_minibatch_pred = model(x_minibatch) print(len(y_minibatch_pred), y_minibatch_pred.shape) y_pred_list.extend(y_minibatch_pred.squeeze().detach().tolist()) 이와 같이 with torch.no _grad() 안에서도 detach()를 사용하신 코드들을 볼 수 있었는데요, Evaluation 단계에서 detach()의 사용이 필수적인 것인지 여쭙고 싶습니다!
안녕하세요 강사님 ㅎㅎ 강의 너무 잘 듣고 있습니다. 다름이 아니라. 15:40 에 많이 사용하는 것이 SGC + 스케줄링 또는 SGD + 모멘텀 + 스케줄링 이라고 말씀하셨는데요. 해당 부분을 코드로 나타내면 이렇게 되는게 맞을까요? import torch import torch.optim as optim # SGD + 스케줄링 optimizer = optim.SGD(model.parameters(), lr=0.01) # SGD + 스케줄링 + 모멘텀 optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1) for epoch in range(num_epochs): ... for inputs, targets in train_loader: optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step() scheduler.step() 감사합니다.