Softmax 함수를 tensorflow로 구현하기

Logit 함수가 정의되어 있다고 가정할 때, tensorflow를 이용해 softmax 함수를 구현하는 것은 간단하다.

def hypothesis(X):
    return tf.nn.softmax(logit_fn(X))


비용함수 정의하기

Cross-entropy를 이용한 비용함수는 다음과 같이 코딩할 수 있다.

def cost_fn(X, Y):
    logits = logit_fn(X)
    cost_i = tf.keras.losses.categorical_crossentropy(y_true=Y, y_pred=logits, from_logits=True)
    cost = tf.reduce_mean(cost_i)
    return cost

tf.keras.losses.categorical_crossentropy()만 사용하면 된다. 인자 중에 from_logits라는 것이 있는데, 출력 배열의 값이 문제에 맞게 normalize 되었는지 여부이다. 쉽게 생각해서, 계산 과정에 softmax를 사용하고 싶으면 from_logits = True로 해준다.

from_logits에 대한 자세한 설명


전체 코드 보러가기 1

전체 코드 보러가기 2



별도의 출처 표시가 있는 이미지를 제외한 모든 이미지는 강의자료에서 발췌하였음을 밝힙니다.

댓글남기기