본문 바로가기
IT 프로그래밍 관련/딥러닝

분류 문제에서, 컴파일에 사용할 loss함수 선택 방법과 코드

by 지나는행인 2021. 3. 2.
728x90

두 가지로 분류 하는 모델을 모델링하고 컴파일 할때 loss함수는 

 

'binary_crossentropy'로 적용 시킨다.   

 

 

 

ex) 개와 고양이의 사진 중, 하나의 사진을 가지고 테스트를 하게 되면, 

 

그 테스트용 사진이 개인지 고양이 인지 분류한다.

 

model = tf.keras.models.Sequential([

        Conv2D( 32, ( 3,3 ), activation='relu', input_shape= ( 3003003 ) ),

        MaxPool2D( 22 ),

        Conv2D( 64, ( 3,3 ), activation='relu' ),

        MaxPool2D( 22 ),

        Conv2D( 128, ( 3,3 ), activation='relu' ),

        MaxPool2D( 22 ),

        Flatten(),

        Dense( 512, activation='relu'),

        Dense( 1, activation='sigmoid' )

])

 

model.compile( optimizer = RMSprop( lr=0.001 ), loss = 'binary_crossentropy', metrics = ['accuracy'])

 

 

위의 코드는 모델링하고 컴파일 부분의 loss 함수를 'binary_crossentropy' 로 적용하였다.

 

 

 

## 세 가지 이상으로 분류를 할 때는 loss 함수에 'sparse_categorical_crossentropy' 로 적용

    (훈련시키려는 대상이 정수일때 )

    ex) y_train 

       [6]

 

## 세 가지 이상으로 분류를 할 때 가져오려는 값이 OneHotEncoding 되어 있는 상황이라면,

    컴파일의 loss함수는 'categorical_crossentropy'

ex) y_train  

       [0,0,0,0,0,0,1,0]

댓글