기술 단어장/AI

[프로젝트 학습일지] 22.08.01- loss 표현하기 ( KeyError: 'acc' , KeyError: 'accuracy' )

MFDO 2022. 8. 1. 15:31

 

다음과 같이 간단히 출력만이라도 하고 싶었다.

print("loss", hist.history["loss"])
print("acc", hist.history["acc"])
print(hist.history["val_loss"])
print(hist.history["val_acc"])

 

 

다음과 같은 에러가 났다.

KeyError: 'acc'

 

 

인터넷에서는 acc를 accuracy로 변경하라고 하였다.

하지만 나는...

KeyError: 'accuracy'

 

 


해결!

 

답은 이곳에 있었다.

https://github.com/keras-team/keras/releases/tag/2.3.0

 

Release Keras 2.3.0 · keras-team/keras

Keras 2.3.0 is the first release of multi-backend Keras that supports TensorFlow 2.0. It maintains compatibility with TensorFlow 1.14, 1.13, as well as Theano and CNTK. This release brings the API ...

github.com

간단히 말하자면 인수를 사용자가 정의한대로 적용할 수 있다는 것이다.

따라서 compile함수에서 다음 옵션을 정의하면된다.

 

 

 

 

matrics=['acc']로 설정했다면, 다음과 같이 접근할 수 있다.

model.compile(optimizer='adam', loss='mae', metrics=["acc"])

print("loss", hist.history["loss"])
print("acc", hist.history["acc"])
print(hist.history["val_loss"])
print(hist.history["val_acc"])

  > hist.history["acc"]

  > hist.history["val_acc"]

 

 

 

matrics=['accuracy']로 설정했다면, 다음과 같이 접근할 수 있다.

model.compile(optimizer='adam', loss='mae', metrics=["accuracy"])

print("loss", hist.history["loss"])
print("acc", hist.history["accuracy"])
print(hist.history["val_loss"])
print(hist.history["val_accuracy"])

  > hist.history["accuracy"]

  > hist.history["val_accuracy"]

 

 

 

 


얏호 나온다!

 

# 모델 학습 과정 표시
fig, loss_ax = plt.subplots()
acc_ax = loss_ax.twinx()
loss_ax.plot(hist.history['loss'], 'y', label='train loss')
loss_ax.plot(hist.history['val_loss'], 'r', label='val loss')
acc_ax.plot(hist.history['acc'], 'b', label='train acc')
acc_ax.plot(hist.history['val_acc'], 'g', label='val acc')
loss_ax.set_xlabel('epoch')
loss_ax.set_ylabel('loss')
acc_ax.set_ylabel('accuracy')

loss_ax.legend(loc='upper left')
acc_ax.legend(loc='lower left')

plt.show()