WARNING: Logging before flag parsing goes to stderr.
calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use ‘rate’ instead of ‘keep_prob’. Rate should be set to ‘rate = 1 - keep_prob’.

tf.nn.dropout() 源码如下:

def dropout(x, keep_prob=None, noise_shape=None, seed=None, name=None, rate=None):'''官方备注节选Args:x: A floating point tensor.keep_prob: (deprecated) A deprecated alias for `(1-rate)`rate: A scalar `Tensor` with the same type as `x`. The probability that eachelement of `x` is discarded.'''try:keep = 1. - keep_prob if keep_prob is not None else Noneexcept TypeError:raise ValueError("keep_prob must be a floating point number or Tensor ""(got %r)" % keep_prob)rate = deprecation.deprecated_argument_lookup("rate", rate,"keep_prob", keep)if rate is None:raise ValueError("You must provide a rate to dropout.")return dropout_v2(x, rate, noise_shape=noise_shape, seed=seed, name=name)

官方备注,解读如下:

  1. 参数x,浮点型张量,为函数输入数据
  2. keep_prob 参数 :是一个已经“deprecated”的参数,这个参数后边版本就不要了,它现在还能用,它的功能要参考rate
  3. rate参数:和 x 形状一样的一个Tensor ,规定了x里每个元素被 扔掉(discarded)的概率 ,而且,数值上 rate = 1. - keep_prob ,emmmm,就是说,本来,keep_prob是一个和x形状一样的一个Tensor ,keep_prob 值规定了 x 里每个元素被keep的概率
  4. 这个源码里只做了3件事:
    1. 计算keep
    2. 计算 rate
    3. rate值不为空的情况下调用dropout_v2函数!!dropout_v2才会执行dropout
  5. deprecated_argument_lookup函数的功能是,如果keep_prob和rate都被传进了参数,报错,如果有keep值(1-keep_prob),返回keep给rate,如果没有keep_prob值,返回rate值给rate

举几个栗子:

import tensorflow as tf
sess = tf.InteractiveSession()
# 做准备
prob_keep = tf.placeholder(tf.float32) # 保留的概率
prob_drop = tf.placeholder(tf.float32) # 扔掉的概率
x = tf.Variable(tf.ones([10]))# dropout
y1 = tf.nn.dropout(x, prob_keep ) # 等价于 y1 = tf.nn.dropout(x, keep_prob = prob_keep )
y2 = tf.nn.dropout(x, rate = prob_drop)init = tf.global_variables_initializer( )
sess.run(init)
print(sess.run({'x':x, 'y1':y1}, feed_dict = {prob_keep : 0.2}))print(sess.run({'x':x,'y2':y2}, feed_dict = {prob_drop: 0.2 }))

结果是这样子的
x [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]
y1 [0., 5.0000005, 0., 5.0000005, 0., 5.0000005, 0. , 0. , 5.0000005, 5.0000005]
y2 [1.25, 1.25, 1.25, 1.25, 1.25, 1.25, 0. , 1.25, 0. , 0. ]

y1 对x执行dropout,将5个元素置为0,剩余5个,变为 原值 1 * 1/0.2
y2 对x执行dropout,将3个元素置为0,剩余7个,变为 原值 1 * 1/(1-0.2)

鹅,执行y1时就会报WARNING
所以,下次如果报WARNING
你看到的教程里边这句,
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob )
改成:
h_fc1_drop = tf.nn.dropout(h_fc1, rate = 1-keep_prob )
就没有警报了

或者你如果有强迫症的话,干脆上一句也改了:
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob )
改成
drop_prob = tf.placeholder(“float”)
h_fc1_drop = tf.nn.dropout(h_fc1, rate = drop_prob )

但是!!!这里!!!后边训练的时候的赋值是要改的!!就下面三处:

  • train_accuracy = accuracy.eval(feed_dict={x:batch[0], y_: batch[1], drop_prob :0.0 })
  • train_step.run(feed_dict={x: batch[0], y_: batch[1],drop_prob :0.5 })
  • print内:accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels,drop_prob :0.0 }) )

tf.nn.dropout() 警报信息处理相关推荐

  1. 详解tf.nn.dropout

    tensoflow中有两个dropout函数容易混淆 tf.nn.dropout 中参数 keep_prob :每一个元素被保存下的概率. tf.layer.dropout 中参数 rate :每一个 ...

  2. TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题

    一:适用范围: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层 二:原理: dropout就是在不同的训练过程中随机扔掉一部分神经元.也就是让 ...

  3. tf.nn.dropout和tf.keras.layers.Dropout的区别(TensorFlow2.3)与实验

    这里写目录标题 场景:dropout和Dropout区别 问题描述: 结论: 深层次原因:dropout是底层API,Dropout是高层API 场景:dropout和Dropout区别 全网搜索tf ...

  4. tf.nn.dropout

    转自:https://blog.csdn.net/huahuazhu/article/details/73649389 tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的 ...

  5. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  6. 【TensorFlow】TF-tf.nn.dropout

    官方的接口是这样的 tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None) 根据给出的keep_prob参数,将输入te ...

  7. TensorFlow(七)tf.nn库

    ##tf.nn,tf.layers, tf.contrib模块有很多功能是重复的 下面是对三个模块的简述: tf.nn :提供神经网络相关操作的支持,包括卷积操作(conv).池化操作(pooling ...

  8. deep_learning 03. tf.nn.rnn_cell.MultiRNNCell()

    开始的话: 从基础做起,不断学习,坚持不懈,加油. 一位爱生活爱技术来自火星的程序汪 前面两节讲了两个基础的BasicRNNCell和BasicLSTMCell,今天就来看下怎么把这些简单的cell给 ...

  9. tf.nn,tf.layers, tf.contrib模块介绍

    一.tf.nn,tf.layers, tf.contrib概述 我们在使用tensorflow时,会发现tf.nn,tf.layers, tf.contrib模块有很多功能是重复的,尤其是卷积操作,在 ...

最新文章

  1. linux使用nginx负载udp
  2. Java中将CST格式的时间字符串进行格式化
  3. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗
  4. Android Studio 运行模拟器时提示 “/dev/kvm device: permission denied”
  5. mysql查询含有某个值的表_MYSQL查询数据表中某个字段包含某个数值
  6. python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型
  7. coco数据集大小分类_Microsoft COCO 数据集
  8. MVC过滤整个项目输入关键字
  9. 中药和西药的历史渊源,到底谁才是科学好药
  10. vscode与git分支_Visual Studio Code 使用Git进行版本控制
  11. ningx访问日志切割
  12. SharePoint 2013 对象模型操作网站设置菜单
  13. 背包九讲----整理+例题
  14. VGG16模型详解 and 代码搭建
  15. katalon studio基础使用教程
  16. 三角形周长最短问题_最短路径问题之三角形的周长最小
  17. SPA项目开发之首页导航+左侧菜单
  18. 实验一 熟悉常用的Linux操作和Hadoop操作
  19. fastboot常用指令
  20. 14-《ARKit by Tutorials》读书笔记1:开始入门

热门文章

  1. SAP会计借贷(转载)
  2. Android吃鸡 3dtouch,绝地求生刺激战场3Dtouch怎么用 刺激战场3Dtouch吃鸡技巧详解
  3. AXI协议详解(1)-协议简介
  4. 百度网盘超级会员,年卡低至198元!百度官方直充,会员实时生效!
  5. Ural 2045 Richness of words
  6. 自然语言处理系列十七》中文分词》分词工具实战》Python的Jieba分词
  7. N1盒子安装 aria2(带AriaNg前端)
  8. log4j2远程代码执行漏洞学习总结
  9. 微信小程序自定义顶部栏、等十个重要的常见功能总结
  10. 华三模拟器之完成IPv6 to IPv4隧道实验