기초 노트 53

파이토치 에러 핸들링 - TypeError: cross_entropy_loss(): argument 'input' (position 1) must be Tensor, not NoneType

loss = nn.CrossEntropyLoss()(preds, label.to(device)) 에러 메세지 : TypeError: cross_entropy_loss(): argument 'input' (position 1) must be Tensor, not NoneType 해당 에러 메세지는 학습 루프안의 loss를 계산하는 과정에서 발생하였고,사유는 첫번째 포지션 인자인 preds가 NoneType이라는 에러였지만, 원인은 모델의 forward 메서드에서 리턴값이 누락된 경우였다.

파이토치 텐서의 기본 구성요소

파이토치(Pytorch)의 기본 데이터 구조인 텐서(Tensor)는 데이터와 gradient계산을 위한 메타데이터를 포함하고 있다. 기본적으로 텐서는 다음과 같은 주요 속성을 갖는다. 1. data 텐서의 주요 구성 요소로, 실제 수치 정보를 저장한다. 데이터는 다양한 차원을 가질 수 있으며, 신경망에서는 주로 벡터, 행렬 또는 더 높은 차원의 배열로 사용한다. 2. dtype 텐서에 저장된 데이터 타입을 정의한다. 예를 들어, 'torch.float32'; 'torch.int64'등이 있다. 3. device 텐서가 어떤 장치(CPU,GPU)에 할당되어 있는지를 나타낸다. 4. requires_grad 이 속성이 'True'로 설정되어 있으면, 텐서에 대한 모든 연산은 자동 미분 시스템에 의해서 추적되..

EECS 498-007 Lecture 8: CNN Architectures 정리

이번시간에는 CNN의 아키텍쳐에 대해서 다뤄본다. 게시물 작성 시점인 2024년 기준으로 강의 내용에서 소개된 모델 이외에도, 더욱 효율적이고 정확도면에서 우수한 모델들이 다수 발표되었고(2019년, EfficientNet) 2020년 VisionTransformer의 발표 이후에는 ViT계열 모델들이 매우 대두되던 시기가 있었다. (2020년; DETR, 2021년 ; SwinTransformer) 하지만 Transformer계열 모델들은 리소스가 크고 학습양을 상당히 필요로 하기 때문에, 이후 다시 CNN계열로 Transformer계열을 잡을 수 있지 않을까? 하는 생각으로 CNN계열 모델이 다시금 연구되었다. (ConvNext, ResNest) 하지만 모든 CNN계열의 아키텍쳐들은 이전 모델들의 아..

EECS 498-007 Lecture 07 : Convolutional Networks 정리

오늘 강의의 주제는 이미지 처리 분야의 가장 메이저한 모델인 Convolutional Networks이다. 지난 강에서는 Backpropagation 알고리즘에 대해 배웠다. 복잡한 네트워크 구조의 gradient를 전부 계산하는 것이 아니라 저장된 forward pass의 정보를 이용하여 local한 연산을 통해 gradient를 계산하는 방식이다. 또한 이러한 방식을 활용하는 방법 중, Modular API방식으로 활용하는 것을 배웠다. 다음으로는 Linear Classifier과 신경망의 Fully connected Linear Classifier에 대해서 배웠다. 많은 함수를 표현할 수 있는 강력한 성질이 있지만, 두 모델의 구조 모두 2D의 공간적 구조를 고려하지 못하고 input RGB이미지를..

EECS 498-007 Lecture 06 : Backpropagation 정리

이번 강은 Backprogation(역전파)에 대해서 다룬다. 지금까지의 내용은 Linear Classification의 한계를 넘어서는 NeuralNet의 특징, Space Warping과 Activation fucntion을 추가하여 비선형적인 표현을 할 수 있는 것, Universal Approximation에 대한 개념과 신경망의 Loss surface는 다양한 형태의 Non-convex function으로 존재함에도 불구하고 optimization되어 실전에서 어떻게든 작동한다고 배웠다. 또한 위와 같은 loss function으로 현재의 가중치에 대한 happiness or unhapiniess를 표현하고, SGD와 같은 알고리즘으로 가중치를 업데이트 한다고 배웠다. 여기서 문제는 gradie..