前提・実現したいこと
エラーの意味は分かるのですが、コードの間違いがわかりません。
発生している問題・エラーメッセージ
ValueError: Input arrays should have the same number of samples as target arrays. Found 4602 input samples and 4999 target samples.
該当のソースコード
from keras.models import Sequential
from keras.layers.core import Dense,Dropout,Activation
from keras.callbacks import EarlyStopping
import pandas as pd,numpy as np
csv=pd.read_csv("bmi.csv")
csv["weight"]/=100
csv["height"]/=200
X =csv[["weight","height"]]
bclass ={"thin":[1,0,0],"normal":[0,1,0],"fat":[0,0,1]}
y=np.empty((20000,3))
for i,v in enumerate(csv["label"]):
y[i]=bclass[v]
X_train,y_train=X[1:15001],y[1:15001]
X_test,y_test=X[15001:20001],y[15001:20001]
model =Sequential()
model.add(Dense(512,input_shape=(2,)))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(512))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(3))
model.add(Activation("softmax"))
model.compile(loss="categorical_crossentropy",optimizer="rmsprop",metrics=["accuracy"])
hist=model.fit(X_train,y_train,batch_size=100,epochs=20,validation_split=0.1,callbacks=[EarlyStopping(monitor="val_loss",patience=2)],verbose=1)
score=model.evaluate(X_test,y_test)
print("loss=",score[0])
print("accuracy=",score[1])
試したこと
最後の3行を除いた上のコードは正常に動き、
hist=model.fit(X_train,y_train,batch_size=100,epochs=20,validation_split=0.1,callbacks=[EarlyStopping(monitor="val_loss",patience=2)],verbose=1)
Train on 13500 samples, validate on 1500 samples
Epoch 1/20
13500/13500 [==============================] - 1s 99us/step - loss: 0.5004 - accuracy: 0.7974 - val_loss: 0.2615 - val_accuracy: 0.9100
Epoch 2/20
13500/13500 [==============================] - 1s 80us/step - loss: 0.2532 - accuracy: 0.8945 - val_loss: 0.2641 - val_accuracy: 0.8680
Epoch 3/20
13500/13500 [==============================] - 1s 77us/step - loss: 0.1893 - accuracy: 0.9199 - val_loss: 0.1465 - val_accuracy: 0.9387
Epoch 4/20
13500/13500 [==============================] - 1s 74us/step - loss: 0.1643 - accuracy: 0.9271 - val_loss: 0.1356 - val_accuracy: 0.9353
Epoch 5/20
13500/13500 [==============================] - 1s 74us/step - loss: 0.1547 - accuracy: 0.9325 - val_loss: 0.2488 - val_accuracy: 0.8767
Epoch 6/20
13500/13500 [==============================] - 1s 74us/step - loss: 0.1471 - accuracy: 0.9367 - val_loss: 0.1881 - val_accuracy: 0.9033
という結果を得ました。
ほかの方の質問を拝見して、エラーメッセージが入力と出力の数が一致していないことは分かるのですが、コードのどこにエラーがあるかわからず苦戦しています。
ご教授願います。
補足情報(FW/ツールのバージョンなど)
keras 2.3.1
bmi.csvは20000件からなるBMIに関するデータです。
回答1件
あなたの回答
tips
プレビュー