13)卷积网络预测新样本; keras:deeplizard;

本文档通过代码展示了如何在Keras中评估预训练模型的性能。首先加载数据集,然后进行预测,接着使用混淆矩阵分析模型的准确率。通过保存模型避免重复训练,并讨论了模型调优和预训练模型的fine-tuning策略。
摘要由CSDN通过智能技术生成

开始搞

注意:这里还是需要 之前训练的模型,所以,上一篇 文章 所做的事情,咱还得做一遍

做好前面 的 重复工作之后,写今天的代码吧

现在 开始 写 13 课 的代码

我就直接 上 代码了

## tt1 : 准备好 数据呀
test_imgs, test_labels = next(test_batches)

## tt2 : 看一看咱们 准备好的数据 是啥样
plotImages(test_imgs)
print(test_labels)

## tt3 : 就开始 预测吧

predictions = model.predict(x=test_batches, steps=len(test_batches), verbose=0)


## tt4 : 看看 本源 的 predictions

print(predictions)

## tt5: 看看 round 之后的 predictions
np.round(predictions)

## tt6 : 肉眼看准确率可不行,咱们用 混淆矩阵
cm = confusion_matrix(y_true=test_batches.classes, y_pred=np.argmax(predictions, axis=-1))

## tt7: 这里 的 test_batches.classes 长什么样呢?
test_batches.classes

## tt8: 本来我们的输出是一个二元组(这叫做one-hot encode),表示某个类别的可能性,现在我们希望 给出 最终答案,所以:
np.argmax(predictions, axis=-1)
print(predections) # 结果证明 np.argmax 不会修改原数组 predictions

## tt9: 从 sklearn 里面 直接拿来的 画图的 函数
def plot_confusion_matrix(cm, classes,
                          normalize=False,
                          title='Confusion matrix',
                          cmap=plt.cm.Blues):
    """
    This function prints and plots the confusion matrix.
    Normalization can be applied by setting `normalize=True`.
    """
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)

    if normalize:
        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
        print("Normalized confusion matrix")
    else:
        print('Confusion matrix, without normalization')

    print(cm)

    thresh = cm.max() / 2.
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, cm[i, j],
            horizontalalignment="center",
            color="white" if cm[i, j] > thresh else "black")

    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

## tt10: 咱得知道类别
test_batches.class_indices

## tt11: 还等啥,最后一波拿高地,二营长,你他娘的 matplot 呢? 给劳资画!
cm_plot_labels = ['cat','dog']
plot_confusion_matrix(cm=cm, classes=cm_plot_labels, title='Confusion Matrix')

下面 是每个 ttx 的 运行截图,方便以后自己看

tt2 一批测试数据 10个人,长得真帅

在这里插入图片描述

tt3 没有输出

因为 verbose = 0

tt4 看看 本源 的 predictions

在这里插入图片描述

备注: 这里输出 正好 100 行

tt5: 看看 round 之后的 predictions

在这里插入图片描述

tt7: 这里 的 test_batches.classes 长什么样呢?

在这里插入图片描述

tt8: 给出类别

运行错误了一次

在这里插入图片描述
重新跑 上面 的 红色 按钮 部分,得到 np.argmax() 的返回:

在这里插入图片描述

tt10, 知道 class

在这里插入图片描述

tt11: 最后画 混淆矩阵 图片

在这里插入图片描述

可见 ,我们的模型,效果不好,我们会在下一节课 ,使用 pre-train 的模型
也就是i人家 弄好的模型,进行 fune-tuning, 也就 微型地调整一下人家,可能 ,这就是 学长们 说的 「炼丹」 吧。

再刻意练习一下: 保存模型

colab 的 平穷用户如我,一会不动,其中的 环境 就被 google 给清理了,然后才有 本文开头的这出:

做前一些课程里面的 重复 工作: 下载数据,训练模型


为了偷懒,我学着 保存模型,用以 未来的 复现和 装逼

如下搞:

做任何代码运行 之前 的 目录:

在这里插入图片描述
跑这个代码:

import os.path
if os.path.isfile('models/c10cnn_model.h5') is False:
	model.save('models/c10cnn_model.h5')

之前确认一下 自己 在哪,在哪个 工作目录:

确保 在 /content在这里插入图片描述
搞好后:

在这里插入图片描述
你就留下了 遗产 ,赶紧保存到本地;

在这里插入图片描述

参考

视频

文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值