일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CNN
- 파이썬문법
- python
- 가상환경구축
- 가상환경
- pip install
- Deep learning
- 파이썬
- vision transformer
- docker
- 딥러닝
- torch.nn
- DeepLearning
- AI
- rnn
- LSTM
- ubuntu
- ViT
- 머신러닝
- torch.nn.Module
- objectdetection
- wsl2
- Torchvision
- tensorflow
- python 문법
- pychram
- __call__
- Anaconda
- __init__
- pytorch
- Today
- Total
목록CNN (5)
인공지능을 좋아하는 곧미남
안녕하세요. 오늘은 학습 시 weight가 nan 값이 출력되는 문제에 관해 알아보겠습니다. 저도 처음에 왜 그런지 정말 궁금해서 많이 찾아봤는데 역시 stack overflow에 잘 설명이 되어있었습니다. 오늘의 내용을 아래와 같습니다. - INDEX - 1. Nan value 발생 현상 및 이유 2. Nan value 발생 시 대처 방법 3. 고찰 1. Nan value 발생 현상 및 이유 1) Gradient blow up: Gradient의 값이 너무 커서 weight update 시 발산되어 weight가 Nan으로 됨. 2) Bad learning rate policy and params: learning rate 자체가 inf나 nan이 될 경우. 3) Faulty loss function:..

오늘은 pytorch에서 제공하는 torchvision.models.resnet50 기준으로 ResNet의 구현내용을 알아보겠습니다. 오늘의 내용은 아래 목차와 같습니다. 1. ResNet Contribution 2. ResNet Layer 구성 3. 구현 코드 설명 1. ResNet Contribution 우선, ResNet은 Input Image를 Deep한 Layer 구성을 통해 Feature를 찾는 역할을 합니다. 하지만 Layer 구성이 깊어지면 깊어질수록 좋지 않은 결과를 얻게 되었습니다. 이런 내용이 발생하는 이유는 학습 신경망에서 Back Propagation을 할때 weight에 활성화 함수의 편미분을 구해 그 값을 곱해주는 연산과정이 있습니다. 이때 첫 번째 layer..

Convolution Operation에 관해 수식만 본다면, 직관적으로 이해하기가 어려울 수 있다. 그래서, 나는 Image Pixel Matrix를 간단하게 시각화하여 블로그에 기록을 남긴다. 우선, Convolution Operation은 Kernel 크기 만큼의 Map(Weight를 가지는)과 Input image나 feature를 합성곱 연산을 통해 이미지의 특징을 추출하는 과정입니다. Kernel 이란? n x m 크기의 행렬로 Input으로 들어오는 Image나 Feature(Width X Height 크기)를 왼쪽 상단부터 오른쪽 하단까지 순차적으로 Window Sliding 하는것인데요. - Kernel 크기의 겹쳐지는 부분의 weight = K - Image pixel이나 Feature..
오늘은 torch.nn.Module 패키지를 활용한 Deep Neural Network를 구축해보고, 내가 얻은 인사이트를 공유하겠습니다. 1. 저는 torch.nn.Module 패키지로 보통 클래스를 생성하는데, nn.Module을 기반클래스로 상속하여 파생클래스인 Model(CNN)을 생성하여 구축합니다. (여기선 CNN이라는 Class 명을 사용했습니다.) import torch import torch.nn as nn class CNN(nn.Module): def __init__(self, img_size, num_class): super(CNN, self).__init__() self.conv = nn.Sequential( nn.Conv2d(3, 32, 3, 1, 1), nn.LeakyReLU(0..

(Input Size – Pool Size + 2*Padding)/Stride + 1 Conv Output data size = (Input Size – Filtersize + 2*Padding)/Stride + 1 1. conv layer1을 거친 L1 shape의 사이즈는 상기 공식에 따라서 (P = Padding="SAME") (28-3 + 2*P)/1 + 1 = 28 즉, P = 1이되어 입력과 출력의 사이즈를 같게 해준다. Pooling Output data size = (Input Size – Kernelsize + 2*Padding)/Stride + 1 2. MaxPooling Layer를 거친 L1 shape은 상기 공식에 따라서 (28-2 + 2*P)/2 + 1 = 14 P = 0이 된다..