keras topN显示,自编写代码案例


Posted in Python onJuly 03, 2020

对于使用已经训练好的模型,比如VGG,RESNET等,keras都自带了一个keras.applications.imagenet_utils.decode_predictions的方法,有很多限制:

def decode_predictions(preds, top=5):
 """Decodes the prediction of an ImageNet model.

 # Arguments
 preds: Numpy tensor encoding a batch of predictions.
 top: Integer, how many top-guesses to return.

 # Returns
 A list of lists of top class prediction tuples
 `(class_name, class_description, score)`.
 One list of tuples per sample in batch input.

 # Raises
 ValueError: In case of invalid shape of the `pred` array
  (must be 2D).
 """
 global CLASS_INDEX
 if len(preds.shape) != 2 or preds.shape[1] != 1000:
 raise ValueError('`decode_predictions` expects '
    'a batch of predictions '
    '(i.e. a 2D array of shape (samples, 1000)). '
    'Found array with shape: ' + str(preds.shape))
 if CLASS_INDEX is None:
 fpath = get_file('imagenet_class_index.json',
    CLASS_INDEX_PATH,
    cache_subdir='models',
    file_hash='c2c37ea517e94d9795004a39431a14cb')
 with open(fpath) as f:
  CLASS_INDEX = json.load(f)
 results = []
 for pred in preds:
 top_indices = pred.argsort()[-top:][::-1]
 result = [tuple(CLASS_INDEX[str(i)]) + (pred[i],) for i in top_indices]
 result.sort(key=lambda x: x[2], reverse=True)
 results.append(result)
 return results

把重要的东西挖出来,然后自己敲,这样就OK了,下例以MNIST数据集为例:

import keras
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
import tflearn
import tflearn.datasets.mnist as mnist

def decode_predictions_custom(preds, top=5):
 CLASS_CUSTOM = ["0","1","2","3","4","5","6","7","8","9"]
 results = []
 for pred in preds:
 top_indices = pred.argsort()[-top:][::-1]
 result = [tuple(CLASS_CUSTOM[i]) + (pred[i]*100,) for i in top_indices]
 results.append(result)
 return results

x_train, y_train, x_test, y_test = mnist.load_data(one_hot=True)

model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=784))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
  optimizer='sgd',
  metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=128)
# score = model.evaluate(x_test, y_test, batch_size=128)
# print(score)
preds = model.predict(x_test[0:1,:])
p = decode_predictions_custom(preds)
for (i,(label,prob)) in enumerate(p[0]):
 print("{}. {}: {:.2f}%".format(i+1, label,prob)) 
# 1. 7: 99.43%
# 2. 9: 0.24%
# 3. 3: 0.23%
# 4. 0: 0.05%
# 5. 2: 0.03%

补充知识:keras简单的去噪自编码器代码和各种类型自编码器代码

我就废话不多说了,大家还是直接看代码吧~

start = time()
 
from keras.models import Sequential
from keras.layers import Dense, Dropout,Input
from keras.layers import Embedding
from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D
from keras import layers
from keras.models import Model
 
# Parameters for denoising autoencoder
nb_visible = 120
nb_hidden = 64
batch_size = 16
# Build autoencoder model
input_img = Input(shape=(nb_visible,))
 
encoded = Dense(nb_hidden, activation='relu')(input_img)
decoded = Dense(nb_visible, activation='sigmoid')(encoded)
 
autoencoder = Model(input=input_img, output=decoded)
autoencoder.compile(loss='mean_squared_error',optimizer='adam',metrics=['mae'])
autoencoder.summary()
 
# Train
### 加一个early_stooping
import keras 
 
early_stopping = keras.callbacks.EarlyStopping(
  monitor='val_loss',
  min_delta=0.0001,
  patience=5, 
  verbose=0, 
  mode='auto'
)
autoencoder.fit(X_train_np, y_train_np, nb_epoch=50, batch_size=batch_size , shuffle=True,
        callbacks = [early_stopping],verbose = 1,validation_data=(X_test_np, y_test_np))
# Evaluate
evaluation = autoencoder.evaluate(X_test_np, y_test_np, batch_size=batch_size , verbose=1)
print('val_loss: %.6f, val_mean_absolute_error: %.6f' % (evaluation[0], evaluation[1]))
 
end = time()
print('耗时:'+str((end-start)/60))

keras各种自编码代码

以上这篇keras topN显示,自编写代码案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python字符串替换示例
Apr 24 Python
python生成随机mac地址的方法
Mar 16 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
python插入排序算法实例分析
Jul 03 Python
解决python删除文件的权限错误问题
Apr 24 Python
python 读取DICOM头文件的实例
May 07 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python3模拟curl发送post请求操作示例
May 03 Python
python 画条形图(柱状图)实例
Apr 24 Python
python 实现批量图片识别并翻译
Nov 02 Python
用python画城市轮播地图
May 28 Python
python如何使用代码运行助手
Jul 03 #Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 #Python
python3 简单实现组合设计模式
Jul 02 #Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 #Python
django 装饰器 检测登录状态操作
Jul 02 #Python
详解用Python爬虫获取百度企业信用中企业基本信息
Jul 02 #Python
django 实现后台从富文本提取纯文本
Jul 02 #Python
You might like
php访问查询mysql数据的三种方法
2006/10/09 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
jQuery使用手册之一
2007/03/24 Javascript
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
javascript回到顶部特效
2016/07/30 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
python网络编程学习笔记(一)
2014/06/09 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python 代码调试技巧示例代码
2020/08/11 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
职专应届生求职信
2013/11/16 职场文书
事务机电主管工作职责
2014/02/25 职场文书
关于环保的活动方案
2014/08/25 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
管理失职检讨书范文
2015/05/05 职场文书
停车场管理制度范本
2015/08/05 职场文书