繁体   English   中英

Keras Model 在评估时返回预测

[英]Keras Model return predictions when evaluating

我有一个包含多个字段的数据集,但只有两个与我的机器学习实施相关。 rest 不应被考虑用于预测,但可能会揭示有趣的相关性。

调用model.evaluate时有没有办法返回预测结果? 例如:

[loss, accuracy, predicted_results] = model.evaluate(input, results)

AFAIK,我们无法使用model.evaluatex进行预测,它只是返回lossaccsource 但是根据您的需要,您可以编写自定义 class 并定义必要的调用,例如.evaluate.predict 让我们定义一个简单的 model 来演示。

训练和跑步

import tensorflow as tf
import numpy as np  

img = tf.random.normal([20, 32], 0, 1, tf.float32)
tar = np.random.randint(2, size=(20, 1))

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(10, input_dim = 32, 
                       kernel_initializer ='normal', activation= 'relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', 
              optimizer='adam', metrics=['accuracy'])
model.fit(img, tar, epochs=2, verbose=2)

Epoch 1/2
1/1 - 1s - loss: 0.7083 - accuracy: 0.5000
Epoch 2/2
1/1 - 0s - loss: 0.6983 - accuracy: 0.5000

现在,根据您的要求,我们可以执行以下操作:

class Custom_Evaluate:
    def __init__(self, model):
        self.model = model 
    def eval_predict(self, x, y):
        loss, acc = self.model.evaluate(x, y)
        pred = self.model.predict(x)
        return loss, acc, pred 

custom_evaluate = Custom_Evaluate(model)
loss, acc, pred = custom_evaluate.eval_predict(img, tar)
print(loss, acc)
print(pred)
0.6886215806007385 0.6499999761581421
[[0.5457604 ]
 [0.6126752 ]
 [0.53668976]
 [0.40323135]
 [0.37159938]
 [0.5520069 ]
 [0.4959099 ]
 [0.5363802 ]
 [0.5033434 ]
 [0.65680957]
 [0.6863682 ]
 [0.44409862]
 [0.4672098 ]
 [0.49656072]
 [0.620726  ]
 [0.47991502]
 [0.58834356]
 [0.5245693 ]
 [0.5359181 ]
 [0.4575624 ]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM