正则化主要用来缓解过拟合的过程
正则化在损失函数中引入模型复杂度指标,利用给参数W加权值,弱化训练数据的噪声,一般不正则化偏置项b。
# 0.导入模块生成数据集
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
BATCH_SIZE = 30
seed = 2
# 基于seed产生随机数,随机数返回300行2列的矩阵,表示300组坐标点(x0,x1)作为输入数据集
rdm = np.random.RandomState(seed)
X = rdm.randn(300, 2)
# 从这个数据矩阵的集合取得一行,判断两个坐标的平方和小于2,给Y赋值1,其余赋值0,作为输入数据的标签
Y_ = [int(x0 * x0 + x1 * x1 < 2) for (x0, x1) in X]
Y_c = [["red" if y else "blue"] for y in Y_]
# 对数据集X和标签Y进行shape整理,第一个元素为-1表示,表示n行,第二个元素表示多少列,把X整理成n行2列,把Y整理成n行1列
X = np.vstack(X).reshape(-1, 2)
Y_ = np.vstack(Y_).reshape(-1, 1)
print(X)
print(Y_)
print(Y_c)
# 用plt.scatter画出数据集X各行中第0列,和第1列元素的点,即为各行的(x0,x1),用Y_c各行对应的值表示颜色(c是color的缩写)
plt.scatter(X[:, 0], X[:, 1], c=np.squeeze(Y_c))
plt.show()
# 1.定义神经网络的输入,参数和输出,定义前向传播过程
# 获取权重的函数,传参数是w的shape和正则化权重regularizer
def get_weight(shape, regularizer):
w = tf.Variable(tf.<