ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Keras] 케라스란?
    💫 Computer Science/Python & AI Framework 2019. 12. 3. 16:56

    ● 케라스란?

     

     

     

    케라스(Keras)는 파이썬으로 작성된 오픈 소스 신경망 라이브러리 입니다.

     

    텐서플로우, MXNet, Deeplearning4j 등을 백엔드로 사용하여 인공지능 코딩을 할 수 있게 해줍니다.

    딥 신경망을 빠르고 쉽게 코딩을 가능할 수 있게 해주고 최소한의 모듈 방식으로 확장 가능성에 초점을 둔 라이브러리 입니다. 사용하기 쉬운 고차원 딥러닝을 케라스 API를 통해 코딩을 할 수 있는데요, 유저 친화적인 API를 제공하여 쉽게 딥러닝 모델을 만들어 낼 수 있어서 인공지능 코딩에 현재 가장 많이 사용되고 있는 라이브러리 입니다.

     

     

     

     

     

    ● 케라스의 구조

     

     

    텐서플로우, CNTK, Theano, MXNet등을 백엔드로 하여 각 라이브러리를 쉽게 사용할 수 있게 하면서 안정화도 시켜주는 역할을 케라스가 합니다.

     

     

     

     

    ● 케라스의 장점

     

    • 사용자 친화적

    케라스는 일반 사용 사례에 최적화된 간단하고 일관적인 인터페이스를 제공합니다. 이는 사용자 오류에 대해 명확하고 실용적인 피드백을 제공합니다.

     

    • 모듈화 및 구성 가능성

    케라스 모델은 구성 요소의 설정에 의해 연결되는 식으로 거의 제한없이 만들 수 있습니다.

     

    • 쉬운 확장

    연구를 위한 새로운 아이디어를 표현하기 위해 사용자 정의 설계 블록을 작성하면, 새로운 층(layers), 지표(metrics), 손실 함수를 생성하고 최첨단 모델을 개발할 수 있습니다.

     

     

     

     

    ● 케라스 사용하기

     

    케라스의 가장 핵심적인 데이터 구조는 바로 모델입니다. 케라스에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있습니다. 다중 출력이 필요하는 등 좀 더 복잡한 모델을 구성하려면 케라스 함수 API를 사용하면 됩니다. 케라스로 딥러닝 모델을 만들 때는 다음과 같은 순서로 작성합니다. 다른 딥러닝 라이브러리와 비슷한 순서이지만 훨씬 직관적이고 간결합니다.

    1. 데이터셋 생성하기
      • 원본 데이터를 불러오거나 시뮬레이션을 통해 데이터를 생성합니다.
      • 데이터로부터 훈련셋, 검증셋, 시험셋을 생성합니다.
      • 이 때 딥러닝 모델의 학습 및 평가를 할 수 있도록 포맷 변환을 합니다.
    2. 모델 구성하기
      • 시퀀스 모델을 생성한 뒤 필요한 레이어를 추가하여 구성합니다.
      • 좀 더 복잡한 모델이 필요할 때는 케라스 함수 API를 사용합니다.
    3. 모델 학습과정 설정하기
      • 학습하기 전에 학습에 대한 설정을 수행합니다.
      • 손실 함수 및 최적화 방법을 정의합니다.
      • 케라스에서는 compile() 함수를 사용합니다.
    4. 모델 학습시키기
      • 훈련셋을 이용하여 구성한 모델로 학습시킵니다.
      • 케라스에서는 fit() 함수를 사용합니다.
    5. 학습과정 살펴보기
      • 모델 학습 시 훈련셋, 검증셋의 손실 및 정확도를 측정합니다.
      • 반복횟수에 따른 손실 및 정확도 추이를 보면서 학습 상황을 판단합니다.
    6. 모델 평가하기
      • 준비된 시험셋으로 학습한 모델을 평가합니다.
      • 케라스에서는 evaluate() 함수를 사용합니다.
    7. 모델 사용하기
      • 임의의 입력으로 모델의 출력을 얻습니다.
      • 케라스에서는 predict() 함수를 사용합니다.
     

     

     

     

    ● 사용 예시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    # 0. 사용할 패키지 불러오기
    from keras.utils import np_utils
    from keras.datasets import mnist
    from keras.models import Sequential
    from keras.layers import Dense, Activation
     
    # 1. 데이터셋 생성하기
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train = x_train.reshape(60000784).astype('float32'/ 255.0
    x_test = x_test.reshape(10000784).astype('float32'/ 255.0
    y_train = np_utils.to_categorical(y_train)
    y_test = np_utils.to_categorical(y_test)
     
    # 2. 모델 구성하기
    model = Sequential()
    model.add(Dense(units=64, input_dim=28*28, activation='relu'))
    model.add(Dense(units=10, activation='softmax'))
     
    # 3. 모델 학습과정 설정하기
    model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
     
    # 4. 모델 학습시키기
    hist = model.fit(x_train, y_train, epochs=5, batch_size=32)
     
    # 5. 학습과정 살펴보기
    print('## training loss and acc ##')
    print(hist.history['loss'])
    print(hist.history['acc'])
     
    # 6. 모델 평가하기
    loss_and_metrics = model.evaluate(x_test, y_test, batch_size=32)
    print('## evaluation loss and_metrics ##')
    print(loss_and_metrics)
     
    # 7. 모델 사용하기
    xhat = x_test[0:1]
    yhat = model.predict(xhat)
    print('## yhat ##')
    print(yhat)
    cs

     

     

     

    케라스 입문 튜토리얼 세트 바로가기

    댓글

Designed by Tistory.