MLP 12
-
GoogLeNet의 구조 인셉션 모듈 Inception Module로 되어있다. 수용장의 다양한 특징을 추출하기 위해 NIIN의 구조를 확장하여 복수의 병렬적인 컨볼루션 층을 가진다. 가변적인 크기의 커널을 사용한다. NIN 구조 기존 컨볼루션 연산을 MLP 컨볼루션 연산으로 대체 - 커널 대신 비선형 함수를 활성함수로 포함하는 MLP를 사용하여 특징 추출에 유리하다 신경망의 미소신경망 Micro Neural Network가 주어진 수용장의 특징을 추상화 시도 전역 평균 풀링 Global Average Pooling 사용 이 NIN 개념을 확장한 신경망이 GoogLeNet 인셉션 모듈 마이크로 네트워크로 Mlpconv 대신 네종류의 컨볼루션 연산을 사용하여 다양한 특징을 추출한다. 1*1 컨볼루션을 사용..
-
VGGNet의 구조 작은 신경망이 좋다는 아이디어에서 시작 3*3의 작은 커널을 사용 신경망을 깊게 만든다 컨볼루션층 8 ~16개를 두어 AlexNet의 5개에 비해 2, 3배 깊어졌다. 16층의 VGGNet - 16 컨볼루션층 13층 완전신경층 3층 작은 커널의 장점 GoogLeNet 의 인셉션 모듈처럼 이후의 깊은 신경망 구조에 영향을 준다 큰 크기의 커널은 여러개의 작은 크기의 커널로 분해 될 수 있다. 이것을 통해 매개변수의 수는 줄어들고 신경망은 깊어지는 효과가 있다. VGGNet 에서는 적용실험을 했지만 최종 선택하지 않은 1*1 커널이라는 것도 있다. 가로 세로 크기가 1이지만 깊이는 원래의 것과 같다. 이것으로 인해 차원의 통합을 이뤄서 3차원을 2차원으로 축소 가능하다. 차원 축소를 거쳐..
-
AlexNet의 구조 컨볼루션층 5개와 완전연결층 3개로 이루어진 구조 8개 층에 290400 - 186624 - 64896 - 43264 - 4096 - 4096 - 1000개의 노드 배치 컨볼루션층은 200만개 FC층은 6500만개 가량의 매개변수 완전연결층에 30배 많은 매개변수가 있다. 이 이후에 등장한 CNN구조는 완전 연결층의 매개변수를 줄이는 방향으로 발전했다. 등장 당시에 GPU의 메모리 크기 제한으로 인해 GPU#1, GPU#2 로 분할하여 학습을 수행했다. 3번째 컨볼루션 층은 이 두개의 GPU 연산결과를 함께 사용한다 inter - GPU connections 컨볼루션층을 큰 보폭으로 다운샘플링한다. AlexNet은 ImageNet 이라는 대규모 사진 데이터와 GPU를 사용한 병렬처리..
-
from __future__ import absolute_import, division, print_function, unicode_literals import os import numpy as np import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.keras.utils import Sequence from tensorflow.keras.utils import to_categorical import tensorflow.keras as keras from keras import models from keras import layers from tensorflow.keras.optimizers import SGD %matplotl..
-
이전에 올렸던 Mnist MLP에서 정확도를 높일 수 있는 방법이 무엇인지 알아본다. 우선 optimizer의 경사하강법 함수의 보폭을 r = 0.1 에서 r = 0.01 로 변경해보았다. 정확도가 상승한 것을 확인할 수 있다. 테스트 정확도도 92% 손실값 0.265613 으로 향상된 것을 볼 수 있다. r을 더 줄여서 r = 0.001로 변경해보니 정확도에 큰 차이가 없었다. 속도를 위해 r = 0.01인 것이 낫다는 생각이 들었다. 다시 전체 코드를 원 상태로 만들고, 이번에는 Net class의 ReLU 함수를 두개의 레이어에 대해 적용했다. 원래는 self.fc1에 대한 ReLU 만 작성 되어 있었다. 트레이닝 셋에서 손실값이 0.017782 값으로 눈에 띄게 줄어들었다. 테스트에서는 97%의 ..
-
Mnist 데이터를 다운로드 받아서 불러온다. 배치 사이즈 만큼의 데이터를 iter하고 화면에 표시한다. 이미지를 세부 묘사하면 흑백의 차이를 숫자로 표현한 것이 보인다. 흑과 백이기 때문에 2차원 벡터로 표현 가능하다. MLP의 Net함수와 forward 순방향전파를 나타낸다. 간단하게 선형 연산과 ReLU 함수로 되어있다. 이부분을 조정해서 정확도를 높일 수 있을까? 손실함수와 최적함수이다. 손실함수는 크로스 엔트로피로 나타낸다. 최적함수는 경사하강법으로 보폭은 0.1로 진행한다. 실제로 훈련데이터를 훈련시켜본다. epoch 반복값은 10으로 정했다. 최적함수의 그레디언트 값을 0으로 초기화 한다. 모델 훈련 후 출력값을 받아서 손실함수를 계산한다. 역전파하여 최적함수를 실행시킨다. 모델에 반영한다...
-
import torch import torch.nn as nn try: from torch.hub import load_state_dict_from_url except ImportError: from torch.utils.model_zoo import load_url as load_state_dict_from_url from typing import Any __all__ = ['AlexNet', 'alexnet'] model_urls = { 'alexnet': 'https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth', } class AlexNet(nn.Module): def __init__(self, num_classes: int = 1000) ->..
-
컨볼루션 신경망 CNN 합성곱 신경망이라고도 한다. 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류이다. 영상 및 동영상 인식, 추천 시스템, 영상 분류, 의료 영상 분석 및 자연어 처리 등에 응용된다. 각 노드가 독립적으로 적용되기 때문에 병렬 분산구조이다. 합성곱 신경망은 정규화 된 버전의 다층 퍼셉트론 MLP 다층퍼셉트론 구조는 네트워크가 완전 연결된 경우 주어진 데이터에 과적합 된다. CNN은 정규화를 위해 데이터에서 계층적 패턴을 사용하고 복잡한 패턴을 간단하게 사용하여 정규화와 같은 효과를 낸다. DMLP는 학습이 느리고 과잉적합이 발생한다. CNN은 격자구조를 갖는 데이터에 적합하고, 컨볼루션 연산으로 특징을 추출한다. 컨볼루션 연산 Convolution 해당..
-
-