딥러닝 24

CNN으로 강아지,고양이 분류하기

이미지 형태 확인 # 라이브러리 불러오기 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from PIL import Image import glob # 이미지 불러오기 및 확인 img = Image.open("C:/pypy/dog.jpg") plt.imshow(img) # 이미지 resize 모습 확인 plt.imshow(img.resize([64,64])) # 이미지에 대한 색상 변경 data = img.convert("RGB") # 이미지 resize data = data.resize([64,64]) # 이미지를 숫자 어레이 형식으로 바꾸기 data = np.asarray(data) # 이미지 형태 바꾸기 data..

CNN 코딩 기초

CNN (Convolution Neural Network) 합성곱 신경망 convolution층과 pooling층을 포함하는 신경망 반복[conv층 -> pooling층] -> fully connected층 conv층 : 이미지의 특징을 추출하는 계층 pooling층 : 특징의 일부분만 취하는 계층 (max pooling을 가장 많이 씀) 합성곱 계산 conv층 (합성곱 계층) feature map을 만들고 그 feature map을 선명하게 해주는 층 image : 1,3,3,1 (이미지갯수, 높이, 너비, 색수) filter : 2,2,1,1 (높이,너비,색수,필터수) striide : 1x1 padding : valid 입력데이터 (3, 3) 1 2 3 4 5 6 7 8 9 filter (2, 2)..

신경망을 이용한 붓꽃 데이터 분류하기

단층 신경망 # 라이브러리 불러오기 import pandas as pd import tensorflow as tf import numpy as np from pandas import get_dummies from sklearn.model_selection import train_test_split tf.__version__ # 아이리스 데이터 불러오기 iris = pd.read_csv("C:/data/iris.csv") iris.head() # 독립변수, 종속변수 분리 x_data = iris.iloc[:,:-1] y_lables = iris.iloc[:,-1] y_lables.unique() # 수동으로 원핫 인코딩 lables = {"Iris-setosa":[1,0,0], "Iris-versicolo..

텐서플로를 이용한 신경망 구현

1. 선형회귀 예 입력(x) 출력(y) 1 2 2 4 3 6 4 8 5 10 6 12 Q. 7을 입력하면 출력값은? # 데이터 입력 x_data = [1,2,3,4,5,6] y_data = [2,4,6,8,10,12] # 변수 만들기 # seed=0 : 난수값 고정 # tf.random_normal : 정규분포에 해당하는 난수값 리턴 x = tf.placeholder(tf.float32) y = tf.placeholder(tf.float32) w = tf.Variable(tf.random_normal([1],seed=0),name='weight') b = tf.Variable(tf.random_normal([1],seed=0),name='bias') # hypothesis 정의 hypothesis = w..

CNN의 네트워크 종류

1. LeNet 20여년 전에 제안된 첫 CNN LeNet은 손글씨 숫자를 인식하는 네트워크로 1998년에 제안되었다. 위 그림과 같이 합성곱 계층과 풀링 계층을 반복하고, 마지막으로 완전연결 계층을 거치면서 결과를 출력한다. '현재의 CNN'과 달리 활성화 함수로 시그모이드를 사용하고 서브샘플링을 하여 중간 데이터의 크기가 작아진다. 2. AlexNet 2012년에 발표되어 딥러닝 열풍을 일으키는데 큰 여할을 했다. 합성곱 계층과 풀링 계층을 거듭하며 마지막으로 완전연결 계층을 거쳐 결과를 출력한다. 활성화 함수로 ReLU를 사용하였다. LRN이라는 국소적 정규화를 실시하는 계층을 이용한다. 드롭아웃을 사용한다. 3. VGGNet 합성곱 계층과 풀링 계층으로 구성되는 기본적인 CNN이다. 다만 비중있는..

간단한 신경망으로 MNIST 정확도 99% 만들기

MNIST 데이터란? 인공지능 연구의 권위자 LeCun교수가 만든 데이터셋 숫자 0~9까지의 손글씨 이미지의 집합이다. 학습데이터 60,000개(확인용데이터 5000개), 테스트데이터 10,000개로 구성 되어 있다. 사이즈는 28x28의 크기를 가진다. 이미지의 값은 0 또는 1이다 (흑,백) MNIST 이미지 2차원 행렬에서 1차원으로 쭈욱 핀 형태로 784개의 열을 가진 1차원 행렬로 변환되어 저장이 되어 있다. mnist.train.image : 784개의 열로 구성된 이미지가 55000개가 저장이 되어 있다. mnist.train.image : 텐서플로우의 행렬을 나타내는 shape의 형태로는 shape=[55000,784] 이 된다. mnist.test.image : 784개의 열로 구성된 숫..

강화학습 - 슈퍼마리오 DQN 기본 코드

기존에 가지고 있던 슈퍼마리오 강화학습 코드가 안돌아가서 해결법을 찾다가 발견한 것들 1. pytorch 설치 CPU 버전 !pip install torch==0.3.1 # 사용 X conda install pytorch-cpu torchvision-cpu -c pytorch # 사용 O !pip install torch 2. BinarySpaceToDiscreteSpaceEnv 대신 JoypadSpace를 임포트 해야한다. from nes_py.wrappers import BinarySpaceToDiscreteSpaceEnv # 사용 X from nes_py.wrappers import JoypadSpace # 사용 O 3. 슈퍼마리오 DQN 기본 코드 from nes_py.wrappers import..

CNN(Convolution Neural Network)의 기본

1. CNN의 개요 https://truman.tistory.com/170 딥러닝의 종류와 개념 1. CNN Convolutional Neural Network, 합성곱 신경망 인간의 시신경 구조를 모방한 기술 1989년 LeCun이 발표한 논문에서 처음 소개가 되었으며, 필기체 zip code 인식을 위한 프로젝트를 통해 개발이 되었다... truman.tistory.com CNN은 합성곱(Convolution) 연산을 사용하는 ANN(Artificial Neural Network)의 한 종류이다. Convolution을 사용하면 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다. 대표적인 CNN으로는 LeNet(1998)과 AlexNet(2012)이 있다. VGG, GoogLeNe..

딥러닝의 종류와 개념

1. CNN Convolutional Neural Network, 합성곱 신경망 인간의 시신경 구조를 모방한 기술 1989년 LeCun이 발표한 논문에서 처음 소개가 되었으며, 필기체 zip code 인식을 위한 프로젝트를 통해 개발이 되었다. 2012년 Image Net 대회에서 기존의 모든 알고리즘을 압도하는 성능으로 1등을 차지함. 이미지를 인식하기위해 패턴을 찾는데 특히 유용하다. 데이터를 직접 학습하고 패턴을 사용해 이미지를 분류한다. 자율주행자동차, 얼굴인식과 같은 객체인식이나 computer vision이 필요한 분야에 많이 사용되고 있다. 이미지의 공간정보를 유지한채 학습을 하게하는 모델 2. RNN Recurrent Neural Network, 순환신경망 순차적 정보가 담긴 데이터에서 규..

데이터 학습 과정 정리

하이퍼 파라미터 설정 1. 초기값 : 가중치(W), 바이어스(b) 가중치의 초기값을 0으로 default를 주고 시작하면 올바른 학습을 기대하기 어렵다. 오차역전파에서 가중치의 값이 똑같이 갱신되기 때문 np.random.randn()을 사용하여 무작위로 가중치를 설정하는 것을 볼 수 있다. 2. epoch (에폭) 신경망에서 전체 데이터에 대해서 순전파와 역전파가 끝난 상태 1 epoch = 전체 데이터셋을 1회 학습 epoch 횟수가 지나치면 과적합(Overfitting)이 발생할 수 있다. 3. step (스탭) 1 step = 가중치와 바이어스를 1회 업데이트 한 것 4. batch size (배치 크기) 1 step에 사용한 데이터의 수 몇 개의 데이터 단위로 매개변수를 업데이트 하는지 5. i..

반응형