[태그:] <span>ANN</span>

안녕하세요. 언제나휴일입니다.

이제 Keras를 이용한 딥러닝 시작할게요.

딥러닝 강의는 언제나 인공 신경망(ANN, Artifical Neural Netrowk)이 무엇인지 설명하는 것에서부터 출발하는 것 같네요.

인간의 뇌에 있는 뉴럴 네트워크를 추상화한 인공 신경망이 ANN이죠.

인공 신경망(ANN)에 관한 내용은 위키백과를 참고하세요.

 

인공신경망 [Grosser.ca 제공 이미지 공유]

DNN은 심층 신경망을 뜻하며 Deep Neural Network의 약자입니다.

결국 입력층(Input layer)과 출력층(Ouput layer) 사이에 있는 은닉층(Hidden lalyer)가 여러 개의 층으로 이루어진 것을 말합니다.

딥러닝도 이처럼 심화 계층을 학습해 나간다는 의미에서 딥러닝입니다.

Keras를 이용한 딥러닝은 다음과 같은 절차를 일반적으로 거칩니다.

데이터 로딩-데이터 정제화-모델 생성-모델에 계층 추가-모델 컴파일- 학습 – 예측 및 평가

다음은 Keras를 이용한 손글씨 인식에 관한 소스 코드입니다.

#데이터 로딩
import numpy as np 
from keras import datasets              
data_train,data_test = datasets.mnist.load_data()
image_train, label_train = data_train
image_test, label_test = data_test

#데이터 정제화
from keras.utils import np_utils
label_train2 = np_utils.to_categorical(label_train)
print(label_test[0])
label_test2 = np_utils.to_categorical(label_test)
print(label_test2[0])
length,weight,height = image_train.shape
image_train2 = image_train.reshape(-1,weight*height)
image_test2 = image_test.reshape(-1,weight*height)
print("image_test2의 구조:",image_test2.shape)

print(image_train2[0][200:210])
image_train2 = image_train2 / 255.0
print(image_train2[0][200:210])
image_test2 = image_test2 / 255.0
#모델 생성
from keras import layers,models
model = models.Sequential()
#모델에 계층 추가 
model.add(layers.Dense(100,activation="relu",input_shape=(784,)))
model.add(layers.Dense(28,activation='relu'))
model.add(layers.Dense(10,activation='softmax'))          
#모델 컴파일
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])#스텝 방향Momentum, 크기Adgrad-RMSProp
#모델 학습
model.fit(image_train2,label_train2,epochs=15)
#모델 예측 및 평가
score = model.evaluate(image_test2,label_test2)
print("score:",score)

 

머신러닝/딥러닝