zoukankan      html  css  js  c++  java
  • TensorFlow学习---tf.nn.dropout防止过拟合

    一、 Dropout原理简述:

    tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层。

    Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。示意图如下:

    但在测试及验证中:每个神经元都要参加运算,但其输出要乘以概率p。

    二、tf.nn.dropout函数说明

    tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None,name=None) 

    上面方法中常用的是前两个参数:

    第一个参数x:指输入

    第二个参数keep_prob: 设置神经元被选中的概率,在初始化时keep_prob是一个占位符,  keep_prob = tf.placeholder(tf.float32) 。tensorflow在run时设置keep_prob具体的值,例如keep_prob: 0.5

    第五个参数name:指定该操作的名字。

    三、使用举例:

    1、dropout必须设置概率keep_prob,并且keep_prob也是一个占位符,跟输入是一样的

    [python] view plain copy

    1. keep_prob = tf.placeholder(tf.float32)  

    2、train的时候才是dropout起作用的时候,train和test的时候不应该让dropout起作用

    [python] view plain copy

    1. sess.run(train_step, feed_dict={xs: X_train, ys: y_train, keep_prob: 0.5})  

    [python] view plain copy

    1. train_result = sess.run(merged, feed_dict={xs: X_train, ys: y_train, keep_prob: 1})  

    2. test_result = sess.run(merged, feed_dict={xs: X_test, ys: y_test, keep_prob: 1})  

  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/Ph-one/p/9400235.html
Copyright © 2011-2022 走看看