반응형
텐서플로로 신경망 구조를 만드는 방법은 크게 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 파이썬>을 참고했습니다.
반응형
'Data Science > Tensorflow & Pytorch' 카테고리의 다른 글
[Tensorflow] 회귀(Regression) 신경망 실습 (0) | 2022.01.07 |
---|---|
[Tensorflow] 분류(Classification) 신경망 실습 (0) | 2022.01.07 |
딥러닝 기본 용어 잡기(Introduction to Deep Learning) (0) | 2022.01.07 |
댓글