【问题标题】:Check if the way of evaluating keras model via unseen data is correct检查通过看不见的数据评估keras模型的方式是否正确
【发布时间】:2019-06-24 03:50:03
【问题描述】:

我研究了Keras,并创建了我的第一个神经网络模型,如下所示:

from keras.layers import Dense
import keras
from keras import Sequential
from sklearn.metrics import accuracy_score

tr_X, tr_y = getTrainingData()

# NN Architecture
model = Sequential()
model.add(Dense(16, input_dim=tr_X.shape[1]))
model.add(keras.layers.advanced_activations.PReLU())

model.add(Dense(16))
model.add(keras.layers.advanced_activations.PReLU())

model.add(Dense(1, activation='sigmoid'))

# Compile the Model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Fit the Model
model.fit(tr_X, tr_y, epochs=1000, batch_size=200, validation_split=0.2)

# ----- Evaluate the Model (Using UNSEEN data) ------
ts_X, ts_y = getTestingData()
yhat_classes = model.predict_classes(ts_X, verbose=0)[:, 0]
accuracy = accuracy_score(ts_y, yhat_classes)
print(accuracy)

我不确定我的代码的最后一部分,即使用model.predict_classes() 进行模型评估,其中新数据通过自定义方法getTestingData() 加载。见我的目标是使用新的 UNSEEN 数据测试最终模型以评估其预测。我的问题是关于这部分:我是否正确评估了模型?

谢谢,

【问题讨论】:

    标签: keras neural-network


    【解决方案1】:

    是的,没错。您可以使用 predict 或 predict_classes 来获得对测试数据的预测。如果您直接需要损失和指标,您可以通过输入 ts_X 和 ts_y 使用评估方法。

    y_pred = model.predict(ts_X)
    
    loss, accuracy = model.evaluate(ts_X, ts_y)
    

    https://keras.io/models/model/#predict

    https://keras.io/models/model/#evaluate

    predict 和 predict_classes 的区别:What is the difference between "predict" and "predict_class" functions in keras?

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 1970-01-01
      • 2019-10-07
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多