inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

딥러닝 CNN 완벽 가이드 - TFKeras 버전

이미지 하나만 별도로 업로드 해서 분류가 잘 실행되는지 확인 할려고 합니다.

244

오광덕

작성한 질문수 6

0

예제 fashion-mnist-practice 의 모델 생성하는 부분을 참조했습니다.

dataset의 경우 fashion_mnist를 쓰지 않고 숫자 mnist 파일을 사용했습니다. 

INPUT_SIZE = 28
model = Sequential([
    Flatten(input_shape=(INPUT_SIZE, INPUT_SIZE)),
    Dense(100, activation='relu'),
    Dense(30, activation='relu'),
    Dense(10, activation='softmax')
])
 

이걸 기본으로 model을 따로 저장했고, 저장된 model을 불러오고 별로도 이미지 파일을 만들었습니다. 

def get_read_image():
    image_list =[]
    image = cv2.cvtColor(cv2.imread("./image/0_1.png"), cv2.IMREAD_GRAYSCALE)
    return image 

def get_show_image(image):
    plt.imshow(image)
    plt.axis("on")
    plt.legend()

def get_preprocessed_image(image):
    image = np.array(image/255.0, dtype=np.float32)
    return image
 
if __name__ == "__main__":
    image = get_read_image()
    image = np.resize(image, (1, 784))
    image = get_preprocessed_image(image)
    image = image.reshape(1, 28, 28, 1)    
    predict_result = np.argmax(model.predict(image))
    print(predict_result)
 

 

이렇게 코드를 작성했는데 하나 이해가 가지 않는 부분이 Faltten() 에서

input_shape = IMAGE_SIZE (28), IMAGE_SIZE(28) 이부분입니다.

input _shape(28, 28) 로 했다면

업로드한 이미지 파일도 3차원  image.reshape(28, 28, 1)이 들어가야 하는 것 같은데..

무조건 3차원 만들어줘야 하는 거 아닌가요ㅠ 

그래서 그렇게 입력하니깐 오류가 떠서, (1, 28, 28,1)로 넣으니깐 오류가 나지 않습니다.

저 부분이 왜 저렇게 되는지 잘 이해가 가지 않아서 질문 드립니다.

그리고 또 하나는 .   model.summary() 를 했을 때 output shape에 None는 크게 신경쓰지 않아도 되는 것 인가요?

아래 이미지 처럼 (None, 28, 28)이 나왔다면 그냥 28행 28열로 구성된 tensor라고만 생각하면 되는 걸까요

질문이 길어서 죄송합니다 ㅠ

 input_1 (InputLayer)        [(None, 28, 28)]          0         
                                                                 
 flatten (Flatten)           (None, 784)               0         
                                                                 
 dense (Dense)               (None, 100)               78500     
                                                                 
 dense_1 (Dense)             (None, 30)                3030      
                                                                 
 output (Dense)              (None, 10)                310       

 

 

 

cnn kaggle tensorflow keras 딥러닝 머신러닝 배워볼래요?

답변 1

0

권 철민

안녕하십니까, 

답변을 빨리 달아드려야겠다고 생각했는데, 바쁜일 때문에 살짝 늦어졌습니다.

기본적으로 Tensorflow Deep learning 모델은 학습 시 입력데이터의 shape의 첫번째 인자가 batch size입니다. 마찬가지로 predict() 입력 데이터 세트 shape의 첫번째 인자도 batch size 입니다. 

image.reshape(28, 28, 1)가 아니라 image.reshape(1, 28, 28)로 변경해서 수행해 보시지요. 

감사합니다. 

resize 질문

0

60

1

20251212 Kaggle 런타임에 scikit-learn 설치 실패 트러블 슈팅

0

87

1

Loss와 매트릭 관계

0

78

2

Boston 코랩 실습

0

173

2

배치 정규화의 이해와 적용 2 강의 질문

0

145

2

Augmentation원본에 적용해서 데이터 갯수 자체를 늘리는 행위는 의미가있나요?

0

153

2

Conv함수 안에 activation 을 넣지 않는 이유가 뭔지 궁금합니다.

0

214

2

소프트맥스 관련 질문입니다

0

215

1

강의 관련 질문입니다

0

162

2

residual block과 identity block의 차이

0

202

2

옵티마이저와 경사하강법의 차이가 궁금합니다.

1

253

1

실습 환경

0

173

2

입력 이미지 크기

0

259

2

데이터 증강

0

209

2

albumentations ShiftScaleRotate

0

212

1

Model Input Size 관련

0

295

1

마지막에 bird -> frog 말고도 deer -> frog 도 잘못된것 아닌가요??

0

207

1

일반적인 질문 (kaggle notebook사용)

0

276

2

실무에서 Augmentation 적용 시

0

348

2

안녕하세요 교수님

0

237

1

가중치 초기화(Weight Initialization) 질문입니다.

0

333

1

테스트 데이터셋 predict의 'NoneType' object has no attribute 'shape' 오류

0

414

1

학습이 이상하게 됩니다.

2

1043

2

boston import가 안됩니다

0

233

1