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基于queue和threading实现多线程下载实例
Oct 08 Python
Python常用小技巧总结
Jun 01 Python
Python随机读取文件实现实例
May 25 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python读写LMDB文件的方法
Jul 02 Python
python实现键盘控制鼠标移动
Nov 27 Python
python实现监控阿里云账户余额功能
Dec 16 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
python入门之井字棋小游戏
Mar 05 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python Pandas读取Excel日期数据的异常处理方法
Feb 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防注
2007/01/15 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
js实现小星星游戏
2020/03/23 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
django做form表单的数据验证过程详解
2019/07/26 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
辅导员评语
2014/05/04 职场文书
任命书怎么写
2014/06/04 职场文书
公司周年庆活动方案
2014/08/25 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
Django使用redis配置缓存的方法
2021/06/01 Redis
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android