제발 도와주세요ㅜㅠ
225
작성한 질문수 1
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, LSTM
from keras.layers import BatchNormalization
from keras.initializers import he_normal
!pip install np_utils
import np_utils
from tensorflow.keras.utils import to_categorical
from google.colab import drive
drive.mount('/content/drive')
[train_x, train_y, test_x, test_y] = np.load('/content/drive/MyDrive/LSTM_disaster_prediction_data.npy', allow_pickle = True)
X_train = train_x.astype('float32')
X_test = test_x.astype('float32')
X_train = np.transpose(X_train,(0,2,1))
X_test = np.transpose(X_test,(0,2,1))
y_train = to_categorical(train_y, num_classes=num_classes)
y_test = to_categorical(test_y, num_classes=num_classes)
num_classes = y_train.shape[1]
model = Sequential()
model.add(LSTM(units = 4, return_sequences = True, input_shape = (168, 12)))
model.add(LSTM(units = 1, return_sequences= True))
model.add(BatchNormalization())
model.add(Dense(64,activation = 'relu', kernel_initializer = 'he_normal'))
model.add(Dropout(0.25))
model.add(Dense(num_classes, activation = 'softmax'))
model.summary()
model.compile(loss = 'categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
model.fit(X_train, y_train, epochs = 5, batch_size = 16, verbose = 1, validation_data=(X_test, y_test))
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print('검증결과')
print('test loss = ', test_loss)
print('test accuracy = ', test_accuracy)
ValueError: Shapes (None, 3) and (None, 168, 3) are incompatible
이렇게 뜨는데 어떻게 고쳐야할지 모르겠어요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
민준님, 제공해 주신 코드를 확인해보니 num_classes 변수가 사용되기 전에 선언되어야 하는 문제가 있습니다. num_classes는 to_categorical 함수를 호출하기 전에 선언되어야 하는데, 현재 코드 상으로는 그 함수 호출 이후에 선언되고 있습니다. 다음과 같이 코드를 수정해보시겠어요?
...
# num_classes 정의를 to_categorical 사용 전으로 이동
num_classes = np.max(train_y) + 1
y_train = to_categorical(train_y, num_classes=num_classes)
y_test = to_categorical(test_y, num_classes=num_classes)
...
이렇게 수정하시면 y_train과 y_test의 원-핫 인코딩이 올바르게 이루어질 것입니다. 또한, 모델의 마지막 LSTM 레이어에서 return_sequences를 True로 할 경우 마지막 타임 스텝의 출력이 아닌 모든 타임 스템의 출력을 반환하게 되는데, 이렇게 하면 Dense 레이어의 입력 차원과 맞지 않아 에러가 발생합니다. return_sequences를 False로 변경해서 마지막 타임 스텝만 반환하도록 해야할 것 같습니다. 아래와 같이 수정해 보세요.
...
model.add(LSTM(units = 4, return_sequences = True, input_shape = (168, 12)))
model.add(LSTM(units = 1, return_sequences = False)) # 여기를 수정
model.add(BatchNormalization())
...
이렇게 코드를 수정하신 후 다시 실행하시면 문제를 해결하실 수 있을 것입니다.
[업로드오류] 강의 내용과 제목 불일치
0
16
2
섹션22 퀴즈 질문
0
22
1
import torch가 안되는 경우는 어떻게 하나요?
0
26
1
소리가 겹쳐서 들려요
0
30
2
20강에서 파인튜닝 때 사용한 데이터가 없어졌습니다. LoRA Trainer 매개변수도 라이브러리 업그레이드로 수정되었습니다.
0
23
1
[개정판] 딥러닝 컴퓨터 비전 완벽 가이드 먼저? 구현하며 배우는 Transformer 먼저?
0
34
1
수업자료
0
28
2
전 강의와 전혀 이어지지가 않음
0
33
1
pytorch local 설치 옵션에 conda 가 없습니다.
0
39
3
pc에서는 괜찮은데 탭으로 들으니 화면확대시 화면이 까맙니다
0
24
1
강의 환경설정 질문
0
43
2
모든 자료 다운로드 누를때마다 똑같은 excel파일이 다운로드 받아짐. 노션 주소 공유되나요?
0
35
2
오토인코더+ Knn, SVC 로 해석하는경우
0
46
3
강의자료에 소스코드가 없는데요
0
50
3
강화학습저장 및 로드
0
61
1
Custom Dataset에서의 polygon 정보 관련
0
86
3
paperswithcode 서비스 종료 관련 문의
0
220
2
Google Colaboratory 연결 시 접근 권한 거절 됩니다.
0
38
1
질문있습니다.
0
60
2
22강 코드 call()메서드 is_training -> model(x,False)로 호출시 밸류에러 참고
0
48
1
새로운 개발환경 조합 Next.js + Supabase
0
93
2
강의자료 질문
0
44
1
cvat.ai 보안 수준이 궁금합니다
0
81
2
딥러닝구조를 배웠는데 원리가 궁금하네요
0
98
1





