tensorflow教程之tf.nn.dropout()方法解析,让你对神经网络不在头晕目眩

我们要知道tf.nn.dropout()是一个防止模型过于拟合的方法,该方法顾名思义就是丢弃一部分数据,来达到防止过于拟合的目的!

我们看一个例子,这个是全连接层的操作

import tensorflow as tf

a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3])
b = tf.constant([7.5, 8.4, 9.4, 10.41, 11.1, -12.0], shape=[3,2])
c=tf.constant([1.4,2.4,3.7,4.9],shape=[2,2])
d=tf.matmul(a,b)+c
m=tf.nn.relu(d)
g=tf.nn.dropout(m,keep_prob=0.8)
with tf.Session() as sess:
    print("全连接层以后输出的结果:",sess.run(d))
    print("激活函数以后的结果",sess.run(m))
    print("防止过于拟合的结果:",sess.run(g))

激励函数就是将负值全部填充为0,避免运算量大!

防止过于拟合函数又名丢弃函数,

keep_prob=0.8 就是保留激励层数据的0.8,这个值越大丢弃的数据越少,这个值越小丢弃的值越多,keep_prob是保留数据的概率!

tensorflow教程之tf.nn.dropout()方法解析,让你对神经网络不在头晕目眩_第1张图片

如果是keep_prob=1 就是不丢弃数据

tensorflow教程之tf.nn.dropout()方法解析,让你对神经网络不在头晕目眩_第2张图片 

keep_prob=0.5的时候,总共4个数据保留2个

tensorflow教程之tf.nn.dropout()方法解析,让你对神经网络不在头晕目眩_第3张图片

值也会相应的增加,而且最重要的是每一次运行的结果都不一样!

当前全连接层以及激励层的结果都是一样的!

tensorflow教程之tf.nn.dropout()方法解析,让你对神经网络不在头晕目眩_第4张图片 


 

你可能感兴趣的:(人工智能专栏)