Tensorflow笔记——神经网络优化过程

一、预备知识

tf.where() 

tf.where()  条件语句真返回A, 条件语句假返回B

tf.where(条件语句,真返回A, 假返回B)

a=tf.constant([1,2,3,1,1])
b=tf.constant([0,1,3,4,5])
c=tf.where(tf.greater(a,b), a, b)  # 若a>b, 返回a对应位置的元素,否则返回b对应位置的元素
print(c)  # tf.Tensor([1 2 3 4 5], shape=5,), dtype=32)

np.random.RandomState.rand()

返回一个[0,1]之间的随机数

np.random.RandomState.rand(维度)  # 维度为空返回标量

rdm=np.random.RandomState(seed=1)  # send=常数,每次生成随机数相同
a = rdm.rand()  # 返回一个随机标量
b=rdm.rand(2,3)  # 返回维度为2行3列随机数矩阵

np.vstack()

将两个数组按垂直方向叠加叠加

a=np.array([1,2,3])
b=np.array([4,5,6])
c=np.vstack((a,b)) 
# c: 
# [[1 2 3]
#  [4 5 6]]

np.mgrid[ ]   .ravel()  np.c_[ ]

np.mgrid[]   返回多维结构

  np.mgrid[起始值: 结束值: 步长, 起始值: 结束值:步长,....]

x.ravel()  将x变为一维数组,将x拉直

np.c_[]  使返回的间隔数值点配对

  np.c_[数值1, 数值2, ...]

 

 

二、复杂度学习率

复杂度

 学习率

可以先用较大的学习率,快速的到较优解,然后逐步减小学习率,使模型在训练后期稳定。

指数衰减学习率 = 初始学习率*学习率衰减率^(当前轮数/多少轮衰减一次)

 

三、激活函数

tf.nn.sigmoid(x) 

tf.math.tanh(x)

tf.nn.relu(x)  # 解决了梯度消失问题(在正区间),收敛速度远快于sigmoid和tanh

tf.nn.leaky_relu(x)   

 四、损失函数

损失函数(loss): 预测值(y)与已知答案(y_)的差距

NN优化目标:

  loss最小

    mse(Mean Squared Error)

            自定义

    ce(Cross Entropy)

均方误差mse:

loss_mse = tf.reduce_mean(tf.square(y_-y)) 

五、欠拟合和过拟合

 

 欠拟合解决办法:

  增加输入特征项

  增加网络参数

  减少正则化参数

过拟合解决办法

  数据清洗

  增大训练集

  采用正则化

  增大正则化参数

正则化在损失函数中引入模型复杂度指标,利用给w加权值,弱化了训练

数据的噪声(一般不正则化b)

六、神经网络参数优化器

待优化参数w, 损失函数loss, 学习率lr, 每次迭代一个batch, t表示当前batch迭代的总次数:

 

posted @ 2022-06-16 17:18  清风_Z  阅读(48)  评论(0编辑  收藏  举报