텐서플로우를 활용하여 신경망 구현하기 - 모델 구현
[실습1]에 이어서 이번 실습에서는 텐서플로우와 케라스(Keras)를 활용하여 신경망 모델을 구현해보겠습니다.
케라스는 텐서플로우 내의 신경망 모델 설계와 훈련을 위한 API 입니다. 케라스는 연속적으로(Sequential) 레이어(Layer)들을 쌓아가며 모델을 생성하고, 사이킷런과 같이 한 줄의 코드로 간단하게 학습 방법 설정, 학습, 평가를 진행할 수 있습니다.
텐서플로우와 케라스를 이용해 신경망 모델을 만들기 위한 함수/메서드
- 모델 설정
tf.keras.models.Sequential()
Copy
: 연속적으로 층을 쌓아 만드는 Sequential 모델을 위한 함수
- Dense 레이어
tf.keras.layers.Dense(units)
Copy
: 신경망 모델의 레이어를 구성하는데 필요한 keras 함수
- units: 레이어 안의 노드 수
예를 들어, 5개의 변수에 따른 label 을 예측하는 회귀 분석 신경망을 구현하고 싶다면 아래와 같이 구현할 수 있습니다.
tf.keras.models.Sequential([
tf.keras.layers.Dense(10, input_shape=(5,)),
tf.keras.layers.Dense(1)
])
Copy
input_shape 인자에는 (입력하는 변수의 개수, )로 입력합니다. 또한 회귀 분석이기에 마지막 레이어의 유닛 수는 1개로 설정합니다.
input_dim인자를 사용하면 아래와 같이 표현할 수 있습니다.
tf.keras.models.Sequential([
tf.keras.layers.Dense(10, input_dim=5),
tf.keras.layers.Dense(1)
])
Copy
지시사항
- tf.keras.models.Sequential()을 활용하여 신경망 모델을 생성합니다.
- 자유롭게 layers를 쌓고 마지막 layers는 노드 수를 1개로 설정합니다.
import tensorflow as tf
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
np.random.seed(100)
tf.random.set_seed(100)
# 데이터를 DataFrame 형태로 불러 옵니다.
df = pd.read_csv("data/Advertising.csv")
# DataFrame 데이터 샘플 5개를 출력합니다.
print('원본 데이터 샘플 :')
print(df.head(),'\n')
# 의미없는 변수는 삭제합니다.
df = df.drop(columns=['Unnamed: 0'])
X = df.drop(columns=['Sales'])
Y = df['Sales']
# 학습용 테스트용 데이터로 분리합니다.
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.3)
# Dataset 형태로 변환합니다.
train_ds = tf.data.Dataset.from_tensor_slices((train_X.values, train_Y))
train_ds = train_ds.shuffle(len(train_X)).batch(batch_size=5)
"""
1. tf.keras.models.Sequential()를 활용하여 신경망 모델을 생성합니다.
자유롭게 layers를 쌓고 마지막 layers는 노드 수를 1개로 설정합니다.
"""
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, input_shape=(3,)),
tf.keras.layers.Dense(1)
])
print(model.summary())
원본 데이터 샘플 :
Unnamed: 0 FB TV Newspaper Sales
0 1 230.1 37.8 69.2 22.1
1 2 44.5 39.3 45.1 10.4
2 3 17.2 45.9 69.3 9.3
3 4 151.5 41.3 58.5 18.5
4 5 180.8 10.8 58.4 12.9
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 40
_________________________________________________________________
dense_1 (Dense) (None, 1) 11
=================================================================
Total params: 51
Trainable params: 51
Non-trainable params: 0
_________________________________________________________________
None
Unnamed: 0 FB TV Newspaper Sales
0 1 230.1 37.8 69.2 22.1
1 2 44.5 39.3 45.1 10.4
2 3 17.2 45.9 69.3 9.3
3 4 151.5 41.3 58.5 18.5
4 5 180.8 10.8 58.4 12.9
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 10) 40
_________________________________________________________________
dense_1 (Dense) (None, 1) 11
=================================================================
Total params: 51
Trainable params: 51
Non-trainable params: 0
_________________________________________________________________
None
'DL' 카테고리의 다른 글
텐서플로우 학습 모델만들기 layer구성 및 평가 및 예측 (0) | 2022.11.25 |
---|---|
텐서플로우를 활용하여 신경망 구현하기 - 모델 학습 (0) | 2022.11.25 |
텐서플로우를 활용하여 신경망 구현하기 - 데이터 전 처리 (0) | 2022.11.24 |
퍼셉트론의 알맞은 가중치 찾기 (0) | 2022.11.24 |
DIY 퍼셉트론 만들기 (0) | 2022.11.24 |