浅谈keras中Dropout在预测过程中是否仍要起作用


Posted in Python onJuly 09, 2020

因为需要,要重写训练好的keras模型,虽然只具备预测功能,但是发现还是有很多坑要趟过。其中Dropout这个坑,我记忆犹新。

一开始,我以为预测时要保持和训练时完全一样的网络结构,也就是预测时用的网络也是有丢弃的网络节点,但是这样想就掉进了一个大坑!因为无法通过已经训练好的模型,来获取其训练时随机丢弃的网络节点是那些,这本身就根本不可能。

更重要的是:我发现每一个迭代周期丢弃的神经元也不完全一样。

假若迭代500次,网络共有1000个神经元, 在第n(1<= n <500)个迭代周期内,从1000个神经元里随机丢弃了200个神经元,在n+1个迭代周期内,会在这1000个神经元里(不是在剩余得800个)重新随机丢弃200个神经元。

训练过程中,使用Dropout,其实就是对部分权重和偏置在某次迭代训练过程中,不参与计算和更新而已,并不是不再使用这些权重和偏置了(预测时,会使用全部的神经元,包括使用训练时丢弃的神经元)。

也就是说在预测过程中完全没有Dropout什么事了,他只是在训练时有用,特别是针对训练集比较小时防止过拟合非常有用。

补充知识:TensorFlow直接使用ckpt模型predict不用restore

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

# -*- coding: utf-8 -*-
# from util import *
import cv2
import numpy as np
import tensorflow as tf
# from tensorflow.python.framework import graph_util
import os

os.environ['CUDA_DEVICE_ORDER'] = 'PCI_BUS_ID'
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
image_path = './8760.pgm'

input_checkpoint = './model/xu_spatial_model_1340.ckpt'

sess = tf.Session()
saver = tf.train.import_meta_graph(input_checkpoint + '.meta')
saver.restore(sess, input_checkpoint)

# input:0作为输入图像,keep_prob:0作为dropout的参数,测试时值为1,is_training:0训练参数
input_image_tensor = sess.graph.get_tensor_by_name("coef_input:0")
is_training = sess.graph.get_tensor_by_name('is_training:0')
batch_size = sess.graph.get_tensor_by_name('batch_size:0')
# 定义输出的张量名称
output_tensor_name = sess.graph.get_tensor_by_name("xuNet/logits:0") # xuNet/Logits/logits
image = cv2.imread(image_path, 0)
# 读取测试图片
out = sess.run(output_tensor_name, feed_dict={input_image_tensor: np.reshape(image, (1, 512, 512, 1)),
                       is_training: False,
                       batch_size: 1})
print(out)

ckpt模型中的所有节点名称,可以这样查看

[n.name for n in tf.get_default_graph().as_graph_def().node]

以上这篇浅谈keras中Dropout在预测过程中是否仍要起作用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python中的序列化存储的方法
Apr 28 Python
python实现中文转换url编码的方法
Jun 14 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
Python简单生成随机数的方法示例
Mar 31 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
python Tensor和Array对比分析
Jan 08 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 #Python
python求解汉诺塔游戏
Jul 09 #Python
Django中Aggregation聚合的基本使用方法
Jul 09 #Python
Python  word实现读取及导出代码解析
Jul 09 #Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 #Python
实例讲解Python 迭代器与生成器
Jul 08 #Python
opencv 阈值分割的具体使用
Jul 08 #Python
You might like
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
Smarty模板配置实例简析
2019/07/20 PHP
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
shiro授权的实现原理
2017/09/21 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Python求解平方根的方法
2015/03/11 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
numpy返回array中元素的index方法
2018/06/27 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python SVD压缩图像的实现代码
2019/11/05 Python
Python中的全局变量如何理解
2020/06/04 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
医德医魂心得体会
2014/09/11 职场文书
维稳承诺书
2015/01/20 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技