batch normalization and batch size

廖臻
2023-12-01

batch normalization的原理解释可以看 https://www.cnblogs.com/guoyaohua/p/8724433.html 我觉得写得挺清晰的

实验结果:

batch_size的大小会影响batch normalization的效果。当batch_size过大的时候,会使得模型效果不稳定(我做的实验是模型偏向于预测为某一个类别)。

实验:

模型:DPCNN,在每个卷积层后面加batch_normalization。全连接层之间也加了batch_normalization

输入是需要配对的两个句子,输出是句子是否匹配的二分类结果。训练集共约12万条,其中0类别9万条,1类别3万条。

DPCNN的每个block定义如下:

 

    def _block(self, x, k):
        # x [batch, seq, 1, num_filters]
        x = tf.pad(x, paddings=[[0,0], [0,1], [0,0], [0,0]])

        px = tf.nn.max_pool(x, [1,3,1,1], strides=[1,2,1,1], padding="VALID") # [batch, floor((seq-3)/2)+1, 1, num_filters]
        
        # conv
        k+=1
        x = tf.nn.relu(px) # same shape
        x = self.conv3(k,x) ## padding= same, same shape
        x = tf.layers.batch_normalization(x, training=self.is_training) ##
        k+=1
        x = tf.nn.relu(x)
        x = self.conv3(k,x) ## same shape
        x = tf.layers.batch_normalization(x, training=self.is_training)
        x = x + px #x 和 px形状相同
        return x, k

当batch_size为3000时,验证集上的准确率约为60%

 

当batch_size为128时,验证集上的准确率约为80%

 

 

 

 

 类似资料:

相关阅读

相关文章

相关问答