티스토리 뷰
0. 들어가면서
우선 신경망에 대한 기초도 모른다면 아래의 블러그를 참고하고 다시오자.
케라스의 전형적인 작업 흐름은 다음과 같다.
- 입력 텐서와 타깃 텐서로 이루어진 훈련 데이터를 정의하자.
- 입력과 타깃을 매핑하는 층으로 이루어진 모델(네트워크)를 정의하자.
- 손실 함수, 옵티마이저, 모니터링하기 위한 측정 지표를 선택하고 학습하자.
- 훈련 데이터에 대해 모델의 fit() 메서드를 반복적으로 호출하자.
1. 모델 정의방법
모델을 정의하는 방법은 두 가지로 Sequential 클래스와 함수형 API를 사용한다.
Sequential 클래서 : 구조인 층을 순서대로 쌓아 올린 네트워크로 가장 자주 사용한다.
함수형 API : 비순환 유향 그래프로 완전하게 임의의 구조를 만들 수 있다.
우리는 간단히 모델이 구현되는 큰 흐름만 볼 예정이므로 Sequential 클래스를 사용하여 모델을 만들자.
from keras import models
from keras import laters
model = models.Sequential()
model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax'))
같은 모델을 함수형 API를 사용하면 아래와 같다.
input_tensor = layers.Input(shape=(784,))
x = layers.Dense(32, activation='relu')(input_tensor)
output_tensor = layers.Dense(10, activation='softmax')(x)
model = models.Model(inputs=input_tensor, outputs=output_tensor)
함수형 API를 사용하면 모델이 처리할 데이터 텐서를 만들고 마치 함수처럼 이 텐서에 층을 적용한다.
주의할 점은 모델 구조가 정의된 후에는 Sequential 모델을 사용했는지와 함수형 API를 사용했는지는 상관이 없어진다. 즉, 그 이후 단계는 동일하다.
2. 학습 과정 설정
학습 과정은 컴파일 단계에서 진행된다. 여기서는 모델이 사용할 옵티마이저와 손실함수, 훈련을 모니터링하는데 픽요한 측정 지표를 지정해 준다.
from keras import optimizers
model.compile(optimizer=optimizers.RMSprop(lr=0.001),
loss='mse',
metrics=['accuracy'])
위의 예가 손실 함수를 사용하는 가장 흔한 경우의 예라고 볼 수 있다.
3. 학습
마지막으로 입력 데이터의 넘파이 배열을 모델의 fit()매서드에 전달하면서 학습 과정이 이루어진다.
model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)
여기까지 코드는 이해가 되지 않더라도 큰 틀을 이해 할 수 있을 것이다. 구글링을 해보면 사실 sequential 모델과 함수형 API의 차이를 몰라 헷갈리는 경우가 많다. 이 둘의 차이만이라도 꼭 이해하면 된다.
'인공지능(Artificial Intelligence) > Tensorflow' 카테고리의 다른 글
[tensorflow] 데이터 사이즈 변경 기초 (0) | 2021.02.20 |
---|---|
[tensorflow] 모델 만들기_기초 (0) | 2020.11.14 |
[tensorflow] 손실함수 정리 (0) | 2020.10.29 |
tensorflow_tf.keras.layers.Dense (0) | 2020.09.18 |
아무것도 모르고 시작하는 TensorFlow_1 (0) | 2020.07.31 |
- Total
- Today
- Yesterday
- pandas
- BFS
- NextJS
- Deque
- read_csv
- next.config.js
- 자연어처리
- react autoFocus
- JavaScript
- useHistory 안됨
- Queue
- django
- UserCreationForm
- typescript
- error:0308010C:digital envelope routines::unsupported
- mongoDB
- react
- Python
- useState
- Express
- DFS
- login
- vuejs
- logout
- 자료구조
- TensorFlow
- Vue
- nodejs
- 클라우데라
- nextjs autoFocus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |