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

yunwoo oh님의 프로필 이미지
yunwoo oh

작성한 질문수

프로그래머를 위한 강화학습(저자 직강)

cartpole_reinforce.ipynb 에러

작성

·

415

0

코랩에서 cartpole_reinforce.ipynb 실행시킬때 아래와 같은 에러 발생합니다.

ValueError: Layer "my_model_1" expects 3 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1, 4) dtype=float32>]

에러나는 소스 위치는 아래 화면에서 "y_pred = self(states, training=True)" 부분에서

에러가 발생됩니다.

    class MyModel(tf.keras.Model):
        def train_step(self, data):
            in_datas, out_actions = data
            states, action_matrix, rewards = in_datas[0], in_datas[1], in_datas[2]

            with tf.GradientTape() as tape:
                y_pred = self(states, training=True)
                action_probs = K.sum(action_matrix*y_pred, axis=-1)
                loss = -K.log(action_probs)*rewards

            trainable_vars = self.trainable_variables
            gradients = tape.gradient(loss, trainable_vars)
            self.optimizer.apply_gradients(zip(gradients, trainable_vars))

 tensorflow 버젼 : 2.9.2 이며, 모델에 3개의 값을 주어야 하는데, 1개만 받아서 그런것 같습니다.

해결 방법 알려 주시기 바랍니다.

감사합니다.

답변 2

0

혹시 누군가 동일한 문제를 겪으면 도움이 될까해서 늦은 댓글이지만 작성합니다.

아래는 ubuntu 20.04 , conda , GPU , python 3.8 와 같은 환경에서 작업하였음을 알려드립니다.

  1. 위 에러 메세지는 tensorflow 2.2.0 설치하면 사라지는것을 확인하였습니다.

    1. 공식 빌드는 설치 불가로 생각됩니다.

    2. wheel 사용한 설치 pip install https://github.com/davidenunes/tensorflow-wheels/releases/download/r2.2.cp38.gpu/tensorflow-2.2.0-cp38-cp38-linux_x86_64.whl

  2. 이 경우 numpy 버전 에러가 추가로 발생하게 됩니다.

    1. 아래와 같은 에러가 보이면

       

      AttributeError: module 'numpy' has no attribute 'object'. `np.object` was a deprecated alias for the builtin `object`. To avoid this error in existing code, use `object` by itself. Doing this will not modify any behavior and is safe. The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

    2. 다음처럼 설치

      1. pip install numpy==1.23.4

         

  3. 종합 결론 > 아래처럼 조치하시면 동작합니다.

    pip install https://github.com/davidenunes/tensorflow-wheels/releases/download/r2.2.cp38.gpu/tensorflow-2.2.0-cp38-cp38-linux_x86_64.whl
    
    pip install numpy==1.23.4
    
멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 Kim Sunggu님 좋은 의견 감사합니다.

0

멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 yunwoo oh님.

본 강의가 제작된 후 패키지에 많은 업데이트가 있어 오류가 발생하고 있습니다. 그래서 새 소식에 다음과 같은 공지를 올렸습니다. https://www.inflearn.com/course/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-%EA%B0%95%ED%99%94%ED%95%99%EC%8A%B5/news

따라해서 조치해 보시고, 문제가 계속 발생하신다면 오류 메시지 전체를 올려주세요.

감사합니다.

yunwoo oh님의 프로필 이미지
yunwoo oh

작성한 질문수

질문하기