浅谈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读写文件方法总结
Jun 09 Python
Python迭代和迭代器详解
Nov 10 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
Python队列、进程间通信、线程案例
Oct 25 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python sorted函数原理解析及练习
Feb 10 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
Jun 30 Python
Python新建项目自动添加介绍和utf-8编码的方法
Dec 26 Python
Autopep8的使用(python自动编排工具)
Mar 02 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(7) php 字符串相关应用
2010/03/05 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
react-router中的属性详解
2017/06/01 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
JS代码实现电脑配置检测功能
2018/03/21 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python3.2模拟实现webqq登录
2016/02/15 Python
python模块之re正则表达式详解
2017/02/03 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
医学实习生自我鉴定
2013/12/12 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
诚信承诺书模板
2014/05/26 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python