DL

텐서플로우를 활용하여 신경망 구현하기 - 모델 학습

Haribo- 2022. 11. 25. 18:39

텐서플로우를 활용하여 신경망 구현하기 - 모델 학습

[실습2]에 이어서 이번 실습에서는 텐서플로우와 케라스(Keras)를 활용하여 신경망 모델을 학습해보겠습니다.


텐서플로우와 케라스를 이용해 신경망 모델을 학습하기 위한 함수/메서드

  • 학습 방법 설정complie() 메서드는 모델을 어떻게 학습할 지에 대해서 설정합니다. loss는 회귀에서는 일반적으로 MSE인 ‘mean_squared_error’, 분류에서는 ‘sparse_categorical_crossentropy’ 를 주로 사용합니다.
  • model.compile(loss='mean_squared_error', optimizer='adam') Copy
  • 학습 수행
    ```python
    model.fit(X, epochs=100, verbose=2)

```
X 데이터를 에포크를 100번으로 하여 학습합니다. verbose 인자는 학습 시, 화면에 출력되는 형태를 설정합니다. (0: 표기 없음, 1: 진행 바, 2: 에포크당 한 줄 출력)

 

지시사항

  1. Dataset으로 변환된 학습용 데이터를 바탕으로 모델의 학습을 수행합니다.
    • compile 메서드를 사용하여 최적화 모델을 설정합니다. loss는 ‘mean_squared_error’, optimizer는 ‘adam’으로 설정합니다.
    • fit 메서드를 사용하여 학습용 데이터를 학습합니다. epochs는 100으로 설정합니다.

 

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)


# keras를 활용하여 신경망 모델을 생성합니다.
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, input_shape=(3,)),
tf.keras.layers.Dense(1)
])


"""
1. 학습용 데이터를 바탕으로 모델의 학습을 수행합니다.
 
step1. compile 메서드를 사용하여 최적화 모델 설정합니다.
loss는 mean_squared_error, optimizer는 adam으로 설정합니다.
 
step2. fit 메서드를 사용하여 Dataset으로 변환된 학습용 데이터를 학습합니다.
epochs는 100으로 설정합니다.
"""
model.compile(loss=None, optimizer=None)
history = model.fit(train_ds, epochs=None, verbose=2)

 

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)


# keras를 활용하여 신경망 모델을 생성합니다.
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, input_shape=(3,)),
tf.keras.layers.Dense(1)
])


"""
1. 학습용 데이터를 바탕으로 모델의 학습을 수행합니다.
 
step1. compile 메서드를 사용하여 최적화 모델 설정합니다.
loss는 mean_squared_error, optimizer는 adam으로 설정합니다.
 
step2. fit 메서드를 사용하여 Dataset으로 변환된 학습용 데이터를 학습합니다.
epochs는 100으로 설정합니다.
"""
model.compile(loss='mean_squared_error', optimizer='adam')
history = model.fit(train_ds, epochs=100, verbose=2)