# AI 이론/DeepLearning 15

케라스를 이용한 인공 신경망 만들기(하이퍼파라미터 튜닝)

신경망은 유연하다는 장점과 동시에 단점이 존재한다. 신경망의 유연성은 조정할 하이퍼파라미터가 많아진다는 단점이 존재한다. 아주 복잡한 네트워크 구조에서뿐만 아니라 간단한 다층 퍼셉트론에서도 조차 층의 개수, 층마다있는 뉴런의 개수, 각 층에서 사용하는 활성화 함수, 가중치 초기화 전략등 바꿀수 있는것이 매우많습니다.이때 어떤 하이퍼파라미터 조합이 문제의 최적인지 알수 있을까요? 이때 한가지 방법은 많은 하이퍼파라미터 조합을 시도해보고 어떤것이 검증 세트에서 가장 좋은 점수를 내는지 확인 해보는것입니다. GridSearchCV , RandomizedSearchCV를 통해 하이퍼 파라미터 공간을 탐색할 수 있습니다 이때, 케라스 모델을 사이킷런 추정기 처럼 보이도록 꾸며야 하는데, keras.wrappers..

케라스를 이용한 이미지 분류기 만들기

케라스란? 케라스는 모든 종류의 신경망을 손쉽게 만들고 훈련, 평가, 실행할 수 있는 고수준 딥러닝 API import tensorflow as tf import tensorflow import keras import numpy as np import pandas as pd import matplotlib.pyplot as plt 데이터셋을 적재(픽셀 강도는 0~255 바이트로 표현되어있습니다) (X_train_full, y_train_full), (X_test,y_test) = keras.datasets.mnist.load_data() X_train_full.shape # (60000,28,28) X_train_full.dtype # dtype('uint8') 전체 훈련 세트를 검증 세트와 더 작은 훈..

밑바닥부터 시작하는 딥러닝3 내용정리

Class(Variable, Function) 전체 코드를 가져오기에는 길기 때문에 일부 부분씩을 캡쳐하여 정리함 ●Variable Variable 클래스 생성(params : 데이터,변수명,기울기,함수,현재의 세대) data : isinstance 메서드를 통해서 cupy,ndarray 인스턴스만을 받음 name : 이후 Layer 계층에서의 params.__dict__[name]의 형태로 호출 grad : gradient 로, Backpropagation 시 기울기를 저장 creator : input Data ----- Function ------ output Data 에서 , output Data는 Function에서 만들어진 것처럼, 자기자신의 생성자를 저장(해당 함수를 저장함) 데코레이터(@)를..

밑바닥부터 딥러닝3 - 고차 미분

Tanh(x) - 하이퍼볼릭 탄젠트의 고차미분 y = tanh(x) = (exp(x)+ exp(-x)) / (exp(x) + exp(-x)) 함수를 예시로 살펴보자. 이 함수의 미분형태를 살펴보면 ,1-y^2 으로 표현이 가능하다는 것을 알 수 있다. 이 함수를 간단하게 구현해보면, 이와 같은 코드가 된다. class Tanh(Function): def forward(self,x) : y = np.tanh(x) return y def backward(self,gy) : y = self.outputs[0]() gx = gy * (1- y*y) return gx def tanh(x): return Tanh()(x) 이때, 1차 미분 계산 그래프를 그려보면, import numpy as np from deze..

합성곱 신경망(CNN)

합성곱 신경망이란? 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 자주 사용된다. 합성곱 계층의 구조 완전연결 계층(Affine) CNN 계층 CNN을 이용하여 구축했을때, 출력 가까이에서는 Affine 구조를 사용한다. 이전의 MNIST 숫자인식 데이터는 Flatten 을통해 3차원 데이터를 1차원 행렬(1x784)로 평탄화 하였지만, CNN 방식은 3차원 방식을 유지하여 연산이 가능하다. CNN에서는 입출력 데이터를 입력특징맵, 출력특징맵라고 부른다. 합성곱 연산의 경우, 입력과 필터에서 대응하는 원소끼리 곱한후 그총합을 구한다. (단일 곱셈-누산 방식이라고 함) 합성곱 연산시 패딩(Padding)도 가능한데, 이는 출력의 크기를 조정하는데 사용된다. np.pad(..

1 2