묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[딥러닝 전문가 과정 DL1301] 딥러닝 네트워크의 연산
affine function에 대해서(+추가질문)
챕터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벡터는 행벡터인가요 열벡터인가요
-
미해결[Pytorch] 파이토치를 활용한 딥러닝 모델 구축
IMDBDataset 파일 다운로드가 안되는데 어떻게 받을 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 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
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기5 강의에서 질문입니다
실제 캐글(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()의 사용이 필수적인 것인지 여쭙고 싶습니다!
-
해결됨실전 인공지능으로 이어지는 딥러닝 개념 잡기
XOR 파트에서 질문 있습니다.
초반에 bias를 열벡터로 표현시다가 강의 6분부터는 행 벡터로 나오는데요 bias에는 Transpose 표기가 되어 있지 않습니다 왜그런지 궁금합니다
-
해결됨실전 인공지능으로 이어지는 딥러닝 개념 잡기
SGD + 모멘텀 등의 코드
안녕하세요 강사님 ㅎㅎ강의 너무 잘 듣고 있습니다.다름이 아니라.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() 감사합니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
실제 캐글 문제 풀고 제출해보며 성능 개선 기법 익히기8 강의에서 질문입니다
실제 캐글 문제 풀고 제출해보며 성능 개선 기법 익히기8 강의의 3:20 부분에서 궁금한 점이 있어 질문 올립니다. 해당 코드에서는 저장된 model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth 모델을 load할 때, model_efficientb7 = deepcopy(model) PATH = '/content/drive/MyDrive/Colab Notebooks/Dataset/Dogs vs Cats/' model_efficientb7.load_state_dict(torch.load(PATH + 'model_efficientnet-b7_without_scheduler_adam_1e5_epoch20.pth'))다음과 같이 model의 뼈대를 다시 구성한 후, load_state_dict 메소드를 이용하여 가중치 값을 업데이트 하였습니다. 이때, model_efficientb7 = deepcopy(model) 와 같이 그냥 model 객체가 아닌, deepcopy(model)을 사용한 특별한 이유가 있는지 궁금합니다. deepcopy를 사용할 경우, 'model_efficientb7'과 'model' 객체는 서로 독립적인 객체로 유지된다는 점은 파악할 수 있었는데요,model_efficientb7에 적용되는 변화와는 별개로 model 객체 자체를 유지하려는 의도에서 사용한 것이라고 보면 되는지 여쭙고 싶습니다!
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 엔지니어의 역량을 기르려면 어떻게 해야할까요?
안녕하세요 강사님 ㅎㅎ사실 인공지능 쪽 열심히 공부하려고 강사님의 강의 거의 전부를 구매해서 듣고 있는 학생입니다. 요새 고민이 있어서 질문을 드립니다.. ㅎㅎ 저는 요새 최신논문 모델 구현 같은 경우 턱턱 막히는 부분도 많아서.. 그부분에서 실력의 한계를 많이 느끼는데요..실력을 기르기 위해서 그저 막연하게 캐글 competition expert가 되면 되지 않을까? 생각해서 일단 달성해보자 생각하면서 캐글팁이나 노하우 이런거 공부하고 EDA 스크립트나 common.py 같은 걸 만들며 최근 도전하는 중입니다. 혹시 강사님은 데이터엔지니어의 역량을 기르기 위한 로드맵이나 루틴이 있으신지, 만약 있으시다면 어떤 것들이 있는지 살짝 공유가능하실까요? 감사합니다.
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기2 강의에서 질문입니다
실제 캐글(Kaggle) 문제 풀고, 제출해보며, 성능 개선 기법 익히기2 강의 17:30 부분에서 질문이 있습니다. 이번 강의에서는 transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])와 같이 이미지 데이터에 Normalization을 적용하였는데요, from transformers import ViTFeatureExtractor feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch32-224-in21k') feature_extractor다음 코드와 같이 vit-base-patch32-224-in21k 모델에서 적용된 image_mean과 image_std를 확인해 보니,"image_mean": [ 0.5, 0.5, 0.5 ], "image_std": [ 0.5, 0.5, 0.5 ] 와 같이 결과가 나왔습니다. 그렇다면, 학습 데이터에 Normalization을 적용할 때에도 [ 0.5, 0.5, 0.5 ], [ 0.5, 0.5, 0.5 ] 값을 적용해야 하는 것이 아닌지 여쭙고 싶습니다. 감사합니다!
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
RNN과 LSTM 구현해보기2(MNIST 데이터셋) 강의에서 질문입니다
RNN과 LSTM 구현해보기2(MNIST 데이터셋) 강의의 15:04 부분에서 질문입니다. 강의에서는 다음과 같이 학습 과정에서 반복문을 작성했습니다. # |x_minibatch| = (128, 1, 28, 28) # |y_minibatch| = (128) for x_minibatch, y_minibatch in train_batches: x_minibatch = x_minibatch.reshape(-1, sequence_length, feature_size) y_minibatch_pred = model(x_minibatch) loss = loss_func(y_minibatch_pred, y_minibatch) optimizer.zero_grad() loss.backward() optimizer.step() train_losses.append(loss.item()) 이때, 아래와 같이 loss_func를 적용하는 부분에서 궁금한 점이 있는데요,loss = loss_func(y_minibatch_pred, y_minibatch)y_minibatch_pred 는 model에 x_minibatch 를 넣어서 값을 예측한 것으로, 그 shape이 (128, 10) 과 같이 2차원으로 나온다고 이해하였습니다.반면, y_miinibatch 는 (128) 과 같이 1차원으로 나오는 것을 확인했습니다. 이렇게 loss_func 안에 넣는 두 텐서의 다른 것으로 보이는데, y_minibatch의 shape을 변형해 줘야 하는 것은 아닌지 여쭙고 싶습니다..!
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
역전파 내용 중 미분 관련 질문 드립니다
안녕하세요, 섹션2의 역전파 수업을 듣다가 궁금한 점이 생겨서 질문 드립니다. 5분 30초에서 L을 zi에 대해서 미분하면 n분의 1이 된다고 하셨는데 그 이유가 i번째 엘리멘트만 고려해서 미분이 되기 때문인가요? 즉, 1/n*zi라서 미분값이 1/n인건지 궁금합니다!
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
데이터로 딥러닝 적용해보기(당뇨병 환자 데이터) 강의에서 질문입니다
데이터로 딥러닝 적용해보기(당뇨병 환자 데이터) 강의에서 질문입니다.해당 강의 11:00 부분에서 입출력 차원의 수를 각각 9와 1로 정해주었습니다.이때, 모델에서의 계산 과정을 아래와 같이 이해하였습니다.우선, 전체 학습 데이터는 (442, 9) 형태이고, 가중치는 (9, 1) 형태이므로(442, 9) x (9, 1) -> (442, 1) 형태가 되고 여기에 (1) 의 형태를 가진 편향을 더해주면서 브로드캐스팅을 거쳐(442, 1) + (1) -> (442, 1) 형태가 되는 것으로 이해하였습니다. 제가 생각한 계산 과정이 맞는지 궁금합니다!감사합니다.
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
예측하려는 y값이 여러 개일 경우에는 어떻게 하나요?
선생님 안녕하세요.강의 잘 듣고 있습니다.여기에선 y값이 'Global~' 하나 인데현업에서는 y값이 여러 개일 경우가 많은데, 그럴 때는 y_raw_data 컬럼을 어떻게 설정해주나요?
-
미해결프로그래머를 위한 강화학습(저자 직강)
2.7 TD 상태가치함수
2.7 TD와 SARSA를 공부하던 중 이해가 가지 않는 부분이 있어 질문 드렸습니다!상태가치함수 V(t)는 반환값에 대한 기댓값이고 다이내믹 프로그래밍은 model-based이기 때문에 전체 상태와 가치를 다 안다는 전제하에 V(t)를 구할 수 있습니다. MC에서는 에피소드를 여러번 반복해서 실행하고 누적된 반환값을 에피소드 횟수로 나누어서 V(t)를 구합니다.그런데 여기에서 이해가 안되는 것이 TD에서 V(t+1)을 구하는 방법입니다. 다이내믹 프로그래밍과 같이 model-based인 것도 아니고 MC처럼 에피소드가 끝날때까지 계속 구하는 것도 아닌데 어떻게 상태 가치 함수를 구할 수 있는 건가요? 상태가치함수는 반환값에 대한 기댓값이라고 이해했는데, 반환값은 에피소드가 끝날때까지 실행해야 알 수 있는 것 아닌가요?질문 봐주셔서 감사합니다!
-
미해결프로그래머를 위한 강화학습(저자 직강)
cartpole_DQN 에러
github에 있는 cartpole_DQN 코드를 그대로 사용하는데 위와 같이 에러가 뜹니다. 별도로 수정한 내용은 없고 우분투 20.04, 코랩에서 돌렸습니다.
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
섹션2 코드질문
# 동일 shape 은 당연히 Tensor 간 연산 가능data1 = torch.torch.FloatTensor([ [1], [2], [3] ])data2 = torch.FloatTensor([1, 1, 1])data3 = data1 + data2 print (data1.shape, data2.shape, data3.shape)print (data3) 이 코드에서 data1은 torch.FloatTensor이 아닌torch.torch.FloatTensor를 사용하는 이유가 궁금합니다.출력했을때는 같은결과가 나오는데 말이죠..
-
해결됨[Pytorch] 파이토치를 활용한 딥러닝 모델 구축
the kernel appears to have died. it will restart automatically.
섹션1의 마지막 강좌에서 저도 주피터 노트북에 똑같이 작성해보면서 공부하고있었는데요.the kernel appears to have died. it will restart automatically. 이런 문구가 뜨면서 이미지화가 안되면 어떻게 처리해야하나요? 구글링을 해보고 ~config에 들어가서 수정도 해봤는데 잘 안됩니다..
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3] - 지금까지 익힌 이론과 미니배치까지 적용된 딥러닝 코드 구현해보기 에서 질
9분 20초쯤에 indices = torch.randperm(x.size(0)) print(indices) x_batch_list = torch.index_select(x, 0, index=indices) y_batch_list = torch.index_select(y, 0, index=indices) indices를 랜덤한 순서로 넣었다고 하셨는데그리고x_batch_list = torch.index_select(x, 0, index=indices) 이걸사용하는 이유가뭔가요?어차피 지금 랜덤하게 바뀐순서라면x_batch_list = x[indices] 이걸통해서 바로 넣어도 되는게 아닌가요? torch.index_select 이건 인덱스로 원하는 데이터만 선택적으로 추출하기에 적합하다고 알고있습니다. 이번에 굳이 x_batch_list = x[indices] 이게아닌 x_batch_list = torch.index_select(x, 0, index=indices) 이걸 사용한 이유를 알고 싶습니다.제가 아는것이 전부가 아닌 또다른게 있는가해서요
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part4]
처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3]에 파이토치(PyTorch) 텐서 연산 관련 수학과 구현 정리 (이론+실습) 파이토치(PyTorch) 텐서 연산 관련 수학 정리 강의 질
5분 50초쯤에data1 = torch.FloatTensor([1,2]) # 1,2 원소를 가진 1D 텐서 선언이걸 가르키면서 정확히 말하면 2차원 벡터라고 말씀하셨는데 그럼 data1 = torch.FloatTensor([1,2,3,4])print(data1)tensor([1., 2. ,3., 4.])이렇게 된다면 4차원이 되는건가요? 다른 블로그나 구글링을 해보면2. 벡터(1D Tensor)숫자들의 배열을 벡터라고 하며 1차원 텐서라고 한다.벡터의 축의 개수는 1개이다.vector = np.array([1, 2, 3, 4, 5]) print(vector) print(vector.ndim) print(vector.shape)[1 2 3 4 5] 1 (5,)이렇게 말하고 있습니다. 또 강사님의 02_tensor.md 파일을보면벡터(1D 텐서)벡터(1D 텐서): 숫자 여러 개가 특정 순서대로 모여 있는것을 의미함 (배열이라고 이해하면됨)하나의 벡터가 이루는 데이터의 갯수가 n개이면 n-차원 벡터라고함벡터는 열 벡터, 행 벡터 둘다 가리키지만, 열 벡터로 표현하는것이 일반적임이라고 하는데 갯수가 n개이면 n-차원 벡터 이말과 저위의 다른 누군가의 블로그(구글링)의 말에 혼동이 좀 생기는것 같습니다. 아마 강사님께서 차원의 대한 얘기가 혼동될 수 있다고 수차례 말씀하셨는데 이부분인가 싶기도합니다.아니면 제가 잘못 생각하고 있는부분이 있는지 알려주시면 감사하겠습니다
-
해결됨실전 인공지능으로 이어지는 딥러닝 개념 잡기
bias가 왜 필요한지 정확하게 모르겠습니다.
저는 인공지능 관련 학과에 재학중입니다. 저학년 때 공부를 덜 해서 기초가 부족함을 느끼고 호형님 강의로 기초 공부를 하고 있는데요, 교수님께서 강의하실 때도 항상 궁금했던 건데 은닉층 사이 weight값들이 있음에도 불구하고 bias가 왜 있는건지가 궁금합니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
8강 전이학습에서 kernel size 관련 질문 드립니다.
커널 사이즈의 의미가 먼가요?커널 사이즈를 input size에 맞게 대략 어림잡아 pre-trained 모델 (7, 7) -> (3, 3)으로 바꾸면 되는건가요?예를들어, (2, 2) 로 바꾸는 것과 어떤 차이가 있을까요?