강의

멘토링

커뮤니티

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

말하는감자님의 프로필 이미지
말하는감자

작성한 질문수

TensorFlow 2.0으로 배우는 딥러닝 입문

TensorFlow 2.0을 이용한 Char-RNN 구현

22강 코드 call()메서드 is_training -> model(x,False)로 호출시 밸류에러 참고

작성

·

26

·

수정됨

0

line 107, in <module>

    train_accuracy = compute_accuracy(CNN_model(batch_x, False)[0], batch_y)  # 테스트 시점 드롭아웃 False 

                                    ^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: Only input tensors may be passed as positional arguments. The following argument value should be passed as a keyword argument: False (of type <class 'bool'>)

 

Keras 버전 업그레이드 후 커스텀 모델의 call() 메서드에 추가 인자를 위치 인자로 전달하면 ValueError: Only input tensors may be passed as positional arguments 에러 발생.

파라미터명을 Keras 표준 키워드인 training으로 변경하고, 호출 시 model(x, training=True/False) 형태로 키워드 인자로 전달해야 한다고 합니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
말하는감자님, Keras 버전 업그레이드 후 발생하는 문제에 대해 설명드리겠습니다.

에러 메시지와 함께 Keras의 최신 버전에서는 call() 메서드에 추가적인 인자를 위치 인자로 전달하는 것이 허용되지 않기 때문에, training과 같은 표준 키워드를 사용해야 합니다. 아래와 같은 방식으로 문제를 해결할 수 있습니다:

  1. call() 메서드의 파라미터를 training이라는 이름으로 변경하세요.
def call(self, inputs, training=False):
    # 필요한 로직 구현
  1. 모델을 호출할 때 training 인자를 명시적으로 키워드 인자로 전달하세요.
train_accuracy = compute_accuracy(CNN_model(batch_x, training=False)[0], batch_y)

이와 같은 방식으로 코드를 수정하시면, ValueError 없이 코드를 실행할 수 있을 것입니다.

추가적인 변경 사항이 필요하시다면, Keras의 해당 버전의 문서나 TensorFlow 가이드라인에서 업데이트된 내용을 확인하시길 권장드립니다.

말하는감자님의 프로필 이미지
말하는감자

작성한 질문수

질문하기