4つの数の要素をA(1)かB(0)のラベル付けし、新たに与えた4つの数を、AかBかの分類をしたいです。
今、下記のコードで学習まではうまくいくのですが、test.csvという4つの数を入れたデータを、predict()で予測しようとすると”ValueError: Error when checking input: expected dense_1_input to have shape (4,) but got array with shape (1,)”とのエラーコードが出てしまいます。
入力データを3つ増やし4x4行列の形にするとキチンと予測はできます。
各行毎の4つのデータを入力している動作を想定しているので、自分の中では1x4の行列でも動くのではと考えたのですが、なぜエラーが起こるのかを知りたいです。
※shapeの結果を追記※
それぞれの行列のshapeは以下のとおりです。testdataが今、予測したいデータで、dataが教師データです。
Python
1>>> print(testdata.shape) 2(4,) 3>>> print(data.shape) 4(100, 4) 5>>>
入力データ
12.7404,15.3204,9.74263,13.086
教師データの一部
9.60385,11.0032,9.32986,9.25753 9.37304,13.0028,11.0855,9.64098 8.40733,12.6233,10.2337,8.79376 8.73675,12.249,8.87519,7.89159 ・ ・ ・ 11.7207,14.0737,10.9952,9.37442 12.7404,16.0793,14.1397,12.5642 11.2507,15.38,12.9987,12.0801 11.9871,15.1148,11.6168,10.9482 11.0797,13.8117,9.74263,8.2056 11.6802,15.2681,12.8943,12.1861
Python
1import numpy as np 2from keras.utils import np_utils 3from keras.models import Sequential 4from keras.layers import Dense, Activation 5 6data = np.loadtxt(fname="CSV/teacher.csv", delimiter=",") 7testdata = np.loadtxt(fname="CSV/test.csv", delimiter=",") 8 9labels = np.array( 10 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 11 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]) 12labels = np_utils.to_categorical(labels) 13 14model = Sequential() 15model.add(Dense(10, input_dim=4)) 16model.add(Activation('relu')) 17model.add(Dense(2, activation='softmax')) 18 19model.compile('rmsprop', 'categorical_crossentropy', metrics=['accuracy']) 20 21model.fit(data, labels, epochs = 100, validation_split = 0.2) 22 23test=model.predict(testdata) 24print(test) 25
回答1件
あなたの回答
tips
プレビュー