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中的字典遍历备忘
Jan 17 Python
python根据出生日期返回年龄的方法
Mar 26 Python
python生成式的send()方法(详解)
May 08 Python
python删除过期log文件操作实例解析
Jan 31 Python
django 修改server端口号的方法
May 14 Python
python实现nao机器人手臂动作控制
Apr 29 Python
Python实现Selenium自动化Page模式
Jul 14 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
python能自学吗
Jun 18 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
Matplotlib animation模块实现动态图
Feb 25 Python
python实现局部图像放大
Nov 17 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
php格式化json函数示例代码
2016/05/12 PHP
28个JS验证函数收集
2010/03/02 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
python不同系统中打开方法
2020/06/23 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
如何一键升级Python所有包
2020/11/05 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
学校岗位设置方案
2014/01/16 职场文书
年会活动策划方案
2014/01/23 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
鸿星尔克广告词
2014/03/21 职场文书
投标服务承诺书
2014/05/28 职场文书
素质教育学习心得体会
2016/01/19 职场文书
python文件目录操作之os模块
2021/05/08 Python
关于python类SortedList详解
2021/09/04 Python