Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tensorflow 2.0中的批量归一化会使预测结果变得更糟_Python_Tensorflow_Conv Neural Network - Fatal编程技术网

Python tensorflow 2.0中的批量归一化会使预测结果变得更糟

Python tensorflow 2.0中的批量归一化会使预测结果变得更糟,python,tensorflow,conv-neural-network,Python,Tensorflow,Conv Neural Network,我已经建立了一个具有以下架构的CNN: X = self.conv_layer_1(inputs) X = self.conv_layer_2(X) X = self.max_pool_1(X) X = self.dropout_1(X,training = training) X = self.batch_norm_1(X,training = training) X = self.conv_layer_3(X) X = self.conv_layer_4(X) X = self.max_p

我已经建立了一个具有以下架构的CNN:

X = self.conv_layer_1(inputs)
X = self.conv_layer_2(X)
X = self.max_pool_1(X)
X = self.dropout_1(X,training = training)
X = self.batch_norm_1(X,training = training)

X = self.conv_layer_3(X)
X = self.conv_layer_4(X)
X = self.max_pool_2(X)
X = self.dropout_2(X,training = training)
X = self.batch_norm_2(X,training = training)

X = self.flatten(X)
X = self.dense_1(X)
X = self.batch_norm_3(X,training = training)
X = self.dropout_3(X)
X = self.softmax(X)

return X
如果我不使用批处理规格化层,我将获得良好的准确性(训练95%,测试79%)。如果我只使用
self.batch\u norm\u 3
,那么结果会变得越来越糟,在测试集上,损失会急剧增加(就像每3-4个时期,损失从1.23123增加到500000)

如果我使用
self.batch\u norm\u 1
和/或
self.batch\u norm\u 2
,我总是获得10%的准确度(测试和训练)

为什么会这样

我使用了CIFAR-10数据集

这可以帮助您理解

请注意-密集层是一个FC层,进一步用于预测,无需标准化其输出。 当输入数据存在较大变化(也称为协变量偏移)时,标准化和batchnorm非常有用,这将进一步为CNN层创建不平衡的输入数据。

这有助于您理解

请注意-密集层是一个FC层,进一步用于预测,无需标准化其输出。 当输入数据存在较大变化(也称为协变量偏移)时,标准化和batchnorm非常有用,这将进一步为CNN层创建不平衡的输入数据