묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
early stopping관련
안녕하세요, tensorflow로 다른 강의들을 듣다가 torch를 공부하기 시작한지 얼마안돼서 여쭤보는 질문입니다.tensorflow에서는 callback함수로 간단히 earlystopping이나 checkpoint등을 가져와 쓸 수 있는 모듈이 있는걸로 알고있습니다. 혹시 torch에서는 그런 모듈이 따로 없는건가요?
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
nn.Parameter
class로 모델 만드는 설명 해주실 때, linear layer 예제 알려주실 때, 파라미터로 등록하려면 nn.Parameter()로 감싸주라고 하셨는데요, 이후의 코드들을 보면 따로 감싸주는 모습이 안보여서요.파라미터로 등록할 때 명시적으로 필요 없는 경우가 있는 건지요? 감사합니다.
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
9:45 쯤에 y_pred_list.extend 질문입니다.
list.append 와 list.extend의 차이는 append는 y_test_pred자체를 리스트에 추가를 하는 것이고, extend는 리스트의 맨 끝쪽에 y_test_pred 원소들을 하나씩 다 넣는것으로 이해를 했는데, 여기서는 append나 extend 둘 다 써도 괜찮은 것인가요? 제가 이해한 바로는 그렇습니다!
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
3장 데이터 불러오기에서 LinearTensor를 정의하는 이유가 궁금합니다.
안녕하세요. 강의 잘 듣고있습니다. 다만 질문이 몇가지 있는데요. 3장 데이터 불러오기를 보던 중 LinearTensor를 정의하는 이유가 궁금합니다. ToTensor로만 해주면 되는 것 아닌가 하는 생각이 드는데, ToTensor() 이후 LinearTensor(2,5)를 해주는 이유가 무엇인가요??LinearTensor에서 init함수와 call함수가 같이 있는데 LinearTensor(2,5)와 같이 호출하면 객체를 만드는 것이니 init을 해주는건가요? 그렇다면 call은 어느 경우에 사용하게 될까요?? 이론적으로는 init을 객체생성, call을 클래스를 함수 그자체로 사용. 하는 경우에 쓰는 것을 알고있으나 pytorch에서 실제 사용예시가 어떻게 다른지가 궁금합니다.감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
pytorch fasterRCNN 커스텀데이터로 학습, 평가 질문
안녕하세요 선생님!선생님 강의해주신 내용 바탕으로 개인 프로젝트를 진행하는 와중에 10일동안 구글링을 통해서도 해결을 못한 문제가 있어 여쭤봅니다..!AI허브(https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100)에서 받은 컨테이너고유번호(BIC)를 FasterRCNN으로 detect하는 코드를 작성중인데, 6천개로 학습시키고 학습시켰던 데이터 일부로 evaluation을 하면 검출을 잘 하는데, 새로운 데이터(학습데이터와 유사한 이미지)로 evaluation을 하면 아무것도 검출을 못하는(빈 텐서만 출력) 현상이 일어납니다. 에폭을 1부터 10까지 해보고 loss가 0.01까지 줄어들며 수렴하는것을 확인했는데도 아무것도 검출을 못하네요.ㅇ모델 : pytorch fasterrcnn_resnet50_fpn(pretrained=True)ㅇ학습과정 * 구글코랩 활용1. AI 허브 json파일을 coco 형식으로 변경(시각화를 통해 정상변경 확인)2. customdataset 정의3. 학습환경 설정 및 학습4. 가중치 저장5. evaluation 환경 설정(pretrained=False) 및 evaluation(가중치 로드)6. pycocotools로 평가지표 출력 구글코랩에서 작성한 코드는 링크로 첨부했습니다.https://colab.research.google.com/drive/1dq4wx7M5GFwLSrz8lcCLIL431Othr94Otrain 모드 모델정의하고, eval모드 모델 정의하는 부분에 뭔가 오류가 있는것 같은데 못 찾겠습니다...ㅜㅜ
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
8분 33초 df_train.corr()['SalePrice'] 부분 질문입니다.
안녕하세요 항상 좋은 강의 해주셔서 감사합니다.df_train.corr()['SalePrice'] 를 실행했더니,ValueError: could not convert string to float: 'RL'이런 벨류 에러가 뜹니다.따라서 인터넷에 찾아보았더니, 'RL'과 같은 문자열을 실수(float)으로 변환할 수 없다고 하며, 이러한 문자열이 존재하는 열은 데이터 타입이 숫자형이 아닌 문자형(object)일 가능성이 높다고 하는데, 위에서 해당 feature를 봤을 떄는 실수형이던데 왜 이런 오류가 발생하는지 아실까요?
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
안녕하세요! 질문이 있습니다
어제 질문 답변 감사드립니다! 궁금한게 해결되었습니다..ㅎ오늘도 질문이 좀 있어서 여쭤보고 싶습니다..! 혹시 augmentation을 한 뒤에 데이터셋을 저장하는 코드를 알 수 있을까요?예를 들어, 1000개의 이미지 데이터가 train_set에 있고, DataLoader에서 transform을 통해 이 1000개를 변형해가며 로드할텐데, 이 로드한 데이터들을 저장하고 싶습니다!다양한 augmentation을 통해서 기존 데이터의 3배정도인 3000개의 변형 데이터들을 저장하고 싶은데 코드를 어떻게 짜야할지 모르겠어서 질문드립니다. 요즘 예전 대회들에 있었던 불균형 이미지 데이터 분류를 연습하고 있는 중인데, 라벨이 총 10개에 어떤 라벨에는 데이터가 600개 가까이 되고, 어떤 라벨에는 데이터가 10개도 안되는 경우들이 있는 불균형이 매우 심한 데이터들입니다. 이 불균형을 weightedrandomsampler에 augmentation을 활용하여 불균형을 해소하고자 하였습니다. validation용으로 원본데이터에서 30%만큼 지정을 해 둔 뒤, train용으로 원본데이터를 weightedrandomsampler를 활용해 원본데이터를 변형하고 가중치를 주어 데이터가 적은 라벨의 데이터를 늘려 학습했습니다. 그 뒤에 아까 분리해 놓았던 validation데이터를 분류했습니다만... 평가기준인 weighted F1 score가 생각보다 낮게 나와서 고민입니다.. 제 생각에는 결국 validation 데이터에는 여전히 라벨별로 불균형이 매우 심한 상태이므로 라벨별로 동등한 양의 데이터로 학습한 모델에서는 제대로 예측을 못한것이 아닐까합니다. 그래서 위에서 질문한 코드를 통해 변형된 데이터에 원본 데이터를 합쳐서 학습을 시키고, 그 다음에 validation을 하면 약간은 나아질까 하는 생각이 듭니다만.. 호형님이라면 어떻게 하실지 궁금해서 여쭤봅니다. 질문이 너무 길고 장황해서 죄송합니다..ㅜ
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
안녕하세요! 불균형 데이터 처리 과정중 augmentation에 대해 질문이 있습니다
imbalanced data를 처리할 때, weightedrandomsampler (replacement=True) 와 augmentation을 통해 불균형을 해소하고자 하는데, weightedrandomsampler에 있는 num_samples 파라미터에 관해 궁금한점이 있어서 질문드립니다. weightedrandomsampler가 작동하는 방법이, 샘플마다 가중치를 줘서 데이터 수가 적은 라벨에서는 더 높은 확률로 뽑히고, 데이터 수가 많은 라벨에서는 더 낮은 확률로 뽑혀서 결국 확률상 거의 같은 확률로 뽑도록 만들어서 불균형을 해소하는 걸로 알고 있습니다.이때, 만약 num_samples를 그냥 원래 train_sets의 길이로 지정을 하면 데이터가 적은 라벨에서는 augmentation을 통해 이미지를 변형해가며 오버샘플링이 된 것 처럼 샘플수가 증가되겠지만, 반대로 원래 데이터가 많던 라벨에서는 기존에 있던 데이터들에서 일부는 뽑히지 않을 수도 있지 않나요?예를들어 (1000,200,100)의 불균형 데이터가 있다고 했을때, 전체 데이터의 개수인 1300만큼 weightedrandomsampler에서 num_samples=1300으로 하고 추출을 한다면, 라벨별로 1300/3 = 433개씩 뽑힐텐데, 이러면 첫번째 라벨의 데이터는 1000개에서 433개를 뺀 567개는 그대로 누락되는건가요?만약 그렇다면 num_samples를 더 큰 숫자로 해서 가지고 있는 데이터를 전부 불러오려고 한다면, 소수의 데이터를 너무 많이 재활용해서 과적합이 될까요?
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
MNIST 데이터 DNN 학습시키는 반복문 안에 minibatch 관련 질문
# 질문 1. 아래와 같이 model 안에 x_minibatch, y_minibatch를 넣고 학습을 시키는 과정인데 결국 train_batches의 차원은 (375,128,1,28,28) # 48000/128=375 x_minibatch 의 차원은 (128,1,28,28) 여기서 model의 input의 차원은 (128,784) 가 맞을까요? 결국 한번 model 넣을 때마다 128개의 data가 학습되는 건가요? DNNModel에는 input 차원이 (784,)인 1개의 데이터가 들어가서 output으로 (10,) 데이터를 출력한다고 알고있어서 조금 개념이 충돌하는 것 같습니다. # 질문 2. train_batches의 type이 torch.utils.data 이라 shape을 알기 어려워 행렬 구조가 눈에 안들어오는데 따로 보는 방법이 있을까요? model.train() # prep model for training for x_minibatch, y_minibatch in train_batches: y_minibatch_pred = model(x_minibatch.view(x_minibatch.size(0), -1)) loss = loss_func(y_minibatch_pred, y_minibatch) optimizer.zero_grad() loss.backward() optimizer.step() train_loss += loss.item() train_loss = train_loss / len(train_batches) train_losses.append(train_loss)
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
데이터 범위 질문
- 강의 영상에 대한 질문이 있으시면, 주말/휴일 제외, 2~3일 내에 답변드립니다- 우선 질문전에 검색을 꼭 해보세요. 저희 목표는 스스로 이슈를 해결하는 역량을 기르는 것이고, 이는 즉 검색역량을 기르는 것입니다- 강의 영상 외적인 질문은 인프런 커뮤니티 (https://www.inflearn.com/community/questions) 도 활용해보세요~강사님 고생많으십니다. 강의 잘 듣고 있습니다.한가지 의문점이 생겨서 질문드립니다. 당뇨병 환자 데이터 강의에서는 data의 범위를 설정하실때 제일 마지막 부분이 target이라서 빼신것이라고 이해했습니다.dataframe으로 출력해서 descr과 함께 확인했는데. target은 따로 되어있는것이 아닌지... 제가 잘못 보고 있는 것인지 궁금합니다.만약 제 말이 맞다고 가정하였을때 코드를 실행해보면 target의 사이즈는 422로 나옵니다 차원값이 없는데 이부분을 unsqueeze를 해서 차원을 추가해주면 될까요저렇게 했을때 loss값이 3000이 넘습니다.optimizer를 adam이나 learning rate를 변경해줘봐도 의미는 없는것 같습니다. 단층이라서 그런것 같은데.위에 데이터의 범위와 차원 추가하는 방법이 맞는 것인지 궁금합니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
GPU 학습 파일 없음
GPU로 실행하려면 13_LSTM_STOCK_ADVANCE_GPU.ipynb 파일로 실행하라고 적혀 있는데, 강의 자료 다운로드 시 해당 파일이 없는 것 같아요
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
코랩 실행여부 관련
코랩 실행시 에러메시지가 자주 뜹니다 ㅠㅠ가령 보스턴 집값 예측하기(4-1)강의를 수강 중인데첫줄부터 실행을 누르면 아래와 같이 에러메시지가 뜨고,하위 코드도 전부 에러가 뜹니다. [Errno 2] No such file or directory: '/content/gdrive/My Drive/deeplearningbro/pytorch' /content
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
Validation Dataset의 Shuffle 관련 질문
안녕하세요. 강의 통해 항상 도움 받고 있습니다.다름이 아니라 현재 진행중인 프로젝트에서 모델을 학습하며 Validation 데이터셋에 대한 성능을 확인하는데, Validation 데이터셋의 shuffle을 했을 때와 안했을 때 성능에 유의미한 차이가 발생합니다.무엇이 이유이며 Validation 및 Test Dataset은 항상 Shuffle=False로 설정해주어야 하는지 궁금합니다.
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
09.simple_actual_example_multi_label_calssification에서 loss함수에 대해서 질문이 있습니다.
epoch를 돌리는 코드에서 loss = loss_func( y_minibatch, y_minibatch_pred) 했는데 다음과 같은 오류가 났습니다." 0D or 1D target tensor expected, multi-target not supported "그래서 쥬피터의 원본대로 pred를 먼저하니까 정답이 나오더라구요. 구글링을 해본 결과 nn.CrossEntropyLoss()(pred, target) 계산된다고합니다.질문1. 순서를 지켜야하는 이유가 있나요?질문2. MSE와 BCE도 (pred, target) 순서를 지켜야하나요? 구글링을 해봤는데 정확하게 나오지는 않아서 여쭤보게 되었습니다.감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
학습자료 다운로드 ipynb파일이 없음
코드파일을 다운받았는데 ipynb파일이 없습니다. 폴더는 있고 강의하시는 자료가 없습니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
from_pretrained 에 관한 질문입니다
강의 4:53 에 나오는 from_pretrained 함수에 관한 질문입니다.공식 문서를 아무리 찾아봐도, 더 미궁 속으로 빠지는 듯한 느낌만 들어서(...) 질문 올립니다. from_pretrained 메소드는 huggingface에서 제공하는 그 어떠한 클래스에도 공통적으로 적용이 가능한 것인지 궁금합니다.공식 문서에서 from_pretrained를 검색해본 결과, 각 검색 페이지마다 from_pretrained의 파라미터가 다르게 나오고, 그에 대한 설명조차도 찾을 수가 없었습니다...예를 들어, FeatureExtractionMixin 의 from_pretrained 메소드의 파라미터는 9개인 반면, AutoTokenizer의 from_pretrained 메소드의 파라미터는 13개 라고 서술되어 있는 경우를 볼 수 있었습니다.또한, 강의에서 사용하였던feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224-in21k") feature_extractor이 코드와,model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224-in21k', num_labels=10, # 10개의 클래스로 분류를 해야 함 id2label=id2label, label2id=label2id)이 코드에서도 역시 from_pretrained 메소드가 사용되었는데,공식 문서에서 ViTFeatureExtractor와 ViTForImageClassification을 아무리 찾아보아도 from_pretrained 메소드에 관한 설명은 볼 수가 없었으며, 각각의 경우에 적용되는 파라미터에 관한 내용 역시 찾아볼 수 없었습니다.이런 경우, 다른 코드에 from_pretrained 메소드를 적용할 때에는 해당되는 내용을 어떻게 찾아야 하는 것인지 궁금합니다.
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
out = out[:, -1] 코드에 관한 질문입니다
강의 8:30 부분에서 나오는out = out[:, -1] 코드에 관한 질문입니다. 우선, 다음과 같이 예시를 작성해 보았습니다이렇게 test_data를 만들고, 여기에 test_data[:, -1] 을 적용해 보았는데요,shape이 (3, 2, 4) 에서 (3, 4) 로 바뀌는 것은 확인하였지만, 이 코드가 '왜 사용되었는지' 에 관한 궁금증이 생겼습니다. 단지 shape을 맞춰주기 위해서 전체 데이터 중 일부를 slicing 하는 것이라면, view 메소드를 사용해서 shape을 맞춰주는 방법도 있을텐데요,전체 데이터 중에서 일부를 slicing 하는 방식으로 이렇게 코드를 작성한 이유가 무엇인지 궁금합니다!
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
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 함수부터 다시 돌려도 적용이 되지 않는 문제도 발생합니다...
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
batch normalization과 standard scaler에 관한 질문입니다
안녕하세요, batch normalization과 standard scaler의 사용에 관해 질문드립니다! 우선, batch normalization은 학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가지더라도 각 배치별로 평균과 분산을 이용해 정규화하는 것을 뜻하고, 결국 평균 0, 분산 1로 데이터의 분포를 조정하는 과정으로 이해를 하였습니다. 또한, 이전에 학습하였던 standard scaler 역시 전처리 과정에서 평균 0, 분산 1로 데이터를 조정하는 역할을 한다고 이해하였는데요 batch normalization과 standard scaler의 작동 방식 자체가 조금 유사하게 느껴지는데, 이 둘은 각각 전처리 과정과 학습 과정에서 따로 사용되는 것으로 보면 되는 것인가요??
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
딥러닝 코드에 Batch Normalization 적용해보기 질문입니다
해당 강의 8:18 에서self.layers를 선언할 때, Layer(input_dim, 256. batch_norm, dropout),Layer(256, 256, batch_norm, dropout),Layer(256, 128, batch_norm, dropout),으로 계층들을 선언을 하는 과정에서,Layer들을 선언 했을 때, Layer 클래스 안에 있는 init 매소드만 실행이 되서 생성된 Layer 객체들 안에 self.layer에 값들이 할당이 된것인지.Layer 객체들에서 forward 매소드에서 필요한 인자 (x)를 할당받은 부분이 없기 때문에 DNNModel 클래스의 self.layers를 할당하는 과정에서는 Layer 객체들의 forward 매소드가 실행을 하지 않은 것인지 2가지 질문을 드립니다.