2017-11-18 28 views
1

私はこのトピックに関するすべての質問を行ってきました。ここで奇妙な問題に直面している。画像パスはfile_namesに保存されています。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) 

私は(50, 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) 
関連する問題