数据学习
登录
注册
原创博客
期刊会议
学术世界
期刊出版社
领域期刊
SCI/SCIE/SSCI/EI简介
期刊列表
会议列表
所有期刊分区
学术期刊信息检索
JCR期刊分区查询
CiteScore期刊分区查询
中科院期刊分区查询
领域期刊分区
管理 - UTD24期刊列表
管理 - AJG(ABS)期刊星级查询
管理 - FMS推荐期刊列表
计算机 - CCF推荐期刊会议列表
高校期刊分区
南大核心(CSSCI)
合工大小核心
合工大大核心
AI资源仓库
AI领域与任务
AI研究机构
AI学术期刊
AI论文快讯
AI数据集
AI开源工具
AI模型
AI模型概览图
AI模型月报
AI基础大模型
AI预训练大模型
数据推荐
网址导航
我的网址导航
程序员必备网站
Keras中predict()方法和predict_classes()方法的区别
标签:
#Keras中predict()方法和predict_classes()方法的区别#
时间:2019/03/27 21:19:21
作者:夏天的风
正如[上篇博客](https://blog.csdn.net/tszupup/article/details/85198949)中所讲,在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官方微信,接受最新的AI技术推送
相关博客
最热博客