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 django 实现验证码的功能实例代码
May 18 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
简单了解python模块概念
Jan 11 Python
解决python opencv无法显示图片的问题
Oct 28 Python
python+opencv实现高斯平滑滤波
Jul 21 Python
python for 循环获取index索引的方法
Feb 01 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
python实现快递价格查询系统
Mar 03 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
详解Python流程控制语句
Oct 28 Python
python爬虫爬取图片的简单代码
Jan 18 Python
Python爬取某拍短视频
Jun 11 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 excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
PHP仿微信发红包领红包效果
2016/10/30 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
通过js获取div的background-image属性
2013/10/15 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
PHP如何调用MYSQL存储过程
2014/05/30 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript