Deep Learning - 학습문제 -ValueError: Shapes (32, 1) and (32, 10) are incompatible?

화이티 ·2024년 1월 5일
0

Deep Learning

목록 보기
3/24


-오류확인 > 정답데이터 shape가 일치하지 않음!

  • 학습시 y_train 형태를 보니 실제 데이터 1개 (클래스중 1개 값)
  • 모델링 출력결과는 : 10개 클래스에 대한 각각의 확률값
  • 1개와 10개는 비교가 불가능
    -> 개수 및 ㄹ형태를 맞춰주자!
  • 해결 방법 2 가지

방법1: 정답데이터 (y_train)의 형태를 10개의 확률값으로 변경하기

from tensorflow.keras.utils import to_categorical
# 범주형데이터(정답)확률값으로 변경해주는 역할
y_train_onehot = to_categorical(y_train)
y_train_onehot[1]
  • 마치 원하는코딩을 하듯이 확률값으로 변경해준다
  • 5일 확률 100% 나머지는 0%

방법2: compile 진행 시

  • loss값을 'categorical_crossentropy' -> 앞에 'sparse_categorical_crossentropy' 로변경
  • keras 에서 지원하는 자동으로 정답데이터를 알아서 확률로 계산할 수 있도록 해줌
#방법2: loss함수를 spare_categorical_crossentropy변경
# 1. 신경망 델 설계
# 뼈대
model = Sequential()
# 입력층 (28*28 차원데이터)
model.add(InputLayer(input_shape = (28,28)))
# 중간층(인닉층),첫번쨰 16, 두번째 8
model.add(Flatten()) # 입력받은 2차원의 사진데이터를 1차원으로 병경
model.add(Dense(units = 16, activation ='sigmoid'))
model.add(Dense(units = 8, activation = 'sigmoid'))
# 출력층 (다중분류 > 틀래스 10개)
model.add(Dense(units  =10, activation = 'softmax'))
model.compile(loss ='sparse_categorical_crossentropy',
              optimizer = 'SGD',
              metrics = ['accuracy'])
# 스스로 내부에서 범주값을 확률으로 변경하여 오차를 계산한다

업로드중..

profile
열심히 공부합시다! The best is yet to come! 💜

0개의 댓글