• 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})  

  • 相关阅读:
    Git与GitHub的基本使用
    HTML&CSS基础-外边框
    HTML&CSS基础-内边框
    SHELL脚本编程变量输入
    GoLang基础数据类型-切片(slice)详解
    GoLang基础数据类型--->数组(array)详解
    SHELL脚本编程的运算符
    SHELL脚本编程变量详解
    HTML&CSS基础-边框简写属性
    GoLang基础数据类型--->字符串处理大全
  • 原文地址:https://www.cnblogs.com/Ph-one/p/9400235.html
Copyright © 2020-2023  润新知