TensorFlow
TensorFlow - 여러 클래스로 분류할 때, 아웃풋 노드에서 사용하는 Activation Funtion 과 Loss의 종류
Cong_S
2022. 6. 13. 15:17
분류의 문제에 있어 Activation Function과 컴파일 할 때 loss는 문제에 따라 몇 가지 차이점이 존재한다.
먼저 분류했을 때 결과가 두 가지로 나뉠 때 사용하는 Activation Funtion 과 loss의 종류는 다음과 같다.
model.add( Dense( units= 1, activation= 'sigmoid' ) )
결과값은 0 또는 1이면 충분하므로 sigmoid를 이용해
0에 가까운 쪽은 값이 0
1에 가까운 쪽은 값이 1로 예측하기에 용이하다.
model.compile(optimizer='adam', loss = 'binary_crossentropy', metrics= ['accuracy'])
loss는 binary_crossentropy 를 이용하면 된다.
다음은 3가지 이상의 결과를 도출해낼 때 사용하는 Activation Funtion 과 Loss의 종류에 대해 알아보자.
model.add(tf.keras.layers.Dense(10, 'softmax' ))
분류의 경우의 수가 2가지 일때와는 다르게 3가지 이상부터는
softmax를 사용한다.
model.compile('adam', loss= 'sparse_categorical_crossentropy', metrics=['accuracy'])
loss 의 경우에는 또 다시 2가지 경우로 나뉘는데
첫번째는 y값이 레이블 인코딩으로 되어있는 경우 : sparse_categorical_crossentropy (ex : 1 , 6, 3, 4, 7 ...)
두번째는 y의 값이 원핫 인코딩으로 되어있는 경우 : categorical_crossentropy (ex : 1 0 0
0 0 1 ...)
를 사용하면 된다.