tensorflow2.0学习笔记1——神经网络基础

笔记基于北大的tensorflow2.0教程,将课程的一些重要内容记下来,方便于学习。

一、人工智能三学派

  1. 行为主义
  2. 符号主义:先将问题描述为表达式,在求解表达式(个人认为很像数电的理解)。
  3. 连接主义:模仿神经元的连接关系(这就是咱们说的神经网络了

二、计算机模仿神经网络连接关系

  1. 准备大量数据(特征+标签
  2. 搭建神经网络
  3. 调优(就是训练过程,用来获取最佳参数
  4. 应用网络(将训练得到的最佳参数模型用来对新数据进行分类预测

举例说明:(我觉得这例子可以很好地帮助理解)

鸢尾花的分类

人们通过经验得出,可以通过测量花的花萼长、花萼宽、花瓣长等数据来识别出鸢尾花的类别。

如:

花萼长>花萼宽 且 花瓣长/花瓣宽>2,则为杂色鸢尾花(由此就可以用if语句和case语句来进行判断

然而一些人并不需要那么理性的计算,他们见识过大量的鸢尾花,知道了不同鸢尾花的不同特征,因而他们一眼就能识别出花的种类。

利用计算机来模拟这种感性思维: 

  • 采集大量数据(花萼宽、花萼长、花瓣长,花瓣宽,对应的类别。 花萼宽、花萼长、花瓣长,花瓣宽  是 输入特征,他们对应的类别叫标签,大量的输入特征和标签构成数据集。)
  • 将数据集喂给搭建好的神经网络
  • 反向传播优化参数新数据输入,神经网络分类预测,输出识别结果。

三、一些重要概念

神经网络可以用   Y = wx+b 来描述,w为权重,x为输入特征,b为偏移量,Y为输出

损失函数:预测值与标准值的差距,损失函数最小,表明w,b优化最佳。

梯度下降法:沿损失函数梯度下降的方向,寻找损失函数最小值,来得到最优参数的方法。

梯度下降算法中:新权值 = 当前权值 - 学习率*梯度   新偏移 = 当前偏移 - 学习率*梯度

学习率过大,参数更新可能会跳过损失函数最小值;学习率过小,达到最小值的过程会很慢。

四、学习率调整实验源码

import tensorflow as tf

w = tf.Variable(tf.constant(5, dtype=tf.float32))
lr = 0.999
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)
    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

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开始学AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值