변이형 오토인코더에 MNIST 데이터 셋말고 다른 데이터셋을 넣으려고 합니다.

인공지능을 배운지 3개월된 학생입니다.
MNIST데이터 셋에 맞춰서 짜여진 변이형 오토인코더가 있습니다.
pytorch를 사용하고 있고, nn.linear을 사용하고 있습니다.

다른곳에서 가져온 코드 이기 때문에
입력값을 최대한 MNIST와 비슷하게 맞추었습니다.

MNIST는 2828의 값이지만, 우리는 220의 값으로 하려고 합니다…

입력값만 맞추고 숫자만 조정하면된다고 하는데,

MNIST일땐 잘 돌아가지만 인코더와 디코터의 출력값을 다르게 해야지 돌아갑니다…

그러다 loss를 계산할때 입출력값이 안맞다고 ㅠㅠ 에러 뜨는데 어떠게 해야할까요?

오류 메시지라도 알려주시면 좋을 것 같은데요.

안녕하세요, 올려주신 질문 글을 이해하지 못해서 답변이 다소 늦었습니다.

220의 값으로 하신다는 것은 어떤 말씀이실까요? 220x220 크기의 이미지일까요?

@Sung_Sue_Hwang 님께서 말씀하신 것처럼,
데이터에 대한 간단한 소개와 모델 코드, 에러 메시지를 함께 올려주시면 도움이 될 것 같습니다. :slight_smile:

시계열 센서데이터의 입력과 출력을 30개씩 묶어서 30,2로 입력할 예정입니다.
당시에 2,20이었는데, 제가 오타를 냈나봅니다!
이용하려는 모델은 오토인코더입니다. ㅎㅎ

지금 당시 문의 했던 에러는 해결되었고,

지금 아래 오토인코더 코드를 짰는데 복원율이 좋지 않습니다. ㅠㅠ

복원율을 높이려면그냥 노드와 에폭수만 늘리면 되는걸까요?

class MiraeAutoEncoder(nn.Module):

def init(self):

super().__init__()

# 인코더는 순차 레이어로 표현했습니다.

# 60 -> 30 -> 15 -> 8

self.encoder = nn.Sequential(

  nn.Flatten(),

  nn.Linear(60, 30),

  nn.Linear(30, 15),

  nn.Linear(15, 8)

)



# 디코더는 인코딩의 반대 과정을 거칩니다.

self.decoder = nn.Sequential(

  nn.Linear(8, 15),

  nn.Linear(15, 30),

  nn.Linear(30, 60),

  nn.Sigmoid(),

)

def forward(self, x):

x = torch.tensor(x) # 이것은 x 값을 텐서로 변환하기 위한 함수입니다.

x = x.float() # float 사용하라는 문제때문에 float으로 강제로 형변환

encodeData = self.encoder(x) # x 값을 인코딩 합니다.

decodeData = self.decoder(encodeData) # 인코드데이터를 디코딩합니다.

decodeData = decodeData.reshape(255, 30, 2)

return decodeData # 디코딩한 결과를 리턴합니다.

mirae_auto_encoder = MiraeAutoEncoder()

정확도는 오차행렬을 통해 계산해본결과 47%정도 나왔습니다.