1、减少网络的大小
减少网络的层数或每层的单元数
2、添加权重正则化
L1正则化:权重系数的绝对值
L2正则化:权重系数的平方
from keras import regularizers
model = models.Sequential()
model.add(layers.Dense(16, kernel_regularizer=regularizers.l2(0.001), activation=‘relu’, input_shape=(10000,)))
model.add(layers.Dense(16, kernel_regularizer=regularizers.l2(0.001), activation=‘relu’))
model.add(layers.Dense(1, activation=‘sigmoid’)
from keras import regularizers
regularizers.l1(0.001) L1正则化
regularizers.l1_l2(l1=0.001, l2=0.001)同时做L1和L2正则化
3、添加dropout正则化
dropout比率是被设为0的特征所占的比例,通常在0.2~0.5之间
测试时没有单元被舍弃,而该层的输出值需要按dropout比率缩小,因为这时比训练时有更多的单元被激活,需要加以平衡。
model = models.Sequential()
model.add(layers.Dense(16, activation=‘relu’, input_shape=(10000,)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(16, activation=‘relu’))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation=‘sigmoid’)