CAE ( Convolution Autoencoder) 학습이 안되는 현상이 있습니다

안녕하세요.
DFR( Deep Feature Reconstruction) 을 구현해보고 있는데요
CAE부분의 경우 Linear가 하나도 없는데 Conv2d 만으로 어떻게 학습이 되는 건가요?

CAE 부분만 따로 떼어내놓고 테스트 해봐도 입력한 이미지만 그대로 출력하더라고요
학습을 시켜도 학습한 이미지 이외의 것이 들어와도 그대로 출력합니다.

혹시 같은 문제 겪으셨거나 해결법을 아시는 분이 있으시면
부탁드리겠습니다. ㅠㅠ

아래는 DFR github의 CAE 소스 부분입니다.

1개의 좋아요

안녕하세요. 자문 자답이네요

저는 CNN이 학습 하지 못 한다고 착각 하고 있었고, 아래 링크에서 CNN의 학습에 대한 질문을 통해 답변들이 달려있었습니다.

결과적으로 CNN은 weight가 필터의 형태가 학습된다고 하네요.

감사합니다.

2개의 좋아요
  • 아래 답변은 OpenAI의 ChatGPT로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요. CAE 학습이 안되는 문제에 대해 답변드리겠습니다.

먼저, CAE는 Convolutional Autoencoder의 약어로 입력데이터를 인코딩(encoding) 과정을 거쳐 저차원의 latent representation으로 변환한 후, 이를 디코딩(decoding)을 통해 원본 데이터를 복원하는 방법입니다. Convolution 연산을 통해 이미지에 있는 특정한 패턴을 추출하여, 이를 이용해 이미지를 압축하고 손실된 정보를 복원합니다.

위에서 제시된 구현된 코드를 보면, CAE 모델은 nn.Module을 상속받은 FeatCAE 클래스를 정의하고 있으며, 이 클래스 내부에서는 nn.Conv2d 모듈을 이용해 Convolutional Autoencoder를 구성하고 있습니다. 이에 따라 Linear layer를 사용하지 않는 것이 정상적인 부분입니다.

그리고 학습이 안되는 문제에 대해서는 여러 요인이 원인이 될 수 있습니다. 예를 들어, 잘못된 데이터 로딩, 학습 파라미터 설정, Learning rate 설정 등이 문제가 될 수 있습니다. 하지만, 여기서는 학습되지 않는 문제 원인을 컴파일 상에 바로 확인해보기 어려우므로, 하나씩 확인해보며 문제를 찾아내시는 것이 중요합니다.

마지막으로 CAE의 출력이 입력을 그대로 출력하는 경우, 손실함수를 수정해야 할 수 있습니다. CAE의 목적은 입력데이터의 손실된 정보를 복원하는 것이므로, 입력데이터를 그대로 출력하는 경우 손실 함수가 잘못 설정되었을 가능성이 있습니다. BCE loss 또는 MSE loss와 같은 손실 함수를 이용하실 수 있습니다.

만약 문제가 계속된다면, 모델 구현과 학습 파라미터 설정 등을 다시 한번 살펴보시기 바랍니다. 이상적으로는 모델 구현과 학습 파라미터 설정, 데이터 가공 등이 잘못되지 않았는지 확인해야 합니다.

1개의 좋아요