반응형
데이터 준비하기
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 : 주어진 데이터셋을 모델에 적용한 결과를 리턴한다.
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
Keras Embedding (워드 임베딩) (0) | 2020.07.31 |
---|---|
Keras Tokenizer (단어 인덱스 부여 및 원-핫 인코딩) (0) | 2020.07.31 |
TensorFlow 텐서 초기화 (0) | 2020.07.31 |
[scikit-learn 라이브러리] KMeans (K-Means) (0) | 2020.07.31 |
[scikit-learn 라이브러리] PCA를 사용한 차원축소 (0) | 2020.07.31 |