深度神经网络——深度学习的正则化

L1与L2正则化

见机器学习那块

tf.keras.regularizers.L1(l1=0.01)
tf.keras.regularizers.L2(l2=0.01)
tf.keras.regularizers.L1L2(l1=0.0,l2=0.0)

Dropout正则化

在这里插入图片描述
在这里插入图片描述

import tensorflow as tf
import numpy as np

#定义dropout层
layer=tf.keras.layers.Dropout(0.2,input_shape=(2,)) #每个神经元失活的概率为0.2,未被失活的输入按1/(1-rate)放大
#定义输入数据
data=np.arange(1,11).reshape(5,2).astype(np.float32)
print(data)
#对输入数据进行随机失活
outputs=layer(data,training=True)
print(outputs)

在这里插入图片描述

提前停止

在这里插入图片描述

#定义回调函数
callback=tf.keras.callbacks.EarlyStopping(monitor='loss',patience=3) #有3个epoch不再提升时进行提前停止
#定义一层网络
model=tf.keras.Sequential([tf.keras.layers.Dense(10)])
#模型编译
model.compile(optimizer=tf.keras.optimizers.SGD(),loss='mse')
#模型训练
history=model.fit(np.arange(100).reshape(5,20),np.array([0,1,0,1,0]),epochs=10,batch_size=1,callbacks=[callback])
len(history.history['loss'])

在这里插入图片描述

批标准化

在这里插入图片描述

tf.keras.layers.BatchNormalization(epsilon=0.001,center=True,scale=True,beta_initializer='zero',gamma_initializer='ones')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40527560/article/details/131503006