묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨딥러닝 이론 + 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 해보기
Llama3 response 시간
안녕하세요. 수업 잘 듣고 있습니다. 감사합니다.Llama3 모델 알려주시는 부분에서 모델 성능은 너무 좋은데요논문 요약을 위한 fine tuning이 끝난 모델에 input을 넣고 response를 받기까지3분이 걸린다고 말씀하셨는데, 너무 느려서요.왜 느린 것인지, 혹시 이를 더 빨리할 수 있는 방법으로 어떤 것을 활용할 수 있는지 알려주시면 감사하겠습니다.
-
미해결딥러닝 CNN 완벽 가이드 - Fundamental 편
Model Input Size 관련
먼저, 비전공자도 이해할 수 있도록 섬세하게 강의해주셔서 감사합니다.강의에서 efficientnet, xception 등 좋은 딥러닝 모델들을 소개해주셨는데요 실제 어떤 모델이 좋을지 테스트하다 보니 Input size 관련해서 아래와 같은 궁금증이 생깁니다.모델마다 권장 사이즈가 다 다르던데 여러 모델을 테스트 할 때 모델별 권장 Input size로 resize 하는게 좋을까요? 아니면 특정 사이즈로 고정해서 테스트 하는 것이 좋을까요? 이미지를 축소하는 경우보다 확대해서 모델에 넣는 경우 성능이 더 안 좋을까요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Feature 표현에 대한 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 교수님. 강의 잘 듣고있습니다.SPPNet의 이해 02 2:30 경에서 SPM으로 균일한 크기의 vector를 표현한다고 했는데 여기서 feature 표현이 3개가 있을 경우 ... 하는게 어떤 말인지 이해가 안 갑니다.예를들어 Max Pooling을 진행한다고 하면 사분면이 나뉘어지지 않았을 때는 1개를 뽑고 4개로 나누어지면 4개, 16개면 16개를 뽑을텐데 여기서 3을 곱하는게 어떨때 곱하는지 이해가 잘 안갑니다. 감사합니다.
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
fine-tuning 완료된 모델 관련 질문
autotrain 으로 학습이 완료 된 모델을 Langchain 을 이용하여 서비스 해보고 싶습니다.1. autotrain 으로 학습된 모델도 Langchain 에서 사용할 수 있나요?Langchain 에서 사용하려면 어떻게 해야할까요?
-
해결됨TensorFlow 2.0으로 배우는 딥러닝 입문
선형 회귀 모델에 대해서 질문 있습니다
강좌 TensorFlow 2.0을 이용한 선형 회귀 알고리즘 구현 편에서 나오는 선형 회귀 모델을 실행하였을 때 결과값이 계속하여 미세하게 변화하는 이유가 궁금해서 질문합니다. 수학적 계산식을 항상 동일하니 계산값 역시 항상 동일해야 하는 것 아닌가요?
-
해결됨최신 딥러닝 기술 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' , 이런 에러가 발생하였는데, 어떻게 해결할 수 있을까요?
-
미해결하루 10분 한달완성 선형대수학
커리큘럼 문의
0.1 선형대수 소개를 보면 Group Theory 내용도 다룬다고 나와있습니다. 하지만 강의내용에는 Group Theory이 나와있지 않습니다. 혹시 향 후 업데이트 예정이실까요?
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
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 처럼 스왑 하는게 맞는건지어느것이 맞는건지 잘모르겠습니다.
-
미해결파이썬을 활용한 머신러닝 딥러닝 입문
Crash 파일 위치
쥬피터 노트북에서 crash 강의를 수강하려는데 다운 받은 파일집에는 영상과 다른 00.Table of contaent파일로 존재하는데 어떻게 수강해야하나요?
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mm_faster_rcnn_train_coco_bccd 학습시 수행이 안됩니다
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[20], line 4 2 mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) 3 # epochs는 config의 runner 파라미터로 지정됨. 기본 12회 ----> 4 train_detector(model, datasets, cfg, distributed=False, validate=True) File /opt/conda/lib/python3.10/site-packages/mmdet-2.28.2-py3.10.egg/mmdet/apis/train.py:163, in train_detector(model, dataset, cfg, distributed, validate, timestamp, meta) 156 model = build_ddp( 157 model, 158 cfg.device, 159 device_ids=[int(os.environ['LOCAL_RANK'])], 160 broadcast_buffers=False, 161 find_unused_parameters=find_unused_parameters) 162 else: --> 163 model = build_dp(model, cfg.device, device_ids=cfg.gpu_ids) 165 # build optimizer 166 auto_scale_lr(cfg, distributed, logger) File /opt/conda/lib/python3.10/site-packages/mmcv/utils/config.py:524, in Config.__getattr__(self, name) 523 def __getattr__(self, name): --> 524 return getattr(self._cfg_dict, name) File /opt/conda/lib/python3.10/site-packages/mmcv/utils/config.py:52, in ConfigDict.__getattr__(self, name) 50 else: 51 return value ---> 52 raise ex AttributeError: 'ConfigDict' object has no attribute 'device'^캐글--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-25-adb1a52111f0> in <cell line: 4>() 2 mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) 3 # epochs는 config의 runner 파라미터로 지정됨. 기본 12회 ----> 4 train_detector(model, datasets, cfg, distributed=False, validate=True) 2 frames /usr/local/lib/python3.10/dist-packages/mmcv/utils/config.py in __getattr__(self, name) 50 else: 51 return value ---> 52 raise ex 53 54 AttributeError: 'ConfigDict' object has no attribute 'device'^코랩 안녕하세요 좋은 강의 감사드립니다. import os.path as ospmmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))# epochs는 config의 runner 파라미터로 지정됨. 기본 12회train_detector(model, datasets, cfg, distributed=False, validate=True) 이 셀이 실행시 이러한 오류가 뜨는데 이유를 모르겠습니다
-
미해결뿌리 깊은 딥러닝
loss function 설명에서 질문
복잡한 모델일 수록 local minima와 global minima 의 차이가 거의 없다고 하셨는데요 복잡한 '모델' 이라는 점에서 이 '모델'은 layer로 구성된 neural network 인가요 아니면 loss function을 의미하는 것인가요 ?
-
미해결예제로 배우는 딥러닝 자연어 처리 입문 NLP with TensorFlow - RNN부터 BERT까지
트레이닝 에러 발생
for epoch in range(EPOCHS): start = time.time() train_loss.reset_states() train_accuracy.reset_states() # inp -> portuguese, tar -> english for (batch, (inp, tar)) in enumerate(train_batches): train_step(inp, tar) if batch % 50 == 0: print(f'Epoch {epoch + 1} Batch {batch} Loss {train_loss.result():.4f} Accuracy {train_accuracy.result():.4f}') if (epoch + 1) % 5 == 0: ckpt_save_path = ckpt_manager.save() print(f'Saving checkpoint for epoch {epoch+1} at {ckpt_save_path}') print(f'Epoch {epoch + 1} Loss {train_loss.result():.4f} Accuracy {train_accuracy.result():.4f}') print(f'Time taken for 1 epoch: {time.time() - start:.2f} secs\n')위 코드에서 에러 발생합니다. GPT 에도 물어보고 해도 답이 안나와서 조치 방법 질문드립니다.AttributeError Traceback (most recent call last) <ipython-input-109-d5f75ec190c4> in <cell line: 1>() 2 start = time.time() 3 ----> 4 train_loss.reset_states() 5 train_accuracy.reset_states() 6 AttributeError: 'Mean' object has no attribute 'reset_states'
-
미해결예제로 배우는 딥러닝 자연어 처리 입문 NLP with TensorFlow - RNN부터 BERT까지
트랜스포머 인코더 레이어 테스트 에러
sample_encoder_layer = EncoderLayer(512, 8, 2048) sample_encoder_layer_output = sample_encoder_layer(tf.random.uniform((64, 43, 512)), False, None) sample_encoder_layer_output.shape # (batch_size, input_seq_len, d_model)해당 코드에서 아래 에러가 떴어요. 어떻게 조치하면 될까요?Only input tensors may be passed as positional arguments. The following argument value should be passed as a keyword argument: False (of type <class 'bool'>)
-
미해결머신러닝/딥러닝 소개 및 학습을 위한 파이썬 속성 과정
수업진행 파일
깃허브에서 파일다운은 Python_Basic_to_Advanced-main로 했는데 수업진행은 SW_DL_Pytorch-main.폴더로 진행되는거 같습니다 파일 구성내용 자체가 다릅니다 sw폴더는 어디서 다운받나요? crash 부터 따라가려고 합니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
안녕하세요 라벨 관련 질문드려요
안녕하세요,제가 직접 가지고 있는 jpg 사진으로 labelme 5.21 버전으로 label하여 json 문서로 출력하려 fast-rcnn이나 mask-rcnn,yolo 으로 segmentation하려고 합니다. 혹시 수업 강의 자료로 할수있는지 궁금해서 질문올립니다~
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
사전 학습 모델에서의 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 될 때 어떻게 사용되고 변하는지를 잘 몰라서 이런 궁금증이 생긴 것 같습니다..항상 좋은 강의 감사합니다!!