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实现sublime3的less编译插件示例
Apr 27 Python
python中ConfigParse模块的用法
Sep 29 Python
python字符串的常用操作方法小结
May 21 Python
Python中的Descriptor描述符学习教程
Jun 02 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
Django 响应数据response的返回源码详解
Aug 06 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
Feb 25 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
Python中字符串对象语法分享
Feb 24 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
一些星际专用术语解释
2020/03/04 星际争霸
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
jquery模拟按下回车实现代码
2011/09/20 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
vue中实现滚动加载更多的示例
2017/11/08 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
Python入门篇之字典
2014/10/17 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python numpy 按行归一化的实例
2019/01/21 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
python实现日志按天分割
2019/07/22 Python
python 画函数曲线示例
2019/12/04 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
应届毕业生自我评价分享
2013/12/15 职场文书
拖鞋店创业计划书
2014/01/15 职场文书
师德演讲稿范文
2014/05/06 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
2014年中秋寄语
2014/08/11 职场文书
爱国主义电影观后感
2015/06/18 职场文书
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python