一般出现过拟合的情况,网络结构太复杂或者数据量太小
防止过拟合的方法:
正则化方法:加到cost function中C0,通过权值改变cost,参数对输入值影响不大的,可以丢弃掉。
dropout:训练的时候每次迭代过程中然部分神经元不起作用,测试的时候所有神经元都用上。
示例代码:
未使用dropout:
import tensorflow as tf
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 载入数据集
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
# 每个批次的大小,一次性放入神经网络的数据数量,以矩阵的形式放入
# 批次优化
batch_size = 100
# batch_size = 100
# 计算一共有多少个批次 //是整除的意思
n_batch = mnist.train.num_examples // batch_size
# 定义两个placehlder,None指的是可以是任意的值,根据传入的批次进行确定
x = tf.placeholder(tf.float32, [