본문 바로가기

AI/Coding errors

RuntimeError: Cannot writeback when the parameter shape changes

반응형

Writeback error

해당 에러는 모델을 돌리는 도중, backpropagation을 진행할 때 모델의 파라미터 shape이 같아야하는데 다를 때 일어나는 것이다.

 

에러를 어떻게 해결할까!?


_writeback_tensor()

일단 위의 system file을 따라서 위의 함수로 들어간다!

if src_tensor is not None and src_tensor.shape != expected_shape:
    # NOTE: Gradient shape mismatch is not possible in practice since
    # the gradient shape is enforced to match that of the parameter and
    # we already check for parameter shape mismatch.
    raise RuntimeError(
        f"Cannot writeback when the {'parameter' if is_param else 'gradient'} "
        f"shape changes\nExpects {expected_shape} but got {src_tensor.shape}"
    )

위의 함수에서 해당 코드를 찾으면 에러의 원인을 알 수 있다.

src_tensor()를 shape를 expected_shape로 맞춰줘야 한다.

if src_tensor.shape != expected_shape:
    print("Expected shape:",expected_shape) 
    print("src_tensor shape:",src_tensor.shape)
    src_tensor = src_tensor.reshape(-1)
    print("src_tensor shape:",src_tensor.shape)

if src_tensor is not None and src_tensor.shape != expected_shape:
    # NOTE: Gradient shape mismatch is not possible in practice since
    # the gradient shape is enforced to match that of the parameter and
    # we already check for parameter shape mismatch.
    raise RuntimeError(
        f"Cannot writeback when the {'parameter' if is_param else 'gradient'} "
        f"shape changes\nExpects {expected_shape} but got {src_tensor.shape}"
    )

위의 if문을 넣어서 shape을 바꿔주면 된다!


2023.07.25 Kyujinpy 작성.

반응형