前提・実現したいこと
https://qiita.com/kojikoji_ksnv/items/12dfe9075cb1dd3afe59
このサイトを参考にモデル構築とコンパイルを実行したいです
発生している問題・エラーメッセージ
ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (0, 1)
該当のソースコード
python
1from keras import layers, models,optimizers 2 3from PIL import Image 4import os, glob 5import numpy as np 6import random, math 7import matplotlib.pyplot as plt 8from keras.utils import np_utils 9 10 11model = models.Sequential() 12model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3))) 13model.add(layers.MaxPooling2D((2,2))) 14model.add(layers.Conv2D(64,(3,3),activation="relu")) 15model.add(layers.MaxPooling2D((2,2))) 16model.add(layers.Conv2D(128,(3,3),activation="relu")) 17model.add(layers.MaxPooling2D((2,2))) 18model.add(layers.Conv2D(128,(3,3),activation="relu")) 19model.add(layers.MaxPooling2D((2,2))) 20model.add(layers.Flatten()) 21model.add(layers.Dense(512,activation="relu")) 22#ここの「7」は判別する画像の種類数 23model.add(layers.Dense(7,activation="sigmoid")) 24model.compile(loss='categorical_crossentropy',optimizer='adadelta',metrics=['accuracy']) 25#保存した画像データ 26X_train, X_test, y_train, y_test = np.load("E:\python\monster_data.npy") 27 28nb_classes = 7 29 30#データの正規化 31X_train2 = X_train.astype("float") / 255 32X_test2 = X_test.astype("float") / 255 33 34#kerasで扱えるようにcategoriesをベクトルに変換 35y_train2 = np_utils.to_categorical(y_train, nb_classes) 36y_test2 = np_utils.to_categorical(y_test, nb_classes) 37model = model.fit(X_train2,y_train2,epochs=10,batch_size=4,validation_data=(X_test2,y_test2)) 38 39score = model.model.evaluate(x=X_test,y=y_test) 40 41print('loss=', score[0]) 42print('accuracy=', score[1]) 43 44# データの可視化(テストデータの先頭の5枚) 45for i in range(5): 46 plt.subplot(2, 5, i+1) 47 plt.imshow(X_test[i], 'gray') 48 49# 予測(テストデータの先頭の5枚) 50pred = np.argmax(model.predict(X_test[0:5]), axis=1) 51print(pred)
試したこと
次元数が違うのはわかりますがどこを変更したら良いのかわかりません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー