model.add(tf.keras.layers.Flatten())
#Flatten은 데이터를 평평하게 일렬로 정렬한 형태의 데이터를 위한 가공이다.
tf.keras.layers.Flatten은 입력의 형태를 1차원으로 변환한다.
입력의 형태가 (None, 28, 28)일 때, (None, 784)로 변환된다.
< 실습 >
이미지의 가로 세로를 전부 일렬로 만드는 작업이 flatten 이다.
모델을 만들어 보자.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten()) #Flatten은 데이터를 평평하게 일렬로 정렬한 형태의 데이터를 위한 가공이다.
model.add(tf.keras.layers.Dense(128,'relu'))
28 * 28
training_images[0].shape
model.add(tf.keras.layers.Dense(10, 'softmax'))
꼭 암기하기 !
# 2개 분류의 문제일때는, 로스 펑션을 binary_crossentropy
# 3개 이상의 분류의 문제일때는? 2가지 경우가있다.
# 첫번째경우, y값이 레이블 인코딩으로 되어있는 경우 : 이땐 sparse_categorical_crossentropy 사용
# 두번째 경우, y값이 원핫 인코딩으로 되어있는경우: categorical_crossentropy 사용
training_labels
model.compile('adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(training_images, training_labels, epochs= 5)
accuracy 가 약 90% 라는 뜻. 5 epochs 라 금방 끝났다.
학습에 사용하지 않는, 테스트 데이터를 통해서, 얼마나 정확도되 나오는지 확인해 본다.
model.evaluate(test_images, test_labels)
out :
313/313 [==============================] - 1s 2ms/step - loss: 0.3564 - accuracy: 0.8723
[0.3563694357872009, 0.8723000288009644]
'Deep Learning' 카테고리의 다른 글
Deep Learning : 분류의 문제에서 loss 셋팅하는 방법 (0) | 2022.06.13 |
---|---|
Deep Learning : 여러 클래스로 분류할때, 아웃풋노드에서 사용하는액티베이션함수 소프트맥스 (0) | 2022.06.13 |
Deep Learning : EarlyStopping 라이브러리 사용법 (0) | 2022.06.13 |
Deep Learning : validation data란 무엇이고, code에서 사용하는 방법 / 파라미터 validation_split (0) | 2022.06.13 |
Deep Learning : learning rate를 옵티마이저에서 셋팅하는 코드 / 실습문제 풀기 (0) | 2022.06.13 |