google colaboratry において以下のようなエラーメッセージが出てきました。
これはconv2dがエラーを出していると予想しているのですが、ここからそーすればいいのか調べてもよくわからなかったので、ご質問させていただきました。
エラー コード
ValueError: Input 0 of layer conv2d_1 is incompatible with the layer: : expected min_ndim=4, found ndim=1. Full shape received: (None,)
今回のコードは以下のようなものです。
from
1from keras.layers import Conv2D, MaxPooling2D 2from keras.layers import Activation, Dropout, Flatten, Dense 3from keras.utils import np_utils 4import keras 5import numpy as np 6import os, time, sys, math 7from google.colab import drive 8drive.mount('/content/drive') 9 10 11path = "/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/folder" 12classes =os.listdir(path) 13num_classes = len(classes) 14image_size = 50 15 16 17# メインの関数を定義する 18def main(): 19 X_train, X_test, y_train, y_test = np.load("/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/judge.npy", allow_pickle=True) # %ファイルからデータを持ってくる 20 X_train = X_train.astype("float") / 256 # %少数型になおしてから 21 X_test = X_test.astype("float") / 256 # %計算のブレをなくすために最大値で割ってみる 22 y_train = np_utils.to_categorical(y_train, num_classes) # %正解値は1、他は0。2(crow)なら「001」となる 23 y_test = np_utils.to_categorical(y_test, num_classes)# % 24 25 model = model_train(X_train, y_train) 26 model_eval(model, X_test, y_test) 27 28 29# %kerasの『cifer10_cnn.py』というファイルを参考にしている 30def model_train(X, y): 31 model = Sequential() 32 model.add(Conv2D(32, (3, 3), padding='same', input_shape=X.shape[1:]))# %1層目のこと 33 model.add(Activation('relu'))# %正のところだけを持ってくる 34 model.add(Conv2D(32, (3, 3)))# %2層目 35 model.add(Activation('relu')) 36 model.add(MaxPooling2D(pool_size=(2, 2))) 37 model.add(Dropout(0.25)) 38 39 model.add(Conv2D(64, (3, 3), padding='same')) 40 model.add(Activation('relu')) 41 model.add(Conv2D(64, (3, 3))) 42 model.add(Activation('relu')) 43 model.add(MaxPooling2D(pool_size=(2, 2))) 44 model.add(Dropout(0.25)) 45 46 model.add(Flatten()) # %データを一列に並べる 47 model.add(Dense(512)) 48 model.add(Activation('relu')) 49 model.add(Dropout(0.5)) 50 model.add(Dense(num_classes)) 51 model.add(Activation('softmax')) 52 53 opt = keras.optimizers.RMSprop(lr=0.0001, decay=1e-6) 54 55 model.compile(loss='categorical_crossentropy', 56 optimizer=opt, metrics=['accuracy']) 57 58 model.fit(X, y, batch_size=32, epochs=100) 59 60 # モデルの保存 61 model.save('/content/drive/My Drive/Colab Notebooks/kera_lesson_making_colab_ver/food_girls_cnn.h5') 62 63 return model# %20行目に返す 64 65def model_eval(model, X, y): 66 scores = model.evaluate(X, y, verbose=1) 67 print('Test Loss: ', scores[0]) 68 print('Test Accuracy:', scores[1]) 69 70if __name__ == "__main__": 71 main()
ぜひ回答していただけるとありがたいです。
よろしくお願いします
あなたの回答
tips
プレビュー