본문 바로가기
인공지능/Deep Learning

[Deep Learning] activation Softmax

by coding_su 2022. 12. 28.

📝딥러닝 여러개의 값 중에서 가장 큰 값을 선택하는 엑티베이션 소프트맥스

Softmax
여러개의 값 중에서 가장 큰 값을 선택 [0.1, 0.1, 0.05, 0.1, 9.5, 0.1, 0.05, 0.05, 0.05]
여기서 가장 큰 값을 1로 만들고 나머지는 0으로 만들어준다. [0, 0, 0, 0, 1, 0, 0, 0, 0]

 

아웃풋 레이어 activation= 'softmax'

def build_model() :
  model = Sequential()
  model.add( Flatten() )
  model.add( Dense( units= 128, activation= 'relu') )
  model.add( Dense( units= 64, activation= 'relu') )
  
  # 아웃풋 레이어에 activation= 'softmax' 사용
  model.add( Dense( units=10, activation= 'softmax' ) )
  model.compile( optimizer= 'adam', loss= 'sparse_categorical_crossentropy', metrics= [ 'accuracy' ])
  return model

 

아웃풋 노드를 10개로 설정했기때문에 y_pred 결과값은 10개가 나온다
1개의 값만 출력될 수 있게 소프트맥스로 나온 결과값을 레이블 인코딩으로 바꿔준다

※ numpy의 argmax() 함수를 이용하면 가장 큰 값이 들어있는 곳의 인덱스를 얻을 수 있다

# 예측한 값을 y_pred 변수에 저장
y_pred = model.predict(X_test)

# 1개만 바꾸기
y_pred[1].argmax()

# 전체 데이터 바꾸기
y_pred = y_pred.argmax(axis=1)

댓글