前提・実現したいこと
python初心者です。
Kerasでニューラルネットワークを実装していますが下記のエラーが出ており困っております。
自分で用意した画像のデータセット(りんご、バナナ、オレンジ、桃)を使って画像認識のプログラムを作りたいです。
ディレクトリにはそれぞれ apple,peach,banana,orangeのフォルダがありそこに各画像が入っています。
発生している問題・エラーメッセージ
assert_is_compatible_with raise ValueError("Shapes %s and %s are incompatible" % (self, other)) ValueError: Shapes (None, 4) and (None, 2) are incompatible
該当のソースコード
python
1import keras 2from keras.utils import np_utils 3from keras.layers.convolutional import Conv2D, MaxPooling2D 4from keras.models import Sequential 5from keras.layers.core import Dense, Dropout, Activation, Flatten 6from keras.preprocessing.image import array_to_img, img_to_array,load_img 7import numpy as np 8 9from sklearn.model_selection import train_test_split 10import matplotlib.pyplot as plt 11import os 12import re 13import glob 14 15path=os.getcwd() 16filelist=[] 17imagelist=[] 18x=[] 19y=[] 20 21for f in os.listdir(path): 22 if os.path.isdir(os.path.join(path,f)): 23 filelist.append(f) 24 25for i in range(len(filelist)): 26 path="./"+filelist[i]+"/*.jpg" 27 image=glob.glob(path) 28 imagelist.append(image) 29 30 for k in range(len(imagelist[i])): 31 pictures=imagelist[i][k] 32 img=img_to_array(load_img(pictures,target_size=(64,64))) 33 x.append(img) 34 y.append(i) 35 36x=np.asarray(x) 37y=np.asarray(y) 38 39 40#画素数を0から1へ変換、正規化 41x=x.astype("float32") 42x=x/255.0 43 44#クラスの形式を変換、ラベルをベクトルに変換しないといけない 45#今は0から3の四つ 46y=np_utils.to_categorical(y,4) 47 48#学習とテストに分けるテストサイズが3割指定 49x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.30,random_state=111) 50 51model=Sequential() 52model.add(Conv2D(32,(3,3),padding="same", 53 input_shape=x_train.shape[1:])) 54model.add(Activation("relu")) 55model.add(Conv2D(32,(3,3))) 56model.add(Activation("relu")) 57model.add(MaxPooling2D(pool_size=(2,2))) 58model.add(Dropout(0.25)) 59 60model.add(Conv2D(64,(3,3),padding="same")) 61model.add(Activation("relu")) 62model.add(Conv2D(64,(3,3))) 63model.add(Activation("relu")) 64model.add(MaxPooling2D(pool_size=(2,2))) 65model.add(Dropout(0.25)) 66 67model.add(Flatten()) 68model.add(Dense(512)) 69model.add(Activation("relu")) 70model.add(Dropout(0.5)) 71model.add(Dense(2)) 72model.add(Activation("softmax")) 73 74model.compile(loss="categorical_crossentropy", 75 optimizer="SGD", 76 metrics=["accuracy"]) 77 78history=model.fit(x_train,y_train,batch_size=5,epochs=200, 79 validation_data=(x_test,y_test),verbose=0) 80 81plt.plot(history.history["acc"]) 82plt.plot(history.history["val_acc"]) 83plt.title("model accuracy") 84plt.xlabel("epoch") 85plt.ylabel("accuracy") 86plt.legend(["acc","val_acc"],loc="lower right") 87plt.show() 88 89 90
試したこと
ネットで検索しても解決方法が見つからず困っており、回答いただけるとありがたいです。
補足情報(FW/ツールのバージョンなど)
python 3.7.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/21 10:27
2020/07/21 11:02