인프런 커뮤니티 질문&답변

dw.k님의 프로필 이미지

작성한 질문수

예제로 배우는 딥러닝 자연어 처리 입문 NLP with TensorFlow - RNN부터 BERT까지

실습 1 - Tensorflow와 Transformer 모델을 이용해서 포르투칼어-영어 번역 수행해보기

트레이닝 에러 발생

24.07.14 11:29 작성

·

124

·

수정됨

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

AISchool님의 프로필 이미지
AISchool
지식공유자

2024. 07. 16. 17:57

안녕하세요~. 반갑습니다.

먼저 수강에 불편을 드려서 죄송합니다.

강의 영상 촬영시점 이후에 많은 시간이 흘러서 tensorflow 버전과 관련된 충돌이 발생하는 것 같습니다.

tensorflow 버전을 정리한 아래 colab 파일로 실습 진행 부탁드립니다.

 

https://colab.research.google.com/drive/18nxotMTc2Qqc2_tARhcvmz8laFOzYfWm?usp=sharing

 

좋은 하루 되세요.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 07. 16. 11:31

안녕하세요, 인프런 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’의 정의 부분)가 필요할 수 있습니다.

dw.k님의 프로필 이미지

작성한 질문수

질문하기