묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결딥러닝 이론 + PyTorch 실무 완전 정복
섹션12 실습코드 의 initialization 각각 적용 코드 문의
실습코드에서 초기화 각각 적용 부분 self._init_weights(self.fc_layers[0], mode='kaiming') self._init_weights(self.fc_layers[1], mode='kaiming') self._init_weights(self.fc_layers[2], mode='xavier') 모델을 읽어보면 NeuralNetwork( (fc_layers): Sequential( (0): Linear(in_features=784, out_features=196, bias=True) (1): ReLU() (2): Linear(in_features=196, out_features=49, bias=True) (3): ReLU() (4): Linear(in_features=49, out_features=10, bias=True) (5): Sigmoid() ) ) 0, 2,4 번에 초기화를 적용해야 실제 작동을 할 것 같습니다.
-
미해결딥러닝 이론 + PyTorch 실무 완전 정복
오타
안녕하세요.7:13에 맨 오른쪽아래에 XN(t+1)에서 M인데 N으로 오타가 있습니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
혹시 이론강의 자료도 공유가 가능하실까요?
안녕하세요 변정현 강사님.강의 잘 듣고있습니다. 실습 수업 때는 주피터 노트북 형식으로 강의자료 다운로드가 가능한데, 혹시 이론강의 자료도 공유가 가능하신가해서 질문을 드립니다. 내용만 볼수있으면 pdf형식이나 워터마크가 추가되어도 크게 문제가 없을것 같은데, 혹시 가능하실까요?
-
미해결딥러닝 이론 + PyTorch 실무 완전 정복
[sec. 2-8 실습] 배치사이즈의 선택
안녕하세요. 좋은 강의 잘 듣고 있습니다. 반복해서 여러 차례 들을 수 있어서 정말 좋습니다. 조금 기초적인 질문인가 싶은데요. 아래 이미지에서 질문이 있습니다.맨 아래 셀의 코드 x = torch.rand(8, 128)에서 배치 사이즈를 8로 정하는 이유를 질문드립니다.in feature가 128이고, out feature가 64라서 대략 2의 배수가 선택된 것인가 추측합니다. 다음 시리즈 기다리고 있습니다. 감사합니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
[section 14 / [실습] 직접 만든 CNN 모델과 ResNet, VGGNet을 활용한 CV 프로젝트] transforms.Normalize 질문
cifar10 데이터셋에 대하여 Normalize를 적용하는 이유가 궁금합니다.mean과 std 리스트에 들어있는 값의 의미가 무엇인가요?이미 ToTensor()로 0~1값의 스케일링 된 데이터를, 표준화까지 적용하여 평균0, 분산 1로 만드는데 장점이 있는건가요??normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) def get_dataloaders(): train_data = torchvision.datasets.CIFAR10( root="../.cache", train=True, download=True, transform=transforms.Compose([torchvision.transforms.ToTensor(), normalize]), )
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
[section 14 / VGGNet ] receptive filed 질문
안녕하세요. 항상 강의 잘 듣고 있습니다. 감사합니다. 다름이 아니라 section14. vggnet 강의를 듣던 중 receptive field에 대해 의문이 생겨 질문하게 되었습니다. 교안 82페이지에 (3,3) conv layer 2개를 쌓으면 receptive field가 (5,5)가 아니라 왜 (7,7)이 되는 것인지 궁금합니다.(1,1) 픽셀이 직전 에 (3,3)에서 왔고, (3,3)은 직전 (5,5)에서 convolution 연산으로 오는 것이 아닌가요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
[섹션3, PyTorch로 구현해보는 Loss Function] 분류task loss함수 질문입니다.
좋은 강의 정말 잘 듣고있습니다. 항상 감사합니다.다름이 아니라 nn.BCEloss 나 nn.BCEWithLogitsLoss에서 이름에 B(Binary)가 들어가 이진분류 문제에 사용하는 함수인가 싶었는데, 실습 강의때 처럼 다중 분류 문제의 loss 함수로 사용해도 괜찮은 것인지 여쭙고 싶습니다.generate_onehot 함수는 클래스가 10개인 다중분류 데이터를 생성합니다.batch_size = 16 n_class=10 def generate_onehot(batch_size=16, n_class=10): pred = torch.nn.Softmax()(torch.rand(batch_size, n_class)) gt = torch.rand(batch_size, n_class) gt = torch.tensor(gt == torch.max(gt, dim=1, keepdim=True)[0]).float() # convert to onehot return pred, gt
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
GoogleNet Inception 모듈
안녕하세요 선생님강의 잘 보고 있습니다구글넷의 인셉션 모듈 설명 중에 MAX pooling이 포함되어 있는데요보통 max pooling은 인풋의 사이즈를 줄이는 것으로 알고 있는데 그러면 다른 컨볼루션이 통과된 아웃풋과 사이즈가 달라져서 concat이 안되는 거 아닌가요?아니면 여기에 포함된 컨볼루션들은 max pooling과 같은 stride를 같는 걸까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Batch Normalization 효과
안녕하세요 선생님강의 정말 잘 보고 있고요제 많은 질문들에도 너무 성심성의껏 답변 달아주셔서 감사합니다 ㅎㅎBatchNorm이 설계된 의도는 internal covariate shift를 해결하기 위해 제안되었다는 것은 이해했습니다.하지만 실제로는 그렇지 않고 optimization surface를 매끄럽게 해서 학습이 잘된다라고 설명하신 것까지 들었습니다.제가 이해한 바로는 활성화 함수에 들어가는 입력의 분포를 조정해서 학습이 잘되는 위치? 분포를 학습하는 것으로 이해했는데요(sigmoid로 예시를 든다면 더 이상 업데이트가 되지 않아도 될 정도라면 기울기가 saturate되는 부분으로 혹은 업데이트가 많이 되어야 한다면 0부근으로 이동시키는 등의) 정확히 어떤 원인에 의해 surface가 매끄러워지는 효과를 가지게 되는 것인지 궁금합니다..!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Layer Norm이 언어모델에 적합한 이유
안녕하세요 선생님강의 정말 잘 보고 있습니다.Layer Normalization을 보는 중에 입력 데이터를 Normalization하는 것을 통해 scale이나 shift에 robust하게 되는 것까진 이해했습니다.이런 효과가 왜 이미지보다 언어 모델에 더욱 효과적인지 이유를 알 수 있을까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
9-2 fully connected NN
여기서 네트워크를 구성할 때 맨 마지막에 sigmoid를 태운 후에 마지막에 또 Softmax를 태우는데, 이렇게 할 거면 애초부터 네트워크의 마지막단을 sigmoid가 아닌 softmax를 태우면 되는 거 아닌가요?왜 sigmoid를 거친 후에 softmax를 태워야 하는 것인지 알 수 있을까요?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Mini-batch Gradient Descent computation time 질문
안녕하세요 선생님시간과 체력이 더 많았으면 좋겠다는 생각이 들 정도로 강의를 너무 재밌게 보고 있습니다Mini batch Gradient Descent 이론 편에서 Mini batch Size에 비례하지 않는다는 설명을 보았는데요.물론 병렬처리를 하기 때문에 정비례하지 않겠지만 GPU에 올릴 수 있는 최대 데이터양이 100개라고 가정한다면 미니배치를 200, 300, .. 이런 식으로 키운다면 미니 배치크기에 따라 비례하는 것은 맞지 않나요?혹시 제가 잘못 생각하고 있다면 말씀해주세요 감사합니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Huber Loss에 대한 질문
안녕하세요?: 선생님강의 정말 재밌게 잘 보고 있습니다.강의 내용 중에 Huber Loss는 전미분이 한 번밖에 되지 않는다는 단점을 언급해주셨는데요Gradient Descent를 적용할 때는 weight에 대한 편미분만 적용하기 때문에 역전파 시에는 무관한 거 아닐까요?따라서 Epoch를 2 이상의 숫자를 두고 학습하는데 전혀 지장이 없는 거 아닌가요?왜 전미분이 1번만 된다는 게 단점이 된다는 것인지 이해가 잘 되지 않습니다.
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Batch size 가 극단적으로 작은 경우 (예를들어 batch_size =1) Normalization 적용 방안
강사님, 본 강의 들으면서 정말 많은 도움을 받고 있습니다. normalization 에 대해서 이렇게 상세하게 설명해 준 온라인 강의는 본 적이 없네요 🙂 CNN 을 기반으로 하되 모델 파라메터도 엄청 크고, 데이터셋 크기도 매우 큰 경우, 예를 들어 3D Unet 을 구성해서 3차원의 고해상도 (256 x 256 x 256) 이미지를 input 과 output 으로 사용하다보니 GPU 메모리를 너무 많이 잡아먹어서 batch 에 복수의 샘플을 적용하지 못하고 하나의 batch 에 단일 샘플만 적용하는 경우를 study 하고 있는데요, BatchNormalization 을 적용했을 경우 오히려 학습이 잘 안 되는 것 같아서 Normalization layer 를 야예 제거한 후 모델 학습 진행 중이었습니다. 경험적으로 했던 것이었지만 본 강의를 보다 보니 그 이유가 조금 이해가 되기도 하는데요, 이와 같이 batch size 가 극단적으로 작은 경우에 Normalization layer 을 적용 안하는게 더 좋을 수 있나요? 혹은 설명해 주신 table 에 나와 있는 것 처럼 Group Normalization layer 나 Instance Normalization을 적용하는 것이 개념적으로 더 나은 방법일까요? (설명을 들었을 때는 Group Normalization 을 적용하는 것이 필요한 상황으로 이해가 되기도 하는데.. 제가 이해한 것이 맞는지 확인 부탁드립니다 ^^;) 그리고 Group Normalization 에서 "Group" 의 의미가 무엇인지 잘 와닿지가 않아서 (Batch 나 Width, Height, Sample Number 이외에 그룹이 될 수 있는 경우가 무엇인지가 잘 이해가 되지 않습니다.) ... 요 부분에 대해서 좀 더 설명해 주시면 감사드리겠습니다!
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
Normalization 질문
안녕하세요, 수업 설명 감사드립니다. cnn이 아닌 일반적인 fully connected NN (multi-layer perceptron) 에서 혹시 batch/instance/layer normalization 을 어떻게 계산하는지 설명을 부탁드려도 될까요 (그림으로 표현해 주시면 더 좋을거 같습니다.)MLP에서라면 small c가 특정 hidden layer의 node/unit에 대응될거 같고 large C가 layer 전체를 표현할거 같은데, H,W는 무엇인지 이해가 잘 되지 않습니다. 특히, MLP에서 instance normalization의 평균/분산을 구할 수가 있을지 궁금합니다 (단일 값 하나일거 같은데..)강사님께서는 어떻게 생각하시는지 알려주시면 감사드리며, 제가 잘못 이해한 부분이 있으면 코멘트 부탁드리겠습니다. 추가로 하나만 더 질문드리고 싶습니다.강의안에서 x_nhwc는 벡터일까요? 아니면 scalar 값일까요? Normalization의 경우에 feature간 (예, 인풋 변수) 평균도 구하는지, element-wise로 구하는지 궁금해서 여쭤봅니다.바쁘실텐데 시간내주셔서 미리 감사드립니다.
-
해결됨딥러닝 이론 + 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 실무 완전 정복
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 하여도 되는건지 궁금합니다.
-
해결됨딥러닝 이론 + 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로 보이기 때문입니다)혹시 제가 잘못 이해하고 있는 부분이 있다면, 정정해주시면 감사드리겠습니다!