본문 바로가기

AI

(144)
[PyTorch] torch.nn 제공함수 torch.nn Containers Convolution Layers Pooling layers Padding Layers Non-linear Activations (weighted sum, nonlinearity) Non-linear Activations (other) Normalization Layers Recurrent Layers Transformer Layers Linear Layers Dropout Layers Sparse Layers Distance Functions Loss Functions Vision Layers Shuffle Layers DataParallel Layers (multi-GPU, distributed) Utilities Quantized Functions Lazy Mod..
[PyTorch] CNN 설계 순서 1 - 3 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅 4. Dataset 및 DataLoader 할당 5. 네트워크 설계 6. train, validation, test 함수 정의 7. 모델 저장 함수 정의 8. 모델 생성 및 Loss function, Optimizer 정의 9. Training 10. 저장된 모델 불러오기 및 test 11. Transfer Learning 1. Package load 2. 데이터셋 다운로드 및 훈련, 검증, 테스트 데이터셋 구성 3. 하이퍼파라미터 세팅
[PyTorch] torch.nn 과 torch.nn.functional naming 에서도 알 수 있듯이 torch.nn.functional은 함수고 torch.nn은 클래스로 정의되어 있다. 그렇기 때문에 torch.nn으로 구현한 클래스의 경우에는 attribute를 활용해 state를 저장하고 활용할 수 있고 torch.nn.functional로 구현한 함수의 경우에는 인스턴스화 시킬 필요 없이 사용이 가능하다. torch.nn으로 구현한 클래스의 경우에는 attribute를 활용해 state를 저장하고 활용할 수 있고 torch.nn.functional로 구현한 함수의 경우에는 인스턴스화 시킬 필요 없이 사용이 가능하다. torch.nn은 클래스 객체로 정의하고 이후에 매개변수로 해당 계산을 진행하는 방식 torch.nn.functional은 함수로 그 자리에서 바로..
[PyTorch] nn.MaxPool2d(), nn.BatchNorm2d()
[PyTorch] nn.ReLU(), F.relu() nn.ReLU 와 F.relu는 ReLU를 객체로 선언해서 사용하느냐, 아니면 함수로 사용하느냐의 차이입니다. ReLU는 학습이 필요없기 때문에 개별적인 객체로 선언할 필요없이 함수를 사용해 적용할 수 있습니다. 이러한 내용은 이곳에서도 자세히 설명하고 있으니 참고하시기 바랍니다. class SimpleCNN(nn.Module): def __init__(self): super().__init__() # self.conv 구현 self.conv = nn.Sequential( ## 코드 시작 ## nn.Conv2d(3,32,kernel_size = 3) # conv_1 해당하는 층 nn.BatchNorm2d(32), # batch_norm_1 해당하는 층 nn.ReLU(), # ReLU_1 해당하는 층 nn..
[ML] Sigmoid, ReLu
[ML] Gradient Descent3 Gradient descent : 에러를 미분하여 weight를 업데이트 하는 방법. Back-propagation : Hidden node에서 에러를 미분하여 weight를 업데이트 하는 방법. Feedforward 그럼 본격적으로 input을 네트워크에 입력하여 출력을 얻는 과정을 살펴보겠습니다. input은 벡터로, weight는 행렬이므로 node의 출력은 행렬곱에 의해 구해집니다. 이렇게 구해진 node의 출력은 Activation 함수에 들어갑니다. 1-07. Multi Layer Perceptron 총정리 이제 1단원을 마무리하며 최종 정리 및 요약을 해보겠습니다. 이 포스트에 MLP(Multi Layer Perceptrons)의 내용을 모두 담았습니다. MLP를 훈련하기 위해서는 다음과 같..
[PyTorch] Intro, 외울 부분 모델을 학습시키기 전에, 어떤 loss를 쓸 것인지 learning rate은 몇으로 할 것인지 optimizer는 무엇으로 할 것인지 학습 횟수는 몇 번으로 할 것인지 PyTorch로 딥러닝하기 — Intro 거창하게 “딥러닝하기”라는 제목을 달았지만, 알다시피 우리에게 딥러닝을 한다는 것은 딥러닝 framework를 잘 사용하기와 같은 의미입니다. medium.com 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org
[ML] Softmax regression, Categorical Cross-Entropy Loss, Multi-class Classification 앞서 로지스틱 회귀를 통해 2개의 선택지 중에서 1개를 고르는 이진 분류(Binary Classification)를 풀어봤습니다. 이번 챕터에서는 3개 이상의 선택지 중에서 1개를 고르는 다중 클래스 분류 문제를 위한 소프트맥스 회귀(Softmax Regression)에 대해서 배웁니다. 다중 클래스 분류(Multi-class Classification) 이진 분류가 두 개의 선택지 중 하나를 고르는 문제였다면, 세 개 이상의 선택지 중 하나를 고르는 문제를 다중 클래스 분류라고 합니다. 아래의 문제는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이로부터 setosa, versicolor, virginica라는 3개의 품종 중 어떤 품종인지를 예측하는 문제로 전형적인 다중 클래스 분류 문제입니다. 위..
[ML] Epoch, iteration, batch size 머신 러닝 - epoch, batch size, iteration의 의미 - 출처 이번 포스팅의 주제는 텐서플로우나 케라스 등을 사용해서 모델을 만들어 보았으면 다들 아실 용어... blog.naver.com
[PyTorch] Dataset and DataLoader 사용법 Mini-batch 적용하기 위해 사용
[PyTorch] Multivariable Linear Regression 1. 데이터 정의 2. w 초기화 3. optimzer 정의 4. H 계산 5. Cost 계산(MSE) 6. Gradient Descent 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org
[PyTorch] Linear Regression 작성하기
[PyTorch] Tensor와 NumPy 텐서 조작(Tensor Manipulation)에 대해 알아본다. 핵심키워드 텐서(Tensor) 넘파이(NumPy) 텐서 조작(Tensor Manipulation) 1. Tensor는 배열의 집합이다. 2. 차원의 수는 Rank와 같은말이다. 3. 배열의 차원에따라 불리는 이름이 달라진다. PyTorch Tensor torch.tensor로 tensor를 만들어낸후 torch.** 의 함수로 각종 계산을 할 수 있다. TORCH.TENSOR.ADD Tensor.add(other, *, alpha=1) → Tensor Add a scalar or tensor to self tensor. If both alpha and other are specified, each element of other is sca..
[PyTorch] package 1. Package load먼저, 필요한 패키지들을 로드합니다. 각각의 패키지들의 대략적인 사용목적은 다음과 같습니다. torch: PyTorch 패키지를 불러옵니다. torchvision: PyTorch 에서 이미지 데이터 로드와 관련된 여러가지 편리한 함수들을 제공합니다. matplotlib.pyplot: 데이터 시각화를 위해 사용합니다. numpy: Scientific computing과 관련된 여러 편리한 기능들을 제공해주는 라이브러리입니다
[ML] Transfer learning1 한 명의 개발자가 있습니다. 이 개발자는 개, 고양이, 말, 소, 양을 구별할 수 있는 이미지 분류용 CNN 모델을 만들어야합니다. 보스가 시켰으니까요. 그래서 이 개발자는 수많은 개, 고양이, 말, 소, 양의 이미지를 인터넷상에서 많이 찾아왔습니다. 이 이미지들을 가지고 CNN 모델을 훈련시켰습니다. 수많은 테스트를 통해 최적의 모델 가중치(weights)를 찾아냈습니다. 즉, CNN 모델 내의 많은 가중치들이 개, 고양이, 말, 소, 양을 분류하기에 적합하도록 조정이 된 것이죠. 그런데 갑자기 보스가 개, 고양이, 말, 소, 양은 분류할 필요가 없어졌다고 합니다. 그것 대신 사슴, 코끼리, 토끼, 염소, 호랑이를 분류할 수 있는 모델을 만들어달라고 합니다. 최대한 빨리! 이 개발자는 너무나 짜증이 났..
[ML] pre-training , fine-tuning, Bottleneck feature Pre Training 이란? 선행학습(pre-training) 사전훈련(pre-training) 전처리과정(pre-training) 이라고도 하는데, 이는 Multi Layered Perceptron (MLP)에서 Weight와 Bias를 잘 초기화 시키는 방법이다. 이러한 Pre-training을 통해서 효과적으로 layer를 쌓아서 여러개의 hidden layer도 효율적으로 훈련 할 수 있다. 또한, 이는 unsupervised learning이 가능하기 때문에(물론 이러한 가중치와 편향 초기화가 끝나면 레이블 된 데이터로 supervised learning 해야 한다 -> fine tuning) 레이블 되지 않은 큰 데이터를 넣어 훈련 시킬 수 있다는 점을 장점으로 들 수 있다. 또한 Drop-..
[OD] R-CNN 2-stage Detector [Object Detection] 2. R-CNN : 딥러닝을 이용한 첫 2-stage Detector 저번 포스팅에서는 Object Detection의 전체적인 흐름에 대해서 알아보았습니다. [Object Detection] 1. Object Detection 논문 흐름 및 리뷰 Deep Learning 을 이용한 Object Detection의 최신 논문 동향의 흐름.. nuggy875.tistory.com ⊙ R-CNN (CVPR 2014) Rich feature hierarchies for accurate object detection and semantic segmentation 2012년 ILSVRC(ImageNet Large Scale Visual Recogni..
[OD] Object Detection 흐름 1-Stage Detector VS 2-stage Detector 그림4. 1-Stage Detector vs 2-stage Detector 논문 흐름 Deep Learning을 이용한 Object Detection은 크게 1-stage Detector와 2-stage Detector로 나눌 수 있습니다. 가운데 수평 화살표를 기준으로 위 쪽 논문들이 2-stage Detector 논문들이고, 아래 쪽 논문들이 1-stage Detector 논문들입니다. 분홍색 네모로 표시한 논문들을 중심으로 논문리뷰를 진행하면서 Object Detection의 논문 흐름을 알아볼 예정입니다. Object Detection문제는 앞에 말했듯이 물체의 위치를 찾는 Localization 문제와, 물체를 식별하는 Class..
[ML] Objective Function, Loss Function, Cost Function의 차이 학습을 통해 최적화시키려는 함수이다. 딥러닝에서는 일반적으로 학습을 통해 Cost를 최소화시키는 optimize작업을 수행을 하고 이때 Cost function을 Objective function이라 볼 수 있다. 하지만 Objective function에 꼭 Cost function만 있는 것은 아니다. 예로 MLE와 같이 학습을 통해 확률을 최대화하려는 function 역시 Objective function으로 정의되지만 이는 Cost, Loss function은 아니다. input(x)에 대한 예측값(y^)과 실제 label값(y) 사이의 오차를 계산하는 함수이다. 예로 linear regression의 경우 Loss function으로 최소제곱오차를 사용한다. 최소제곱오차 즉, 하나의 input ..
[ML] Gradient Descent2 - Optimizer 가장 기본이 되는 optimizer 알고리즘으로 경사를 따라 내려가면서 W를 update시킨다. Gradient descent notation GD를 사용하는 이유 왜 이렇게 기울기를 사용하여 step별로 update를 시키는것일까? 애초에 cost(W)식을 미분하여 0인 점을 찾으면 되는게 아닌가?? -> 내가 알고 있기로 두 가지 이유 때문에 closed form으로 해결하지 못한다고 알고 있다. 1. 대부분의 non-linear regression문제는 closed form solution이 존재하지 않다. 2. closed form solution이 존재해도 수많은 parameter가 있을때는 GD로 해결하는 것이 계산적으로도 더 효율적이다. full-batch가 아닌 mini batch로 학습을..
[ML] Perceptron3 - Multi Layer Perceptron XOR의 문제를 극복하지 못한 퍼셉트론은 다층 퍼셉트론(Multi Layer Perceptron)이 나타나면서 새로운 국면에 진입하게 된다. 다층 퍼셉트론이란 퍼셉트론을 여러개를 합친 것을 의미한다. 기존의 퍼셉트론은 위와 같은 input layer와 output layer의 2개로만 이루어진, 구조를 보여왔다. 이러한 구조는 XOR의 난제를 해결하지 못하지만, 퍼셉트론을 겹치면 얘기가 달라진다. 아래는 진리표로 XOR을 극복하는 것을 보여준다. XOR 진리표는 X1값과 X2값이 동일해야지, Y값이 1이 나오는 진리표라는 것을 잘 알고 있다. 그럼 위의 값을 AND로 합치면 어떻게 될까?? 우선, 위의 값을 좀 더 알기 쉽게 다시 표로 정리를 하자면 아래와 같이 볼 수 있다. X1과 X2를 NAND와 O..
[ML] Perceptron2 - 논리회로 1. 퍼셉트론을 이해하는, 논리회로 초창기 퍼셉트론은 단순한 분류 문제를 풀 수 있었습니다. 이걸 이해하기 위해서는 진리표를 확인해야 될 필요가 있습니다. 인간의 논리방식을 컴퓨터로 구현할 수 있다면 인공지능을 구현해 낼 수 있을 것이다. 라는 것이 당시의 생각이었고, 실제로 로센블래트는 분류하는 문제를 시연까지 할 정도로 사람들에게서 꿈과 같은 기술을 보여주게 되었습니다. 그 분류를 보여주는 것이 "진리표대로 작동하냐"인데 위 그림처럼 어떠한 값(input)이 2개 없다고 가정을 할 때 컴퓨터가 논리적으로 인식하는 방식이 다음과 같은 게이트로 구현하는 것입니다. 2. AND 게이트 AND는 모두 True 일 경우에 작동을 한다입니다. 한쪽이라도 False일 경우 작동을 멈추는데 퍼셉트론은 1일 경우 T..
[ML] Perceptron1 - 시작 1. 인공신경망과 딥러닝의 시작 "인공신경망(Neural Network)과 딥러닝(Deep Learning)은 퍼셉트론이 처음이다!"라고 말할 수 있을 것입니다. 많은 사람들이 "인공지능 = 신경망"이라고 생각하는 분들이 많은데 그 만큼 인간이 예측하기 힘든 부분을 신경망이 보여주기 때문에 인공지능이란 컴퓨터가 하는 행위(또는 생각)를 인간이 알아차리지 못하는 것으로 해석하는 분들이 많습니다. 2. 퍼셉트론(Perceptron) 동작 설명 퍼셉트론의 동작은 노드(뇌로 따지면 뉴런)의 가중치와 입력치를 곱한 것을 모두 합한 값이 임계치보다 크면 활성화되고, 1을 출력하며, 활성화되지 않으면 결과값으로 0을 출력하는 것입니다. 이를 그림으로 표현하면 아래와 같습니다. 갑자기 어려워지나요? 활성화라는 말과 노..
[ML] Loss Function 딥러닝 혹은 머신러닝은 컴퓨터가 가중치를 찾아가는 과정이다. 일단 아래 예를 보도록 해보자. 4 = 2a + b 6 = 3a + b 이와 같은 문제가 있다고 가정을 해보자, 사람들에게 a와 b에 들어가야 되는 답은 무엇인가? 라고 물어본다면 값을 대입해서 문제를 풀어본다던지 직관적으로 풀어본다던지 아니면 여러가지 공식을 써서 풀어본다던지 할 것이다. 2번과 3번과 같은 경우 컴퓨터에게 시키기에는 매우 힘든 작업이다. 반대로 값이 엄청 많을 경우 1번은 인간에게 힘들 수 있다. 물론 위의 문제는 너무 쉽기 때문에 값을 대충 대입해서도 충분히 맞출 것이다. 컴퓨터는 기본적으로 첫번째 방법인 값을 대입해서 문제를 풀어본다. 그래서 대입한 결과와 실제 정답간의 간격 즉, 차이를 최대한 줄이는 방향으로 값을 대입..
[ML] Gradient Descent1 gradient descent 방법의 직관적 의미 gradient descent 방법은 steepest descent 방법이라고도 불리는데, 함수 값이 낮아지는 방향으로 독립 변수 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다. steepest descent 방법은 다음과 같이 많이 비유되기도 한다. 앞이 보이지 않는 안개가 낀 산을 내려올 때는 모든 방향으로 산을 더듬어가며 산의 높이가 가장 낮아지는 방향으로 한 발씩 내딛어갈 수 있다. gradient descent의 목적과 사용 이유 gradient descent는 함수의 최소값을 찾는 문제에서 활용된다. 함수의 최소, 최댓값을 찾으려면 “미분계수가 0인 지점을 찾으면 되지 않느냐?”라고 물을 수 있는데,..
[ML] Activation1 - 종류 및 설명 앞서 Neural Network에 대해서 배워보았습니다. 다시 Neural Network를 살펴볼까요? 아래그림중에 f라고 표시된 activation function이 담당하고 있는 역할이 뭘까요? 본래 뉴런은 여러 경로를 통해 들어온 전기신호의 합이 일정치 이상이 되면 다음 뉴런으로 신호를 전달하게 됩니다. 앞서 언급한 "일정치 이상이 되는 기준"이 Activation function이 되는 것입니다. 예를 들어, 일정 값 이상이 되면 1을 출력하여 다음 뉴런에 값을 전달해 주고, 일정 값 이하가 되면 0을 출력하여 다음 뉴런에 값을 전달해주지 않게 합니다. 사실 굳이 출력 값을 activation function을 통해 0 or 1 값으로 범위를 한정하는 것이 얼마나 큰 의미를 갖고 있는지는 모르겠습..
[Kaggle] 공부하자 어떻게 공부하는게 좋을까요? 처음 시작할 때 많은 답답했던 부분이 이거였습니다. 사실 아직도 답은 못찾았고, 답은 없는 것 같습니다. 하지만 제가 주로 어떻게 하는지 알려드리자면, 일단 캐글 대회 참여해본다. 캐글 대회를 참여하고, 여러 분석한 커널들을 보면 다양한 최신 기술과 문제를 접근하는 방법을 배우게 됩니다. 모르는 코드는 print하면서 분석하고, 안보고 다시 적어본다. 모르는 코드는 어느정도 분석하는 시간을 가져야 합니다. 모르는 함수는 공식 API 문서를 본다. sklearn, tensorflow, pandas, keras.. 와같은 유명 패키지들은 공식 문서가 상당히 잘 되어있습니다. 해당 함수는 여러 파라미터를 가지고 있는데 하나하나 보면서 어떤 역할을 하는지 훑어만 봐도 나중에 활용할 ..
[pyTorch] 이미지 여는 방법 Pytorch에서 이미지 여는 방법(PIL, matplotlib, torchvision) Pytorch에서 이미지 여는 방법 목차 개요 단순히 어떤 폴더에 있는 이미지를 열고자 한다면 PIL을 사용하여 show 하는 방식이 가장 보편적인 방법일 것입니다. import PIL img = PIL.Image.open('./tree.jpg').. aigong.tistory.com
[pandas] min, max