2017-05-03 12 views
0

以下のコードを、mnistイメージの代わりに自分の入力イメージで使用したいと考えています。しかし、以下のコードで使用されているX_trainと同様に、いくつかのカラー.jpg画像を数値の配列に入力するのは苦労しています。 trainという別のフォルダにdataというフォルダがあり、これにはX_trainとして使用したいいくつかのイメージが含まれています。私はそれらのためのラベルを生成し、ワンホットエンコードすることができます。私はすべての画像をX_trainのような素敵な配列にする方法を知りません。助けて?私はhereを見ましたが、バリュー・エラーが発生しました:配列要素をシーケンスで設定して、集計したコードをコピーして貼り付けただけです。複数のRGBイメージをCNNのnumpy配列として準備する方法

import numpy as np 
np.random.seed(123) # for reproducibility 

from keras.models import Sequential 
from keras.layers import Dense, Dropout, Activation, Flatten 
from keras.layers import Convolution2D, MaxPooling2D 
from keras.utils import np_utils 
from keras.datasets import mnist 

# 4. Load pre-shuffled MNIST data into train and test sets 
(X_train, y_train), (X_test, y_test) = mnist.load_data() 

# 5. Preprocess input data 
X_train = X_train.reshape(X_train.shape[0], 1, 28, 28) 
X_test = X_test.reshape(X_test.shape[0], 1, 28, 28) 
X_train = X_train.astype('float32') 
X_test = X_test.astype('float32') 
X_train /= 255 
X_test /= 255 

# 6. Preprocess class labels 
Y_train = np_utils.to_categorical(y_train, 10) 
Y_test = np_utils.to_categorical(y_test, 10) 

# 7. Define model architecture 
model = Sequential() 

model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28))) 
model.add(Convolution2D(32, 3, 3, activation='relu')) 
model.add(MaxPooling2D(pool_size=(2,2))) 
model.add(Dropout(0.25)) 

model.add(Flatten()) 
model.add(Dense(128, activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(10, activation='softmax')) 

# 8. Compile model 
model.compile(loss='categorical_crossentropy', 
       optimizer='adam', 
       metrics=['accuracy']) 

# 9. Fit model on training data 
model.fit(X_train, Y_train, 
      batch_size=32, nb_epoch=10, verbose=1) 

# 10. Evaluate model on test data 
score = model.evaluate(X_test, Y_test, verbose=0) 

答えて

0

私はあなたがTheanoを使用しており、あなたのjpgに3つのバンドがあると仮定しています。さらに、jpgは、最初の畳み込みモデル(28x28ピクセル)で指定した入力シェイプと同じ入力シェイプを持つ必要があります。ように、あなたのinput_shapeを変更する必要があります。また(機能、n_bands、x、y)は

:今、あなたが持つ配列を持っている

#create random data 
no_of_jpgs = 10 
jpgs = [np.random.randint(0,255,(28,28,3)) for i in range(no_of_jpgs)] 
jpgs = np.array(jpgs) 

#reshape data 
jpgs.reshape(no_of_jpgs, jpgs.shape[1], jpgs.shape[2], 3) 

:その場合は次の行にすべてのあなたのjpesの形状を変更することができますそれは3つのバンドに対応しています

model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(3, 28,28))) 

あなたは異なる形状以上のバンドとのJPGを持っている場合は、単に最初の畳み込み層におけるinput_shape値を変更します。

関連する問題