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)
로 넣었을 때 저런 에러가 나타나지 않는다.
저 행렬 값의 형태가 중요한데,
엄 글을 쓰면서도 정리가 잘 되지 않아서…
다시 공부해야겠단 생각이 들었다. (그래도 쓰다 보니 뭔가 알듯 말듯 하기도 하고)