热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【王俊杰de人工智能实战课】第2次作业

BriefGuide项目内容这个作业属于哪个课程北航人工智能实战课这个作业的要求在哪里

Brief Guide
项目 内容
这个作业属于哪个课程 北航人工智能实战课
这个作业的要求在哪里 第二次作业要求
我在这个课程的目标是 获得机器学习相关的完整项目与学习经验;通过与人工智能行业的大牛们聊天了解行业不同方向的发展以便进行职业规划;为转CS积累基础知识并获得相关课程的成绩
这个作业在哪个具体方面帮助我实现目标 系统学习机器学习神经网络的算法,踏出人工智能的第一步!
作业正文… 【王俊杰de人工智能实战课】第2次作业
其他参考文献… 微软AI教育GitHub

Main Homework

代码

建立Z函数及Delta函数

单独创建函数方便修改以适用其他不同的函数

def Z(w,b):  
    x = 2*w+3*b  
    y = 2*b+1  
    z = x*y  
    return z
    
def Delta(w,b,dz):  
    dz_db = x*2+y*3  
    dz_dw = y*2  
    db = dz/2/dz_db  
    dw = dz/2/dz_dw  
    return dw,db

主程序

反复迭代,直至差值小于设定值
输出包括第几次迭代,本次迭代的差值,当前的z、w、b

w = 3  
b = 4  
z0 = 150  
diff_z = 0.00001  
z = Z(w,b)  
dz = abs(z-z0)  
i = 0  
print(i,'th time\t Difference of z is:',dz,'\nCurrent z is:',z,'\t Current w is:',w,'\t Current b is:',b)  
while (dz>diff_z):  
    dw,db = Delta(w,b,dz)  
    w-=dw  
    b-=db  
    z = Z(w,b)  
    dz = abs(z-z0)  
    i+=1  
    print(i,'th time\t Difference of z is:',dz,'\nCurrent z is:',z,'\t Current w is:',w,'\t Current b is:',b)  
print('Calculation Finnished!')  
print('Final w is: ',w)  
print('Final b is: ',b)  
print('Final z is: ',z)

运行结果

0 th time    Difference of z is: 12 
Current z is: 162    Current w is: 3     Current b is: 4
1 th time    Difference of z is: 0.18140589569162557 
Current z is: 150.18140589569163     Current w is: 2.6666666666666665    Current b is: 3.9047619047619047
2 th time    Difference of z is: 0.005526139576176092 
Current z is: 150.00552613957618     Current w is: 2.661627614008566     Current b is: 3.903322175431019
3 th time    Difference of z is: 0.0001696432812252624 
Current z is: 150.00016964328123     Current w is: 2.66147411013145      Current b is: 3.903278317180414
4 th time    Difference of z is: 5.2089834525759215e-06 
Current z is: 150.00000520898345     Current w is: 2.6614693978180823    Current b is: 3.9032769708051664
Calculation Finnished!
Final w is:  2.6614693978180823
Final b is:  3.9032769708051664
Final z is:  150.00000520898345

计算结果

总共迭代4次
误差为:5.2089834525759215e-06 <1.0e-5
w为:2.6614693978180823
b为:3.9032769708051664

思考与比较

结果比较

单变量的迭代次数为5次,双变量迭代比其少1次
单变量的运算结果为w=2.661469, b=3.903277,与双变量的运算结果相同,说明算法正确性没有问题

相关思考

增加一个变量一起反向传播、梯度下降可以使得运算速度增加、运算次数减少,但变化不够明显,即效率还不是太高。
考虑到计算Δb与Δw时是将Δz的误差平分给二者的,这可能会造成Δb相较于Δw非常小,但仍与Δw分的相同的误差值,其实这种情况下效率最高的方法应该是Δb分得的误差比Δw小。
根据这种思想,可以在分配Δz误差时,按照前一次的Δb与Δw的比值分,越大分的越多(第1次分的时候就按1/2计)。


推荐阅读
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
author-avatar
椰子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有