일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- object detaction
- GoogLeNet
- pytorch
- nn.Module
- 차원 감소
- skip-gram
- pythonForEverybody
- mlops
- 동시발생 행렬
- 선형대수
- dl
- 파이썬
- 상호 정보량
- Charlse Severance
- Gated Recurrent Unit
- deep learning
- 벡터 간 유사도
- CBOW
- Multi-Layer Perceptron
- f1-score
- convolution
- Python
- 1x1 Convolution
- Long Short Term Memory
- 시소러스
- docker
- excel
- Linear algebra
- py4e
- 분포 가설
- Today
- Total
목록Boostcamp - AI tech (15)
Tech & TIL
[CLASS] torch.nn.Module 공식문서에 따르면 torch.nn.Module 은 PyTorch의 모든 Neural Network의 Base Class이다. 모듈은 다른 모듈을 포함할 수 있고, 트리 구조로 형성할 수 있다. 공식문서에 예제를 코딩해보면서 감을 잡아보자. import torch.nn as nn import torch.nn.functional as F class MyModel(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Conv2d(1, 20, 5) self.conv2 = nn.Conv2d(20, 20, 5) def forward(self, x): x = F.relu(self.conv1..
Pytorch는 tensor가 모든 것의 기본 구성 요소이다. 하지만 공식 문서를 읽어보면 torch.tensor와 torch.Tensor가 있다. 둘의 차이점은 무엇일까? torch.Tensor Class int 입력시 float으로 변환 torch 데이터 입력시 입력 받은 데이터의 메모리 공간을 사용 list, numpy 데이터 입력 시 입력 받은 데이터를 복사하여 새롭게 torch.Tensor를 만든 후 사용 torch.tensor Function int 입력시 int 그대로 입력 받은 데이터를 새로운 메모리 공간으로 복사 후 사용
Python, PyTorch, TensorFlow 등 대중화된 언어, 라이브러리, 프레임워크들은 개발자들이 본인들이 만든 언어나 라이브러리에 대해 자세하게 작성해놓은 설명서가 존재한다. 하지만 그런 오픈소스 툴을 사용하는 개발자들은 구글링에 의존하는 경향이 크다고 생각한다. 물론 아직 개발을 시작한 지 얼마 되지 않았다면 영어로 된 공식문서를 읽는 것보단 구글링으로 블로그 글 등을 읽는 것이 더 도움이 된다. 빠르게 원하는 정보를 찾을 수 있기 때문이다. 하지만 숙련도가 조금 올라가면 블로그에서 다루는 것으로는 부족한 경우가 많아진다. 예를 들면 어떤 함수의 파라미터로 어떤 값을 전달해야 하는지는 블로그 글만 읽으면 내가 원하는 정보를 찾을 수 없다. 이때 필요한 것이 공식문서를 보는 것이라고 생각한다...
딥러닝을 할 때, 코드는 처음부터 다 짜야할까? 죽을수도있다.. 남이 만든걸 쓴다. 자료 많고 관리 잘 되고 표준이다. 딥러닝 프레임워크 리더는 PyTorch(facebook)와 TensorFlow(google) PyTorch와 TensorFlow의 가장 큰 차이는 Computational graph가 Static한지 Dynamic한지가 있다. Computational Graph란 연산의 과정을 그래프로 표현한 것. TensorFlow: Define and Run, 그래프를 먼저 정의하고 -> 실행시점에 데이터 feed, 실제 제품 생산 production 영역에선 장점이 있다. PyTorch: Define by Run, 실행하면서 그래프를 생성하는 방식, 디버깅할 때 이점을 가짐. 최근 파이토치 사용량..
앞서 배웠던 모델들은 이미지 데이터를 기반으로 예측하는 모델을 소개했었다. 이번에는 이미지 데이터가 아닌 Sequential 데이터를 input으로 가지는 모델을 공부해보자. 먼저 Sequential Data란 순서가 있는 데이터를 말한다. 대표적으로 글이나 말 등이 sequential data이다. Naive sequence model Recurrent Neural Network 앞의 정보가 뒤의 정보에 영향을 미쳐야 하기 때문에, 정보를 레이어 뒤쪽으로 전달하는 구조를 갖고 있는 네트워크를 RNN이라 한다. RNN은 짧은 sequential data에서는 잘 동작하지만 sequence가 길어지면 앞의 정보가 뒤에 레이어까지 전달되지 않는 문제가 발생한다. 이를 Short-term dependenc..
Semantic Segmentation : "의미론적인 분할" 정도로 해석할 수 있다. 이 과정에서 Fully Convolutional Network (fully connected layer 와는 다름!) 이 사용된다. Convolutionalization 과정을 통해 CNN 마지막 레이어에 있는 FC layer를 Convolution 연산으로 바꾸는 과정이다. Convolutionalization을 해도 그림에서 보이는 바와 같이 파라미터 수에는 변화가 없다. 그렇다면 왜 FC layer를 Convolution layer로 바꾸게 될까? 위 그림처럼 기존 FC layer를 Output Layer에 사용하게 되면 softmax나 sigmoid activation function을 통해 인풋 이미지가 "고..
1x1 Convolution에 대해 알아보기 전에 1x1 Convolution이 왜 사용되기 시작했는지 이해하기 위해 ILSVRC(ImageNet Large Scale Visual Recognition Challenge)라는 Challenge와 대회에서 수상을 했던 5개 Network 들의 주요 아이디어와 구조에 대해 알아보려고 한다. Network List AlexNet 최초로 Deep Learning을 이용하여 ILSVRC에서 수상 ReLU를 활성화 함수로 사용함. ReLU는 0보다 큰 x값에 대해서는 gradient를 1로 보존되기 때문에 Vanishing Gradient Problem을 해소해주었다. VGGNet 3x3 Convolution을 이용하여 Receptive field는 유지하면서 더 ..
AI를 공부해본 사람이라면 CNN이란 말을 많이 들어봤을 것이다. CNN이란 Convolutional Neural Network의 약자이고 이미지에 관련된 모델에 최적화된 네트워크이다. 본 글에서는 CNN에 사용되는 연산인 Convolution에 대해 다뤄보자. 위 그림은 크게 2 부분으로 나눌 수 있다. Convolution and Pooling layers: feature extraction Fully connected layer: decision making(e.g. classification) Convolution (합성곱) 필터를 이미지에 씌워서 모든 값을 곱하고, 더해서 하나의 아웃풋이 나온다. 필터에 값을 다르게 주면 다른 feature(특징들)를 추출할 수 있다. Padding은 왜 사용할..
딥러닝에서 사용되는 Optimization(최적화)은 왜 사용할까. 이번 강의를 듣기 전에는 Loss와 Optimization의 개념 조차 제대로 알지 못했다는 것을 알게 되었다. 기존에는 backpropagation을 하면서 어찌어찌 weight와 bias가 갱신되는구나! 정도로 알고 있었다. 지금부터 차근차근 최적화에 대해 알아보자. Optimization의 중요한 컨셉 Generalization Under Fitting / Over Fitting Cross-validation Bias-Variance tradeoff Bootstrapping Bagging and Boosting 기본적인 용어 설명을 먼저 하고 해결 방안을 제시하려고 한다. Generalization 일반적으로 학습을 시키게 되면, ..
Linear Neural Networks Linear Neural Network에서는 Data가 주어졌을 때, Data들을 가장 잘 표현할 수 있는 y = wx + b 식을 근사해야 하는 것이다. 모든 점들을 가깝게 지나가는 직선을 구하기 위해서는 기울기와 y절편을 구해야 한다. 먼저, 모든 데이터를 모델 식에 대입한 후 y_hat 벡터를 구한다. y_hat과 실제 output 값인 y의 차를 제곱해서 평균을 낸 값을 Loss로 정의하고 Loss를 줄이기 위해 Backpropagation 기법을 사용해서 Loss를 최소화한다. Loss를 최소화하기 위해서는 Loss를 각각 w와 b에 대해 편미분을 해줘서 편미분된 값을 활용해서 Loss function을 극소값을 찾아 데이터를 가장 잘 표현하는 y = w..