前提・実現したいこと
Python3.6.7でKerasを用いて機械学習を行っています
画像を学習させて判定させるシステムです
発生している問題・エラーメッセージ
実行した際に以下のようなエラーが出ます
ValueError: Error when checking input: expected conv2d_1_input to have shape (50, 50, 3) but got array with shape (224, 224, 3)
該当のソースコード
Python
1import numpy as np 2import matplotlib.pyplot as plt 3import os 4from keras.applications.vgg16 import VGG16 5from keras.applications.vgg16 import preprocess_input, decode_predictions 6import keras.preprocessing.image as Image 7from keras.models import Model, model_from_json 8 9model = model_from_json(open('model.json').read()) 10 11model.load_weights('weights.h5') 12 13img_path='unExample/a6.jpg' 14img = Image.load_img(img_path, target_size=(224,224)) 15x = Image.img_to_array(img) 16x = np.expand_dims(x, axis=0) 17features = model.predict(preprocess_input(x)) 18results = decode_predictions(features, top=3)[0] 19for result in results: 20 print(result) 21
Python
1#coding:utf-8 2 3import keras 4from keras.utils import np_utils 5from keras.models import Sequential 6from keras.layers.convolutional import Conv2D, MaxPooling2D 7from keras.layers.core import Dense, Dropout, Activation, Flatten 8import numpy as np 9from sklearn.model_selection import train_test_split 10from PIL import Image 11import glob 12folder = ["Not_Skill","with_Skill"] 13image_size = 50 14 15X = [] 16Y = [] 17for index, name in enumerate(folder): 18 dir = "./" + name 19 files = glob.glob(dir + "/*.jpg") 20 for i, file in enumerate(files): 21 image = Image.open(file) 22 image = image.convert("RGB") 23 image = image.resize((image_size, image_size)) 24 data = np.asarray(image) 25 X.append(data) 26 Y.append(index) 27 28X = np.array(X) 29Y = np.array(Y) 30X = X.astype('float32') 31X = X / 255.0 32Y = np_utils.to_categorical(Y, 4) 33X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20) 34model = Sequential() 35 36model.add(Conv2D(32, (3, 3), padding='same',input_shape=X_train.shape[1:])) 37model.add(Activation('relu')) 38model.add(Conv2D(32, (3, 3))) 39model.add(Activation('relu')) 40model.add(MaxPooling2D(pool_size=(2, 2))) 41model.add(Dropout(0.25)) 42 43model.add(Conv2D(64, (3, 3), padding='same')) 44model.add(Activation('relu')) 45model.add(Conv2D(64, (3, 3))) 46model.add(Activation('relu')) 47model.add(MaxPooling2D(pool_size=(2, 2))) 48model.add(Dropout(0.25)) 49 50model.add(Flatten()) 51model.add(Dense(512)) 52model.add(Activation('relu')) 53model.add(Dropout(0.5)) 54model.add(Dense(4)) 55model.add(Activation('softmax')) 56 57# コンパイル 58model.compile(loss='categorical_crossentropy',optimizer='SGD',metrics=['accuracy']) 59 60from keras.callbacks import TensorBoard 61tbcb = TensorBoard(log_dir='./graph',histogram_freq=0,write_graph=True) 62 63history = model.fit(X_train, y_train,batch_size=32,epochs=1000, verbose=1,validation_data=(X_test,y_test),callbacks=[tbcb]) 64 65from keras.utils import plot_model 66model_json = model.to_json() 67with open('model.json', mode='w') as f: 68 f.write(model_json) 69 70model.save_weights('weights.h5') 71 72import pickle 73with open("history.pickle", mode='wb') as f: 74 pickle.dump(history.history, f) 75print(model.evaluate(X_test, y_test)) 76
試したこと
target_sizeを(50,50)にした
補足情報(FW/ツールのバージョンなど)
OS: ubuntu14.04.5LTS
コンソール上での実行
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/21 08:34
2018/12/21 08:39
2018/12/21 08:43
2018/12/21 08:49
2018/12/21 08:51
2018/12/21 08:53
2018/12/21 08:56
2018/12/21 08:59
2018/12/21 09:02 編集
2018/12/21 09:12
2018/12/21 09:17 編集
2018/12/21 09:24
2018/12/21 09:32
2018/12/21 09:41
2018/12/21 09:43 編集
2018/12/21 09:51
2018/12/21 09:54 編集
2018/12/21 09:59