[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

TensorFlow 텐서플로우를 이용한 딥러닝

inu 2020. 7. 31. 16:12
반응형


데이터 준비하기

import tensorflow as tf
import numpy as np

data = np.random.sample((100,2))
labels = np.random.sample((100,1))

# numpy 기반 데이터 활용
dataset = tf.data.Dataset.from_tensor_slices((data,labels))
# batch는 총 32개
dataset = dataset.batch(32)
  • 특성 파라미터 2개를 가지고 종속값은 1개인 100개의 데이터를 생성하여 활용한다.
  • 예시를 위한 랜덤 데이터셋이기 때문에 사실 실질적인 관계성을 찾기란 불가능에 가깝다. (학습용으로만 사용)
  • batch 전 : <TensorSliceDataset shapes: ((2,), (1,)), types: (tf.float64, tf.float64)>
  • batch 후 : <BatchDataset shapes: ((None, 2), (None, 1)), types: (tf.float64, tf.float64)>

Keras

  • 딥러닝 모델을 만들기 위한 고수준 API 요소를 지원하는 모델 수준 라이브러리
  • tensorflow에 포함된 keras 외에도 keras는 multi-backend를 지원하기 때문에 keras 모델을 만들고 그를 관리, 학습시키는 백엔드를 자유롭게 선택할 수 있다.
  • 동일한 코드로 CPU와 GPU에서 실행할 수 있다.
  • 사용하기 쉬운 API를 가지고 있어 딥러닝 모델의 프로토타입을 빠르게 구현할 수 있다.
  • 합성곱 신경망(CNN), 순환신경망(RNN)도 지원하기 때문에 둘을 자유롭게 사용할 수 있다.
  • MIT 라이선스를 따라 상업적 용도로도 사용할 수 있다.

딥러닝 모델 생성 함수

tf.keras.models.Sequential()
  • 인공신경망 모델을 만들기 위한 함수
  • 레이어들을 순차적으로 쌓겠다는 뜻
tf.keras.layers.Dense(units, activation)
  • 신경망 모델 레이어 구성에 필요한 함수
  • 모든 퍼셉트론이 이전 레이어와 완전하게 연결되어 있다고 해서 'Dense'라고 한다.
  • units : 레이어 안 노드 갯수
  • activation : 적용할 활성화함수
import tensorflow as tf

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(10, input_dim=2, activation='sigmoid'),
    tf.keras.layers.Dense(10, activation='sigmoid'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])
  • 구축 예시
  • 첫 레이어는 2차원의 입력을 받는 10개의 노드가 시그모이드함수를 활성화함수로 사용한다.
  • 두번째 레이어는 10개의 노드가 시그모이드 함수를 활성화 함수로 사용한다.
  • 세번째 레이어는 1개의 노드가 시그모이드 함수를 활성화 함수로 사용한다.

딥러닝 모델 학습 및 평가

model.compile(loss='mean_squared_error', optimizer='SGD')
model.fit(dataset, epochs=100)

dataset_test = tf.data.Dataset.from_tensor_slices((data_test, labels_test))

dataset_test = dataset_test.batch(32)

model.evaluate(dataset_test)
predicted_labels_test = model.predict(data_test)
  • compile : 모델의 학습방법(손실함수 및 최적화방법)을 정의한다.
  • fit : 주어진 데이터셋으로 epochs 수만큼 학습을 반복하여 모델을 만든다.
  • from_tensor_slices : 슬라이싱된 데이터들을 하나의 데이터셋으로 묶는다.
  • batch : 해당 데이터의 배치를 설정한다.
  • evaluate : 주어진 데이터셋으로 모델을 평가한다.
  • predict : 주어진 데이터셋을 모델에 적용한 결과를 리턴한다.
반응형