上一节《LeNet网络PaddlePaddle实现2》
本节介绍如何评估LeNet网络,具体步骤如下:
- 首先通过模型对象的 load_dygraph() 方法加载保存好的模型参数,通过 Layer 的 set_dict 方法将参数导入到模型中,然后调用模型对象的eval()方法,将模型的算子切换到预测评估模式。
- 读取测试数据执行网络正向计算,进行评估测试,输出不同 batch 数据下损失值和准确率的平均值
# 评估模型
print("start evaluating...")
with fluid.dygraph.guard():
# 实例化模型
model =LeNet(num_classes=10)
# 加载模型
model_dict, _ = fluid.load_dygraph("LeNet")
model.set_dict(model_dict)
model.eval() #切换到评估模式
images = test_images.astype("float32").reshape(-1,1,28,28)
labels = test_labels.astype("int64").reshape(-1,1)
images = fluid.dygraph.to_variable(images)
labels = fluid.dygraph.to_variable(labels)
logits = model(images)
preds = fluid.layers.softmax(logits)
losses = fluid.layers.softmax_with_cross_entropy(preds, labels)
avg_loss = fluid.layers.mean(losses)
acc = fluid.layers.accuracy(preds,labels)
print(logits.shape, preds.shape, losses.shape, acc.shape)
print("[validation] accuracy:{}; loss:{}".format(acc.numpy(), avg_loss.numpy()))
网友评论