1. softmax로 나온결과를, 레이블 인코딩으로 바꾸는 방법
softmax는 텐서플로우의 모델을 만들때,
마지막 레이어, 즉 아웃풋 레이어의 수가 3개 이상일때 사용한다
만약 아웃풋의 노드가 10개라고 한다면
10개를 비교해서 최종값을 결정해야 하는데
소프트맥스는 거기에 최적화 되있기 때문이다.
소프트 맥스는 총합이 1이되는
즉 0.1, 0.2, 0.7... 형태로 나온다
그럼 여기서 가장큰 값 0.7이 최종값이 되는것이다 .
2. 에포크, 학습데이터/밸리데이션데이터와 오버피팅
에포크는 학습을 시킬 횟수를 의미한다 .
그렇다고 에포크가 너무 많아도 문제가 될수있다.
에포크를 많이하면 이미 알고있는 문제는 잘 맞추지만
새로운 데이터가 들어오면 오히려 못맞추게 되는 문제가 발생한다.
그것이 오버피팅이다.
오버피팅을 확인하는 간단한 방법은
학습결과를 변수로 저장해서 변수.history 함수를
plot으로 그려보는것이다 .

밸리대이션 로스는 모델학습중 중간시험을 보는결과인데
그래프를보면 오히려 증가하는것을 볼수있다

정확도 역시 오히려 떨어지는것을 볼수있다 .
그렇기 때문에 적절한 에포크를 찾는것이 중요하다.
3.텐서플로우의 콜백클래스를 이용해서, 원하는 조건이 되면 학습을 멈추게 하는 코드
텐서플로우는 프레임워크다
프레임워크의 사용법을 참조해보면
class myCallback(tf.keras.callbacks.Callback) :  
  def on_epoch_end(self, epoch, logs= {} ) :
    if logs[ 'val_accuracy'] > 0.88 :
      print('\n내가 정한 정확도에 도달했으니, 학습을 멈춘다.')
      self.model.stop_training = True이같은 코드를 작성할수 있다
클래스 이름은 내마음대로 정하지만,
클래스의 파라미터,
함수의 이름은 이미 프레임워크에서 정해놓은것이고,
내가 더할수 있는코드는
if 부터 시작하는 코드이다.
이코드는 내가 정한 정확도에 도달했으니, 학습을 멈추라는 코드
# 사용 예시
epoch_history = model.fit(X_train,y_train, epochs=30, validation_split = 0.2, callbacks = [my_cb] )
아웃풋을 보면 잘 멈추는것을 확인할 수있다.
 
                    
                  