2017-11-18 6 views
1

이 주제에 대한 모든 질문을 겪었습니다. 여기 이상한 문제에 직면 해있다. file_names에 저장된 이미지 경로가 있습니다. (50, 375, 500, 3)을 할 numpy 배열로 RGB 이미지를 읽을 수 없습니다

from skimage import io 
import numpy as np 

X = np.array([np.array(io.imread(i)) for i in file_names]) 
print(X.shape) 
# (50,) 
print(X[0].shape) 
# (375, 500, 3) 

나는 X이 필요합니다. 나는 reshape을 시도했지만 np.newaxis 등을 추가했지만 모두 실패합니다. 다음 단계는 CNN에 이것을 사용하는 것입니다. 기본적으로 내 이미지로 mnist_cnn 종류의 데이터 세트를 만들고 싶습니다.

다음 라인 :

model = Sequential() 
model.add(Conv2D(64, kernel_size=(3, 3), 
       activation='relu', 
       input_shape = (375, 500, 3))) 
model.add(Flatten()) 
model.add(Dense(num_classes, activation='softmax')) 

model.compile(loss='categorical_crossentropy', 
       optimizer='adam', metrics=['accuracy']) 
model.fit(X, y, # y is (50,36) using one hot encoding 
      batch_size=10, 
      epochs=10, 
      verbose=2) 

원인이 :

ValueError: Error when checking input: expected conv2d_3_input to have 4 dimensions, but got array with shape (50, 1)

답변

2

NumPy와 부분을 쉽게 같습니다

from skimage import io 
import numpy as np 

# assumption: images are homogeneous in terms of dimensions and channels! 
files = ['C:/TEMP/pic0.jpg', 'C:/TEMP/pic0.jpg', 'C:/TEMP/pic0.jpg', 'C:/TEMP/pic0.jpg'] 

image_array = np.stack([io.imread(i) for i in files])     # default: axis=0 
image_array.shape 
# (4, 720, 540, 3)