0

私はケラで列車とテストの学習曲線をプロットしようとしていましたが、次のコードではKeyError: 'val_acc errorが生成されます。ケラスの学習曲線をプロットすると、KeyError: 'val_acc'

公式文書<https://keras.io/callbacks/>'val_acc'を使用するために私は理解しないと、私のコードで使用する方法を知らない検証と精度監視を有効にする必要があると述べています。

ご協力いただければ幸いです。おかげさまで

seed = 7 
np.random.seed(seed) 

dataframe = pandas.read_csv("iris.csv", header=None) 
dataset = dataframe.values 
X = dataset[:,0:4].astype(float) 
Y = dataset[:,4] 

encoder = LabelEncoder() 
encoder.fit(Y) 
encoded_Y = encoder.transform(Y) 
dummy_y = np_utils.to_categorical(encoded_Y) 

kfold = StratifiedKFold(y=Y, n_folds=10, shuffle=True, random_state=seed) 
cvscores = [] 

for i, (train, test) in enumerate(kfold): 

    model = Sequential() 
    model.add(Dense(12, input_dim=4, init='uniform', activation='relu')) 
    model.add(Dense(3, init='uniform', activation='sigmoid')) 
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 
    history=model.fit(X[train], dummy_y[train], nb_epoch=200, batch_size=5, verbose=0) 
    scores = model.evaluate(X[test], dummy_y[test], verbose=0) 
    print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) 
    cvscores.append(scores[1] * 100) 

print("%.2f%% (+/- %.2f%%)" % (np.mean(cvscores), np.std(cvscores))) 


print(history.history.keys()) 
# summarize history for accuracy 
plt.plot(history.history['acc']) 
plt.plot(history.history['val_acc']) 
plt.title('model accuracy') 
plt.ylabel('accuracy') 
plt.xlabel('epoch') 
plt.legend(['train', 'test'], loc='upper left') 
plt.show() 

答えて

3

あなたのトレーンセットの検証分割を有効にする必要があるかもしれません。通常、バリデーションは、トレーンセットの1/3で行われます。コードでは、次のように変更してください:

history=model.fit(X[train], dummy_y[train],validation_split=0.33,nb_epoch=200, batch_size=5, verbose=0) 

これは機能します。

関連する問題