ValueError) Input 0 of layer “inception_resnet_v2” is incompatible with the layer: expected shape=(None, 299, 299, 3), found shape=(32, 256, 3)

valueerror

2022.10월 말 기준

여전히 레이어 개념이 헷갈린다. (256, 256, 3) 이렇게 있는데 한 개의 층을 왜 도대체 더해주어야 하는 걸까 (1, 256, 256, 3) 이런 식으로

하나를 더해주는데 졸면서 코드 따라서 치기는 했는데, 여전히 풀리지 않는 의문이다.

ValueError: Input 0 of layer “inception_resnet_v2” is incompatible with the layer: expected shape=(None, 299, 299, 3), found shape=(None, 256, 256, 3)

이런 에러나,

ValueError: Input 0 of layer “inception_resnet_v2” is incompatible with the layer: expected shape=(None, 299, 299, 3), found shape=(32, 256, 3)

이런 에러.

한 개의 이미지는 3개의 층, R, G, B 층으로 되어 있고 픽셀 값을 각각 행렬로 해두었다. 까진 어떻게 이해하는데 이미지넷으로 소트할 때 왜 층을 하나 더 더해줘야 하는지.

에러는 해결하지만 원리는 솔직히 헤매고 있다. 내 자신이 이해가 안 됨. 책을 읽으면 그렇쿠나 하지만 막상 실전에선 다시 헤매는 걸 보니 뭔가 이해가 안되는 것 같다.

# 이런식으로 target_size를 정해주고,
load_img(FILE_1, target_size=(299, 299))

.shape를 통해서 확인,

하면 299, 299, 3 으로 되어 있음 케라스 공식 문서 에서 요구하는 사이즈가 299, 299 였고,

import numpy as np 로 했으니 np. 으로 넣고 dims를 하나 더 추가…

np.expand_dims(pic_array, axis=0)

(1, 299, 299, 3)

으로 나와서

inception_model.predict(expanded)

로 넣었을 때 저런 에러가 나타나지 않는다.

저 행렬 값의 형태가 중요한데,

엄 글을 쓰면서도 정리가 잘 되지 않아서…

다시 공부해야겠단 생각이 들었다. (그래도 쓰다 보니 뭔가 알듯 말듯 하기도 하고)

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!