작성
·
149
·
수정됨
0
for epoch in range(EPOCHS):
start = time.time()
train_loss.reset_states()
train_accuracy.reset_states()
# inp -> portuguese, tar -> english
for (batch, (inp, tar)) in enumerate(train_batches):
train_step(inp, tar)
if batch % 50 == 0:
print(f'Epoch {epoch + 1} Batch {batch} Loss {train_loss.result():.4f} Accuracy {train_accuracy.result():.4f}')
if (epoch + 1) % 5 == 0:
ckpt_save_path = ckpt_manager.save()
print(f'Saving checkpoint for epoch {epoch+1} at {ckpt_save_path}')
print(f'Epoch {epoch + 1} Loss {train_loss.result():.4f} Accuracy {train_accuracy.result():.4f}')
print(f'Time taken for 1 epoch: {time.time() - start:.2f} secs\n')
위 코드에서 에러 발생합니다. GPT 에도 물어보고 해도 답이 안나와서 조치 방법 질문드립니다.
AttributeError Traceback (most recent call last)
<ipython-input-109-d5f75ec190c4> in <cell line: 1>()
2 start = time.time()
3
----> 4 train_loss.reset_states()
5 train_accuracy.reset_states()
6
AttributeError: 'Mean' object has no attribute 'reset_states'
답변 2
0
안녕하세요~. 반갑습니다.
먼저 수강에 불편을 드려서 죄송합니다.
강의 영상 촬영시점 이후에 많은 시간이 흘러서 tensorflow 버전과 관련된 충돌이 발생하는 것 같습니다.
tensorflow 버전을 정리한 아래 colab 파일로 실습 진행 부탁드립니다.
https://colab.research.google.com/drive/18nxotMTc2Qqc2_tARhcvmz8laFOzYfWm?usp=sharing
좋은 하루 되세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
제시하신 코드에서 ‘Mean’ 객체에 ‘reset_states’ 속성이 없다는 AttributeError가 발생한 것으로 보입니다. 일반적으로, TensorFlow에서는 tf.keras.metrics.Mean 클래스 인스턴스를 사용해 평균적인 손실이나 정확도를 계산할 때 ‘reset_states’ 메소드를 호출하여 상태(데이터)를 리셋할 수 있습니다. 따라서, ‘train_loss’와 ‘train_accuracy’가 tf.keras.metrics.Mean의 인스턴스인지 확인해보시는 것이 좋습니다.
예를 들어, 다음과 같이 ‘train_loss’와 ‘train_accuracy’를 정의해야 합니다.
train_loss = tf.keras.metrics.Mean(name='train_loss')
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')
만약 ‘train_loss’와 ‘train_accuracy’가 위와 같이 정의되어 있음에도 불구하고 같은 에러가 발생한다면, TensorFlow 버전을 확인해 보시기 바랍니다. ‘reset_states’ 메소드는 TensorFlow의 특정 버전부터 지원되므로, 버전 호환성 문제일 수 있습니다. 필요하다면 TensorFlow를 업데이트하여 해결할 수 있습니다.
pip install --upgrade tensorflow
문제가 계속 발생한다면, 정확한 상황을 파악하기 위해 추가적인 정보(예: TensorFlow 버전, ‘train_loss’와 ‘train_accuracy’의 정의 부분)가 필요할 수 있습니다.