실제 캐글(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 ] 값을 적용해야 하는 것이 아닌지 여쭙고 싶습니다. 감사합니다!
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
안녕하세요 라마2에 한국어 데이터셋만 학습해도 한국어 질문 답을 하는 것을 보고 궁금해서요 한국어 데이터 셋만 학습을 해도 라마2에서 한국어를 이해하고 대답하는 건지요 그리고 예제에서 질문을 한 후 받는 대답이 너무 짧게 나오는데요 이부분은 데이터셋의 답 부분이 짧아서 그런 가요 gpt는 엄청 길게 답을 하는데 이부분이 궁금하네요
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을 변형해 줘야 하는 것은 아닌지 여쭙고 싶습니다..!
모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
ERROR train has failed due to an exception: TypeError: LlamaForCausalLM.__init__() got an unexpected keyword argument 'use_flash_attention_2' 안녕하세요, Autotrain library를 활용하여 fine-tuning 중 아래와 같은 에러가 발생하였는데요. 혹시 어떻게 해결할 수 있을지 궁금합니다. 제 환경에 필요한 정보가 필요하시다면 언제든지 말씀드리겠습니다. 감사드립니다.
데이터로 딥러닝 적용해보기(당뇨병 환자 데이터) 강의에서 질문입니다. 해당 강의 11:00 부분에서 입출력 차원의 수를 각각 9와 1로 정해주었습니다. 이때, 모델에서의 계산 과정을 아래와 같이 이해하였습니다. 우선, 전체 학습 데이터는 (442, 9) 형태이고, 가중치는 (9, 1) 형태이므로 (442, 9) x (9, 1) -> (442, 1) 형태가 되고 여기에 (1) 의 형태를 가진 편향을 더해주면서 브로드캐스팅을 거쳐 (442, 1) + (1) -> (442, 1) 형태가 되는 것으로 이해하였습니다. 제가 생각한 계산 과정이 맞는지 궁금합니다! 감사합니다.
# 동일 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를 사용하는 이유가 궁금합니다. 출력했을때는 같은결과가 나오는데 말이죠..
섹션1의 마지막 강좌에서 저도 주피터 노트북에 똑같이 작성해보면서 공부하고있었는데요. the kernel appears to have died. it will restart automatically. 이런 문구가 뜨면서 이미지화가 안되면 어떻게 처리해야하나요? 구글링을 해보고 ~config에 들어가서 수정도 해봤는데 잘 안됩니다..
안녕하세요. 코드 공부하면서 궁금한 점이 생겨 질문남깁니다. 앞선 이론 강의에서 이해한 바로는 MSA과정에서 Attention*value를 통해 [배치수, 헤드수, 패치수+1, Dh] 차원의 결과들이 나오고 Linear Projection을 통해 [배치수, 패치수+1, D] 차원의 결과가 얻어지는 것으로 이해했습니다. attention = torch.softmax(q @ k / self.scale, dim=-1) x = self.dropout(attention) @ v x = x.permute(0,2,1,3).reshape(batch_size, -1, self.latent_vec_dim) 위와 같이 제공해주신 코드에는 이를 위한 Linear 과정이 따로 없는 것 같고 Attention*value 결과에 permute와 reshape를 해주었는데, 해당 과정이 이론에서 설명해주신 Linear 과정과 동일한 효과를 지니는 것일까요??
안녕하세요 강사님. 항상 좋은 강의 감사드립니다. 데이터 전처리에 대해서 2가지 궁금점이 있어서 질문드립니다. RandomCrop 이나 Flip 같은 전처리는 데이터 증강을 위해서도 사용된다고 알고있는데 해당 전처리를 적용해주면 원본 데이터가 변경되는 것인지, 혹은 원본 데이터는 유지되고 전처리가 적용된 이미지가 추가되는 것인지 궁금합니다. 전자에 해당된다면 데이터 갯수의 증강을 목적으로 사용하기 위해선 원본 이미지데이터셋을 따로 저장해두고 전처리된 데이터셋과 합쳐줘야 될까요?? RandomCrop에서 패딩을 넣어주는 이유가 정확하게 무엇인지 알고싶습니다.
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-차원 벡터 이말과 저위의 다른 누군가의 블로그(구글링)의 말에 혼동이 좀 생기는것 같습니다. 아마 강사님께서 차원의 대한 얘기가 혼동될 수 있다고 수차례 말씀하셨는데 이부분인가 싶기도합니다. 아니면 제가 잘못 생각하고 있는부분이 있는지 알려주시면 감사하겠습니다
답변 감사드립니다! 강의를 통해 Head 수에 따라 다양한 영역에 대한 Attention 이 가능하다고 이해했습니다. 이에 따른 추가적인 궁금한 부분이 있습니다. (아래 질문은 배치 사이즈를 배제하고 질문드립니다.) U msa 를 통한 Linear Projection 이전의 shape는 (N x D h x k) 이고, 이후의 shape는 (N x D)로 k가 사라져서 다양한 영역을 Attention 하고자 하는 의도가 사라지는 것 아닌지, 그렇다면 U msa 의 역할이 무엇인지 헷갈렸습니다. U msa 를 통한 Linear Projection을 진행한 후에도 다양한 영역을 Attention하고자 하는 Head의 특성이 반영되기에 상관이 없는건지 궁금합니다. U msa 도 무작위로 주어지고 학습을 통해 최적화되는 것이 맞을까요?