묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 7 [Activation Function의 종류] Softmax logit 분포와 Entropy 질문이 있습니다
안녕하세요 선생님해당 강의 마지막 참고사항: what is entropy 부분에서 Temperature가 낮을수록 softmax logit의 분포가 쏠리면 Entropy가 감소하게 되는 것이 아닌지 궁금합니다! 확인해주셔서 감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3 [실습] PyTorch로 구현해보는 Loss Function의 Cross Entropy 구현 관련하여 질문이 있습니다.
안녕하세요 선생님,batch_size = 16 n_class = 10 def generate_classification(batch_size=16, n_class=10): pred = torch.nn.Softmax()(torch.rand(batch_size, n_class)) ground_truth = torch.argmax(torch.rand(batch_size, n_class), dim=1) return pred, ground_truth def CE_loss(pred, label): loss = 0. exp_pred = torch.exp(pred) # 이 부분 관련 질문이 있습니다. for batch_i in range(len(pred)): for j in range(len(pred[0])): if j == label[batch_i]: print(pred[0], j) loss = loss + torch.log(exp_pred[batch_i][j] / torch.sum(exp_pred, axis=1)[batch_i]) return -loss / len(pred)CE loss를 구현하는 과정에서 exp_pred = torch.exp(pred) 행이 왜 필요한 것인지 궁금합니다!exp를 취해주는 이유는 모델의 출력값 logits에 exp를 적용해 각 클래스에 대한 예측값을 양수로 변환한다고 알고 있는데generate_classification위에서 이미 softmax를 취해서 확률분포로 변환해주기 때문에 음수 값은 나오지 않는데 왜 exp를 적용해주어야 하는지 모르겠어서 여쭤봅니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3의 [이론] Regression task의 Loss: L1, L2, Huber, Log Cosh Loss "미분가능"관련 에서 질문이 있습니다.
안녕하세요 선생님!Section 3의 [이론] Regression task의 Loss: L1, L2, Huber, Log Cosh Loss 에서 질문이 있습니다."미분 가능"에 대해서 궁금한 점이 있는데,MAE loss처럼 0에서 미분이 불가능 한 경우에는 gradient를 계산할 수 없는데 어떻게 해당 loss를 사용할 수 있는 것인가요?또 Huber loss는 한 번만 전 구간 한번만 미분가능하고,Log Cosh loss는 전 구간 2번 이상 미분가능하다고 말씀해주셨는데한 번만 미분 가능한 것보다 2번 이상 미분가능한 것의 장점이 무엇인가요?확인해주셔서 감사합니다!
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
아나콘다를 사용하지 않고 파이토치 사용하는 방법
회사에서는 라이선스 문제로 아나콘다를 설치하여 사용하지 못하고 있습니다. 그래서 이전 강의부터 계속 VS CODE에서 주피터노트북 확장자를 사용하여 강의를 듣고있습니다. 머신러닝 강의 때는 VS CODE에서 라이브러리가 문제 없이 설치되었는데, 파이토치의 경우 터미널에서 pip install torch torchvision torchaudio 한 후, 셀에서 import torch를 하면 계속 "[WindError 126] 지정된 모듈을 찾을 수 없습니다.~~~~" 에러가 뜹니다. 혹시 VS CODE에서 주피터노트북을 활용하여, PIP를 통해 파이토치 설치법을 알려주실수있는지 문의드립니다. 추가로 CUDA를 지원하지 않는 경우 cpu only로 설치해도 강의를 따라하기에 무리가 없는지 궁금합니다. - 강의 영상에 대한 질문이 있으시면, 주말/휴일 제외, 2~3일 내에 답변드립니다- 우선 질문전에 검색을 꼭 해보세요. 저희 목표는 스스로 이슈를 해결하는 역량을 기르는 것이고, 이는 즉 검색역량을 기르는 것입니다- 강의 영상 외적인 질문은 인프런 커뮤니티 (https://www.inflearn.com/community/questions) 도 활용해보세요~
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 15 실습 중, lstm 클래스의 forward 함수 질문
안녕하세요, 먼저 좋은 강의 제공해 주셔서 감사하게 잘 듣고 있다는 감사 말씀 드리고 싶습니다.질문 사항은,수업 중 정의하신 lstm 클래스의 forward 함수를 아래와 같이 정의 하셨는데요,class LSTM(torch.nn.Module): def __init__(self, vocab_size, embedding_dim, hidden_dim, num_layers, n_classes) -> None: super(LSTM, self).__init__() self.vocab_size = vocab_size self.embedding_dim = embedding_dim self.embedding = torch.nn.Embedding(vocab_size, embedding_dim) self.lstm = torch.nn.LSTM(input_size=embedding_dim, hidden_size=hidden_dim, num_layers=num_layers, batch_first=True, dropout=0.2) self.fc = torch.nn.Linear(in_features=hidden_dim, out_features=num_classes) self.sigmoid = torch.nn.Sigmoid() def forward(self, x): x = self.embedding(x) x, (h_n, c_n) = self.lstm(x) x = torch.sum(h_n, dim=0) x = self.fc(x) return xforward 함수의 마지막 부분에서 fc를 통과한 x를 self.sigmod 함수에 통과 시키지 않고 return 하여도 되는건지 궁금합니다.
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
fine-tuning 완료된 모델 관련 질문
autotrain 으로 학습이 완료 된 모델을 Langchain 을 이용하여 서비스 해보고 싶습니다.1. autotrain 으로 학습된 모델도 Langchain 에서 사용할 수 있나요?Langchain 에서 사용하려면 어떻게 해야할까요?
-
해결됨최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
안녕하세요, vit에 관심이 많은 사람입니다.
vit.ipynb 파일에서, 코드 !python vit.py --pretrained 1 --drop_rate 0.1 --weight_decay 2e-4 , 이것을 실행하였더니,Traceback (most recent call last): File "/content/gdrive/MyDrive/인프런/VisionTransformer/VisionTransformer/VisionTransformer/vit.py", line 38, in <module> image_patches, _ = iter(trainloader).next() AttributeError: '_SingleProcessDataLoaderIter' object has no attribute 'next' , 이런 에러가 발생하였는데, 어떻게 해결할 수 있을까요?
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
AutoEncoder 차원 질문
안녕하세요! 오토인코더 구현 중 질문이 있어서 글을 남기게 되었습니다.class AutoEncoder(nn.Module): def __init__(self): super().__init__() k = 16 self.encoder = nn.Sequential( nn.Conv2d(1, k, 3, stride=2), nn.ReLU(), nn.Conv2d(k, 2*k, 3, stride=2), nn.ReLU(), nn.Conv2d(2*k, 4*k, 3, stride=1), nn.ReLU(), nn.Flatten(), nn.Linear(1024, 10), nn.ReLU() ) self.decoder = nn.Sequential( nn.Linear(10, 1024), nn.ReLU(), nn.Unflatten(1, (4*k, 4, 4)), nn.ConvTranspose2d(4*k, 2*k, 3, stride=1), nn.ReLU(), nn.ConvTranspose2d(2*k, k, 3, stride=2), nn.ReLU(), nn.ConvTranspose2d(k, 1, 3, stride=2, output_padding=1) )여기에서 nn.Linear(1024, 10), nn.ConvTranspose2d(k, 1, 3, stride=2, output_padding=1)에 질문이 있습니다.채널 수를 직접 맞춰주는 것이 아니라 반환 받아서 그 값을 nn.Linear(이 부분, 10)에 넣어주고 싶은데 gpt 한테 물어보니까 그러려면 이렇게 직접 구해서 add_module을 해줘야 한다던데...정말 이런 방법 뿐인지ㅜㅜ 매번 채널수를 직접 구해야 하는 것인지 궁금합니다!def __init__(self, input_shape=(1, 28, 28)): super().__init__() k = 16 self.encoder = nn.Sequential( nn.Conv2d(1, k, 3, stride=2), nn.ReLU(), nn.Conv2d(k, 2*k, 3, stride=2), nn.ReLU(), nn.Conv2d(2*k, 4*k, 3, stride=1), nn.ReLU(), nn.Flatten(), ) self.latent_dim = self.get_encoder_dim() self.encoder.add_module('linear', nn.Linear(self.latent_dim, 10)) self.encoder.add_module('relu', nn.ReLU()) def get_encoder_dim(self): x = torch.randn(1, self.input_shape) x = self.encoder(x) return x.view(1, -1).size(1)nn.ConvTranspose2d(k, 1, 3, stride=2, output_padding=1) 여기에서도 output_padding=1이 필요한지 알기 위해서는 직접 계산을 다 해봤어야 하는 것인데.. 이것도 위의 경우와 마찬가지로 직접 구하는 방법 뿐인지 알고 싶습니다!감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 16 [이론] Transformer의 Encoder 질문
안녕하세요, 강의 감사드립니다.multi-head attention에서 Q,K,V 차원에 대해 질문드립니다.1. 여기서 H는 multi-head 시킨 후 (concatnation 후)의 최종 feature 차원을 의미하는지 궁금합니다. (단일 self-attention에서도 Q,K,V에서 H와 다른거 같은데 확인부탁드립니다)2. 만약, 1이 맞다면 Q,K,V의 차원은 N x H/M 이 되어야 하는건 아닌가 싶습니다. (m은 M을 표현하기 위한 index로 보이기 때문입니다)혹시 제가 잘못 이해하고 있는 부분이 있다면, 정정해주시면 감사드리겠습니다!
-
해결됨강화학습 입문에서 Deep Q-learning/Policy Gradient까지
정책 반복 알고리즘 구현 에서 정책 업데이트 메모리 문제
선생님 #3. 정책 개선 #policy_stable <- true policy_stable = True old_pi = pi #각 s에 대해: for s in range(num_states): # pi_s <- argmax_a(sum(p(s',r|s,a)*[r + gamma*V(s')])) new_action_values = np.zeros(num_actions) for a in range(num_actions): for prob, s_, r, _ in transitions[s][a]: new_action_values[a] += prob * (r + GAMMA * V[s_]) new_action = np.argmax(new_action_values) pi[s] = np.eye(num_actions)[new_action] if old_pi.all() != pi.all(): policy_stable = False여기 최적 정책을 업데이트 하는 과정을 디버깅 하는 과정에서 old.pi = pi 에서 메모리를 공유 해서 pi[s]를 업데이트를 같이 해서 무조건 아래서 if old_pi.all() != pi.all():구문은 True가 나오게 되어 있는데 의도한 바는 old_pi = copy.deepcopy(pi) 로 코드를 바꾸는게 맞나요?
-
해결됨강화학습 입문에서 Deep Q-learning/Policy Gradient까지
반복 정책 평가 실습 알고리즘에서 이론과 코드가 헷갈려서요.
이렇게 기존의 V 테이블을 가지고 새로운 V` 을 구하는데 while True: #delta <- 0 delta = 0 #각 s에 대해 반복: for s in range(num_states): #v <- V(s) old_value = V[s] new_value = 0 #업데이트 규칙 : V(s) = sum(pi(a|s)*sum(p(s,a)*[r + gamma*v(s')])) for a, prob_action in enumerate(policy[s]): # s', r에 대해 합산 for prob, s_, reward, _ in transitions[s][a]: new_value += prob_action * prob * (reward + GAMMA * V[s_]) V[s] = new_value #delta <- max(delta|v - V(s)|) delta = max(delta, np.abs(old_value - V[s]))V[s] = new_value여기 실습 코드에서는 바로 V[s]을 업데이트 합니다.예를 들면9번 타일 상태 값에서 오른쪽 action을 해서 10번의 다음 상태 값을 가지고 계산 합니다.그리고 9번이 상태 값이 업데이트 됩니다.그리고 나서 10번에서 왼쪽의 action의 상태 값을 구할때 이미 업데이트된 9번의 상태 값을 가지고 상태를 업데이트 합니다. 기존 ppt 에서 설명은 기존의 V를 가지고 있다가 기존의 V를 업데이트 하지 않은 채로새로운 V` 테이블을 계산 하고 V 을 V` 로 교체 하는것으로 표현 되고 있습니다. https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_dp.html 해당 사이트의 코드는ppt 에서 배운 대로 V를 V` 로 교체 하는것으로 되어 있습니다. 실습 처럼 바로 값을 업데이트 하는게 맞는건지 ppt 처럼 스왑 하는게 맞는건지어느것이 맞는건지 잘모르겠습니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
사전 학습 모델에서의 layer 변경에 대한 질문
안녕하세요 강사님, 강의 잘 보고 있습니다.다름이 아니라, pretrained model에서 강의에서와 같이(1) model의 feature extraction 부분에서 Conv2d의 kernel_size를 줄이고 (2) model의 fully connected layer에서 출력 크기를 10으로 줄인 부분에서 의문이 있어서 글을 남기게 되었습니다.(2)의 경우는 사실 fully connected layer가 복잡한 구조..?를 가지지는 않는다고 생각하여 다시 학습하는 데 별로 문제가 없다고 생각합니다.하지만, (1)의 경우, 모델의 초반에서 아예 kernel size를 변경했고, 모델 프리징 강의에서 언급하신 바와 같이 그렇게 바꾸게 되면 임의의 랜덤 값으로 가중치가 초기화된다고 말씀하셨는데..! 그렇다면 Imagenet 모델로 사전 학습한 것이 의미가 있는건지 살짝 의문이 듭니다ㅠㅠ사전 학습 모델의 목적이 그대로 웨이트를 사용한다는 것보다 모델의 구조를 가져온다는 것이라면 납득이 되지만, 사전 학습에서의 가중치가 transfer learning 될 때 어떻게 사용되고 변하는지를 잘 몰라서 이런 궁금증이 생긴 것 같습니다..항상 좋은 강의 감사합니다!!
-
해결됨딥러닝 차세대 혁신기술 - 물리 정보 신경망 입문과 Pytorch 실습
안녕하세요? PINNs 입문공학자 입니다.
안녕하세요? 저는 열수력해석 알고리즘을 개발 중인 Thermal Engineer 입니다. 다중배관에 대한 수력학적 해석 알고리즘을 다루는데, 현재는 배관 내부의 유동해석을 regression 기법을 활용한 근사해를 구하는 방법을 활용중입니다.현재 알고리즘은 1 phase 해석은 어느 정도 수행하지만, 2 phase(non-slip condition) 해석에서 많은 난제가 있었습니다.(음함수 발생 등) 그래서 해당 문제를 머신러닝 기법을 활요하면 좋지 않을까 해서 PINNs에 관심을 갖게 되었습니다. 서론이 길었네요.. 나비에 스톡스 equation에 대한 예제를 pytorch로 구현해서 해를 구하는 방법은 해보신적 있으신지 궁금합니다. 제가 풀려는 문제의 핵심 방정식은 나비에 스톡스 equation에 종속되어 있거든요! 잘아시겠지만, PINNs이 정착해서 가장 각광받을 분야는 열/유체 분야가 될 것 같은데, 이에 대해서는 어떻게 생각하시는 지 궁금합니다^^ 감사합니다. 다른 강의들도 쭉 ~ 따라가며 강사님처럼 해당 분야 speciality를 갖고 싶네요 ^^
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Auto Differentiation에서 computational Graph 질문있습니다
안녕하세요, 좋은 강의 준비해주셔서 감사드립니다.딥러닝에 대한 흥미가 점점 더 깊어지는 중입니다!한가지 간략히 질문드리고 싶습니다.노드의 정의 문제와 관련된거 같은데요.. computation graph에서의 노드는 x, w, h, y, L 전부를 의미하는 반면, Neural network에서의 노드는 x, h, y, L이라고 이해하면 될까요?미리 감사드립니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Section 3 이론 classification Loss function 질문
안녕하세요.Section 3 이론 classification Loss function 질문있습니다.ground truth는 각 class별 실제 확률값이라고 하셨는데, 실제 데이터에서 우리가 주어진 정보는 해당 observation이 어떤 클라스를 가지는지 label정보만 주어집니다. (확률이 아님)각 loss function별 비교를 위해 설명해주신부분은 이해가 되었으나, 실제로 모델이 학습할때 class별 ground truth 확률값을 모르는 상황에서 어떻게 학습이 되는지 궁금합니다.혹시라도 강의 후반에 관련 내용이 나온다면 미리 죄송하다는 말씀 드립니다.감사합니다.
-
해결됨딥러닝 차세대 혁신기술 - 물리 정보 신경망 입문과 Pytorch 실습
2. 미분방정식에서 n이 뭐죠 ?
t - 시간x - x축상의 위치n ?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
section4의 entropy 시그마 식 전개에 대한 질문입니다.
안녕하세요, 좋은 강의 잘 듣고 있습니다. 다름이 아니라 entropy를 안내해주실때 entropy의 식이-Σp_i*log(p_i)위 식이고, p와 1-p에 대한 의미도 잘 이해했습니다. 그런데 대입하는 과정에서 갑자기-plogp-(1-p)log(1-p)가 된 것이 이해가 안되네요... 그래프로 그려주시면서 설명해주신 것도 잘 이해가 되는데, 어떤 과정으로 위 식이 나왔는지 이해가 안되서 질문드려요.제가 단순 시그마 푸는 법을 잊어서 생긴 것이라면 다시 찾아보겠습니다. 두 값을 대입한다는 말이 어떤 것을 의미하는지 잘 이해가 안되서 질문드립니다. 감사합니다.
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
llama 3 파인튜닝 관련 문의 사항
안녕하세요강의 내용을 기반으로 실습을 잘 진행 해보고 있습니다.허깅페이스에서 하나의 모델을 다운받아 테스트를 해보려고 하는데, 모델명.gguf 파일로 되어있는 모델은 autotrain으로 파인튜닝이 잘 진행되지 않아 문의 드립니다. !autotrain llm --train \ --project-name "llama3-finetuning-da-8B-Q4" \ --model "path/llama-3-8B-gguf-Q4_K_M/llama-3-8B-Q4_K_M.gguf" \ --data-path "/path/train_data/korquad" \ --text-column "text" \ --peft \ --quantization "int4" \ --lr 2e-4 \ --batch-size 8 \ --epochs 40 \ --trainer sft \ --model_max_length 2048 답변 부탁드리겠습니다. 감사합니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
7강 폴더 만들
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 폴더 만드는 부분에서 directory_create('x/x')를 하게 되면 x에 어떤 이름을 넣어도 다 이미 만들어졌다고만 뜨고 실제 드라이브 들어가면 아무것도 폴더가 생성이 안되었는데, 왜 그런건지 잘 모르겠어요. 그리고 현재 디렉토리 위치 설정하는 것도 이런 오류가 발생하는데, 구글 드라이브 마운트 할 때는 잘 됐었는데 이런 오류가 발생하네요..! cd/~ 의 코드를 실행하면 현재 디렉토리를 cd/~에서 ~에 해당하는 디렉토리로 이동해주는게 아닌가요? 아래 사진은 현재 드라이브 디렉토리 경로입니다!
-
미해결처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
test data 의 loss 계산식 문의
10_ADVANCE-EXAMPLE-MILTI-LABEL-CLASSIFICATION 과 11_MILTI-LABEL-CLASSIFICATION-DROPOUT-BATCHNORMALIZATION 강의자료에서 맨 밑부분의 테스트셋 기반 Evaluation 에서 test_loss 를 계산할 때 전체 데이터인 10000으로 나누셨는데, 왜 그러신건지 궁금해서 질문드립니다.train 과 validation 의 loss 계산은 train_batches 와 val_batches 개수(for문 도는 횟수) 만큼만 나누셨는데 test loss 를 계산할 때는 minibatch 가 아닌 전체 데이터로 나누셔서 상대적으로 test data 의 loss 값이 작아보여서요.test_loss = 0correct = 0wrong_samples, wrong_preds, actual_preds = list(), list(), list()model.eval()with torch.no_grad(): for x_minibatch, y_minibatch in test_batches: y_test_pred = model(x_minibatch.view(x_minibatch.size(0), -1)) test_loss += loss_func(y_test_pred, y_minibatch) pred = torch.argmax(y_test_pred, dim=1) correct += pred.eq(y_minibatch).sum().item() wrong_idx = pred.ne(y_minibatch).nonzero()[:, 0].numpy().tolist() for index in wrong_idx: wrong_samples.append(x_minibatch[index]) wrong_preds.append(pred[index]) actual_preds.append(y_minibatch[index]) test_loss /= len(test_batches.dataset)