inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

제발 도와주세요ㅜㅠ

240

민준

작성한 질문수 1

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

이렇게 뜨는데 어떻게 고쳐야할지 모르겠어요 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

phython 인공지능 딥러닝 파이썬

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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())
...

이렇게 코드를 수정하신 후 다시 실행하시면 문제를 해결하실 수 있을 것입니다.

19강 감정분석 강의처럼 api 돌렸는데

1

49

1

완독 챌린지 도서 인정 방법에 대한 문의

0

58

2

강사님 강의 자료와 코드를 부탁드리고 싶습니다.

0

55

2

16강에서 코드가 계속 안도길래. ai가 고쳐서 일단 supabase에 preditc 한 주가를

1

45

1

16강 구글 colab 에서 코드 실행이 안돼요.

0

61

1

강의자료, 코드 요청드립니다

0

48

2

강의 자료에 대한 질문입니다.

1

60

2

강의의 난이도 및 속도

1

67

2

20번 강의 LoRA 실습이 에러가 납니다.

0

56

1

강의자료 문의

1

73

2

mmcv 문의 드립니다.

0

90

2

강의 자료 및 코드 수령

0

70

2

기초실습 BERT파인튜닝 예제 오류

0

70

1

130_Transformer.ipynb 오류 대응 부탁드립니다.

0

77

1

[데이터 전처리] dropna에서 특정 두 지표만 기준으로 결측치를 제거한 이유가 궁금합니다

1

53

1

smithery filesystem mcp server

1

79

2

supabase url, key 값 확인방법

1

129

3

02_TENSOR.md자료

0

66

1

프로그램은 뭘 사용하시는 건가요??

1

84

2

소스코드 오탈자 및 누락입니다.

0

96

2

소스코드 오탈자 입니다.

0

97

2

pytorch 설치 업데이트좀요

0

92

2

강의 제작

1

83

1

안녕하세요, 강의자료 요청드립니다

0

61

1