DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

Keras中predict()方法和predict_classes()方法的区别

2019/03/27 21:19:21
7,530 阅读
Keras中predict()方法和predict_classes()方法的区别

        正如上篇博客中所讲,在Keras框架下执行深度学习任务时,一般会先根据训练数据集训练出模型,然后拿训练好的模型到生产环境(测试集)中部署并生产。以分类问题为例,当训练好了分类模型之后,我们要用这个模型预测测试集中每一个样本的标签,这里有两个常用的方法:predict()方法和predict_classes()方法,下面将以具体例子说明二者的区别。

相关文件的下载地址如下: 链接:https://pan.baidu.com/s/1qQU3FTtGeLYK5jXn0cRpQQ 提取码:qn8r

1 predict()方法         当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标签。下面以卷积神经网络中的图片分类为例说明,代码如下:

import numpy as np
import scipy.misc
from keras.models import model_from_json
from keras.optimizers import SGD

# 加载模型
model_architecture = 'cifar10_architecture.json'
model_weights = 'cifar_weights.h5'
model = model_from_json(open(model_architecture).read())		# 加载模型结构
model.load_weights(model_weights)		# 加载模型权重

# 加载图片
img_names = ['cat.jpg', 'deer.jpg', 'dog.jpg']
# np.transpose:对数组进行转置,返回原数组的视图
# scipy.misc.imresize:重新调整图片的形状
# scipy.misc.imread:将图片读取出来,返回np.array类型
imgs = [np.transpose(scipy.misc.imresize(scipy.misc.imread(img_name), (32, 32)), (1, 0, 2)).astype('float32')
		for img_name in img_names]
imgs = np.array(imgs) / 255		# 归一化

# 训练
optim = SGD()
model.compile(loss='categorical_crossentropy', optimizer=optim, metrics=['accuracy'])		# 编译模型

# 预测样本属于每个类别的概率
print(model.predict(imgs))		# 打印概率
print(np.argmax(model.predict(imgs), axis=1))		# 打印最大概率对应的标签
# [[3.3745366e-01 2.2980917e-02 2.0197949e-03 1.2046755e-02 1.9850987e-03
#   1.3152690e-04 4.0220530e-03 1.3779138e-03 5.9722424e-01 2.0758053e-02]
#  [5.0913623e-06 5.6117901e-08 9.7215974e-01 2.0343825e-05 2.3693956e-02
#   1.6027538e-03 7.3659585e-06 2.5106100e-03 5.8250910e-10 1.4506637e-09]
#  [7.1339104e-03 6.1033275e-06 2.1771197e-03 9.7346401e-01 2.2141664e-06
#   1.6861971e-02 8.6817810e-05 1.2291509e-04 4.7768017e-06 1.4035056e-04]]
# [8 2 3]

效果截图如下:

2 predict_classes()方法         当使用predict_classes()方法进行预测时,返回的是类别的索引,即该样本所属的类别标签。以卷积神经网络中的图片分类为例说明,代码如下:

import numpy as np
import scipy.misc
from keras.models import model_from_json
from keras.optimizers import SGD

# 加载模型
model_architecture = 'cifar10_architecture.json'
model_weights = 'cifar_weights.h5'
model = model_from_json(open(model_architecture).read())		# 加载模型结构
model.load_weights(model_weights)		# 加载模型权重

# 加载图片
img_names = ['cat.jpg', 'deer.jpg', 'dog.jpg']
# np.transpose:对数组进行转置,返回原数组的视图
# scipy.misc.imresize:重新调整图片的形状
# scipy.misc.imread:将图片读取出来,返回np.array类型
imgs = [np.transpose(scipy.misc.imresize(scipy.misc.imread(img_name), (32, 32)), (1, 0, 2)).astype('float32')
		for img_name in img_names]
imgs = np.array(imgs) / 255		# 归一化

# 训练
optim = SGD()
model.compile(loss='categorical_crossentropy', optimizer=optim, metrics=['accuracy'])		# 编译模型

# 预测样本类别
predictions = model.predict_classes(imgs)
print(predictions)
# [8 2 3]

结果截图如下:

在这里插入图片描述
在这里插入图片描述

        欢迎交流! QQ:3408649893

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署