在 Keras 中分别训练和测试准确度

时间:2021-05-22 11:39:37

标签: python machine-learning keras deep-learning

这是我的模型:

def evaluate_model(X_train, y_train,X_test,y_test):

  verbose=1
  epochs=50
  batch_size = 32
  
  n_outputs = 1
  model = Sequential()
  model.add(Conv1D(filters=32, kernel_size=6, activation='relu', input_shape=(25,1)))
  model.add(Conv1D(filters=32, kernel_size=6, activation='relu'))
  model.add(Dropout(0.3))
  model.add(MaxPooling1D(pool_size=2))
  model.add(Flatten())
  model.add(Dense(100, activation='relu'))
  model.add(Dense(n_outputs, activation='sigmoid'))
  model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  # fit network
  model.fit(X_train, y_train,epochs=50, batch_size=batch_size, verbose=1)
      # evaluate model
  _, accuracy = model.evaluate(X_test, y_test, batch_size=batch_size, verbose=1)
  return accuracy
  
# summarize scores
def summarize_results(scores):
    print(scores)
    m, s = mean(scores), std(scores)
    print('Accuracy: %.3f%% (+/-%.3f)' % (m, s))
 
# run an experiment
def run_experiment(repeats=5):

    # repeat experiment
    scores = list()
    for r in range(repeats):
        score = evaluate_model(X_train, y_train,X_test,y_test)
        score = score * 100.0
        print('>#%d: %.3f' % (r+1, score))
        scores.append(score)
    # summarize results
    summarize_results(scores)

# run the experiment
run_experiment()

如何分别获得训练和测试准确度?现在我只能通过 model.evaluate 获得测试准确性。

1 个答案:

答案 0 :(得分:2)

您获得的准确度取决于您与 model.evaluate() 一起使用的参数;如果将 X_testy_test 分别替换为 X_trainy_train,您将获得训练准确率。因此,要获得两者,您应该将 evaluate_model 函数的最后几行修改为:

_, train_accuracy = model.evaluate(X_train, y_train, batch_size=batch_size, verbose=1)
_, test_accuracy = model.evaluate(X_test, y_test, batch_size=batch_size, verbose=1)
return train_accuracy, test_accuracy