Tensorflow学习第二课笔记——学习神经网络基本知识

今天继续学习,这次主要学了一些神经网络相关的知识(以鸢尾花分类为例)-然后运行示例感受学习率变化对网络中权重变化的影响(主要是1.1-1.2课程,视频链接:1.1 神经网络(连接主义)的程序流程_哔哩哔哩_bilibili)。

1.基本知识

1)输入数据

花萼长、花萼宽、花瓣长、花瓣宽

2)神经网络(简化的MP模型:少了非线性函数)

${\rm{y}} = x*w + b$(结果[1,3]=输入数据[1,4]*权重[4,3]+偏置[3, ]

(注:a.权重、偏置会随机初始化b.除喂入输入数据外,记得添加标签)

②损失函数(loss function):衡量预测值$y$与标签$y\_$(标准答案)的差距

均方误差:$MSE = \frac{​{\sum\limits_{k = 0}^n {​{​{\left( {y - y\_} \right)}^2}} }}{n}$

③目的:找一组权重和偏置使得损失函数最小

(注:a.梯度下降法:就是沿损失函数梯度下降方向寻找损失函数最小值,会寻找到最优参数b.梯度:函数对各个参数求偏导后的向量)

${w_{t + 1}} = {w_t} - lr*\frac{​{\partial loss}}{​{\partial {w_t}}}$

${b_{t + 1}} = {b_t} - lr*\frac{​{\partial loss}}{​{\partial {b_t}}}$

这里$lr$是学习率,如果学习率过小则收敛会很慢;如果学习率过大,梯度可能会在最小值附近来回震荡(甚至无法收敛)。loss表示的是损失函数。

④反向传播:从后向前,逐层求损失函数对每层神经元参数的偏导,迭代更新所有参数。

2.运行代码-感受学习率等影响因素的作用

(视频链接11:45有代码提取连接:1.2 鸢尾花分类问题_哔哩哔哩_bilibili

1)打开p13_backpropagation.py运行

注:这里看代码能不能找到w=-1的原因是,前面作者把损失函数画了一下,用的损失函数不是MSE,而是$loss = {\left( {w + 1} \right)^2}$,那么$w$取得-1时有最小的损失函数。)

import tensorflow as tf


w = tf.Variable(tf.constant(5, dtype=tf.float32)) # 设计随机初始值

lr = 0.2 # 学习率

epoch = 40 # 循环迭代

for epoch in range(epoch):  # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环40次迭代。

    with tf.GradientTape() as tape:  # with结构到grads框起了梯度的计算过程。

        loss = tf.square(w + 1) # 设计loss函数

    grads = tape.gradient(loss, w)  # .gradient函数告知谁对谁求导



    w.assign_sub(lr * grads)  # .assign_sub 对变量做自减 即:w -= lr*grads 即 w = w - lr*grads

    print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))



# lr初始值:0.2   请自改学习率  0.001  0.999 看收敛过程

# 最终目的:找到 loss 最小 即 w = -1 的最优参数w

结果:

可以看到可以找到loss函数最小的$w$值。

2)如果将学习率改为0.001

运行结果为:

可以看到没有收敛。

3)如果把学习率改为0.99

运行结果为:

可以看到很难收敛。

3.总结

1)学习率不可以过大,也不能过小

2)涉及到的函数和结构

 tf.Variable:tensorflow里生成随机数的函数

for epoch in range(epoch):for循环

tf.GradientTape():tensorflow里自动求导的函数

tf.square:tensorflow里求平方的函数

变量.assign_sub: 对变量做自减

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值