본문 바로가기
Data Science/Tensorflow & Pytorch

[Tensorflow] Tensorflow로 신경망 구조 만들기

by 루크 Luke 2022. 1. 7.
반응형

텐서플로로 신경망 구조를 만드는 방법은 크게 2가지가 있다.

1. 시퀀스 API 사용

2. 함수형 API 사용

 

시퀀스 API 사용

  - 텐서플로에서 제공하는 Sequential()을 통해 딥러닝 구조의 층을 쌓을 수 있음

  - Sequential() 선언 후, model.add() 함수를 입력함으로써 실제로 층을 쌓음

  - Sequential() : 신경망 모형을 선언, 생성하는 역할

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
model.add(Dense(100, activation='relu', input_shape=(32, 32, 1))
model.add(Dense(50, activation='relu'))
model.add(Dense(5, activation='softmax))
model.summary()

  - 우선 모형을 생성하고(Sequential())

  - add 메소드를 통해 층을 쌓고(add())

  - 모형을 확인할 수 있는 구조(Summary())

  - 처음에는 직관적이라서, 시퀀스형이 좋아보이지만, 함수형을 권장

  - 아래와 같이 곧바로 선언해도 됨

model = tf.keras.Sequential([
    tf.keras.layers.Dense(32, activation='relu', input_shape=(4,)),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(3, activation='softmax')
])

 

함수형 API 사용

from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model

input_layer = Input(shape=(32, 32, 1))
x = Dense(units=100, activation='relu')(input_layer)
x = Dense(units=50, activation='relu')(x)
output_layer = Dense(units=5, activation='softmax')(x)
model2 = Model(input_layer, output_layer)
model2.summary()

 

모델링 수행 및 저장

  - 딥러닝 구조를 만들었다면, compile() 함수를 통해 컴파일을 진행해야 함

  - 아래 예시는 optimizer로 adam, loss로 scc, metrics로 acc를 지정

model.compile(optimizer='adam',
             loss='sparse_categorical_crossentropy',
             metrics=['accuracy'])

  - 모델을 매번 학습시키면 시간 소요가 많기에, 저장하는 습관을 들이면 좋음 - save()

  - h5는 hdf5로, Hierarchical Data Format version 5, 대용량 데이터를 저장하기 위한 포맷

model.save('cnn_model.h5')

  - 모델을 불러올 때는 load_model()

from tensorflow.keras.models import load_model
cnn_model2 = load_model('cnn_model.h5')

 

※ 장철원 저자의 <선형대수와 통계학으로 배우는 머신러닝 with 파이썬>을 참고했습니다.

반응형

댓글