7JeY world

[Keras] ANN (인공신경망) - 1 본문

AI/Deep Learning

[Keras] ANN (인공신경망) - 1

7JeY 2019. 1. 18. 15:13
반응형
ann

ANN

생체 신경망 구조와 유사하게 은닉 계층을 포함하는 인공 신경망 기술

 

필기체를 구분하는 분류 ANN 구현

 

  • 1단계 : 케라스 패키지 2가지 모듈을 불러온다
from keras import layers, models

layer: 각 계층을 만드는 모듈

models : layer들을 연결하여 신경망 모델을 만든 후 컴파일, 학습시키는 역할

 

  • 2단계 : 분류 ANN에 필요한 파라미터를 설정

    Nin, Nh, number_of_class, Nout

    입력 계층의 노드 수, 은닉 계층의 노드 수, 출력 값일 가질 클래스 수, 출력 노드 수

 

실제 정의는 main()안에서 진행 / 전역변수로 지정할 필요가 없다면 파라미터들을 시작 함수인 main()에 넣어준다.

 

  • 3단계 : 모델링

    분산방식 함수형 구현

x= layers.Input(shape=(Nin,))

입력 계층은 layers.Input()함수로 지정

원소를 Nin개 가지는 입력 신호 벡터는 입력 노드에 따른 계층의 shape을(Nin,)으로 지정한다.

 

은닉 계층의 노드

h = layers.Activation('relu')(layers.Dense(Nh)(x)

layers.Dense()로 지정

노드가 Nh개인 경우 은닉 계층을 layers.Dense(Nh)로 구성한다.

x를 입력으로 받아들이도록 layers.Dense(Nh)(x)로 지정한다.

 

Layers.Dense(Nh)는 layers.Dense 객체의 인스턴스이다.

객체를 함수처럼 사용할 수 있기 때문에 ()를 사용해 호출이 가능하다.

python은 객체를 만든 후에 함수처럼 사용할 수 있다.

def call(self,...)라는 멤버함수 사용하면 된다.

clasee Dense:
def __call__(self, x):
  print(x)
>>> Dense()(1)
1

 

 

활성화 함수를 layers.Activation('relu')로 지정한다.

ReLU는 최근에 많이 사용되는 활성화 함수로 f(x) = max(x,0)과 같다.

입력 벡터인 x를 완전히 연결된 은닉 계층의 노드들로 모두 보내고 은닉 계층의 각 노드들은 ReLU로 활성화 처리 한 뒤에 ​ 다음 계층으로 내보낸다.

 

마지막은 출력 계층

y = layers.Activation('softmax')(layers.Dense(Nout)(h))

다중 클래스 분류를 ANN으로 구현하고 있으므로 출력 노드 수는 클래스 수(Nout)로 지정한다.

이때 출력 노드에 입력되는 정보는 은닉 노드의 출력값이다.

 

모델은 입력과 출력을 지정하여 만든다. 중간 계층들은 앞서 정의한 계층 간 신호의 연결 관계대로 자동 설정된다.

여기서 Model은 딥러닝 구조가 여러가지 딥러닝에 필요한 함수와 연계되도록 만드는 역할을 한다.

model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

loss : 손실 함수를 지정하는 아규먼트

optimizer : 최적화 함수를 지정하는 아규먼트

metrix : 학습이나 예측이 진행될 때 성능 검증을 위해 정확도를 측정하라는 의미(손실 뿐만 아니라)

 

  • 현재까지 작성된 코드

from keras import layers, models


def ANN_models_func(Nin, Nh, Nout):
    
    x = layers.Input(shape=(Nin,))
    h = layers.Activation('relu')(layers.Dense(Nh)(x))
    y = layers.Activation('softmax')(layers.Dense(Nout)(h))
    
    model = models.Model(x, y)
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
    
    return model

 

케라스는 인공지능 모델을 연쇄 방식, 분산 방식으로 구현 할 수 있다.

 

  1. 분산 모델링 함수형
  2. 연쇄 모델링 함수형
  3. 분산 모델링 객체지향형
  4. 연쇄 모델링 객체지향형

 

다음은 분산방식 모델링 함수 구현을 하겠다!

 

 

반응형

'AI > Deep Learning' 카테고리의 다른 글

Deep Learning - Keras 시작 !  (0) 2019.01.17
Comments