只要你懂 Python,大概记得高中学过的求导知识,看完这个视频你还不理解反向传播和神经网络核心要点的话,那我就吃鞋:D
Andrej Karpathy,前特斯拉 AI 高级总监、曾设计并担任斯坦福深度学习课程 CS231n 讲师、OpenAI 创始成员和研究科学家。在 7 月离职特斯拉后,Andrej 在家录制了一个详解反向传播的课程,自信表示“这是 8 年来领域内对神经网络和反向传播的最佳讲解”,并在推特打赌“看不懂就吃鞋”。

虽然很想看 Andrej 直播吃鞋,但实话实说,作为小白的我,好像真的看懂了。
【中英字幕】Andrej Karpathy | 详解神经网络和反向传播(基于micrograd)
字幕由矩池云翻译制作
课程时长 2 小时 25 分钟,基于 micrograd 详细介绍并演示了神经网络的搭建和反向传播的过程。Micrograd 是 Andrej 于 2020 年编写并开源的微型 autograd(自动梯度)引擎。其中用 100 行代码实现了针对动态构建的 DAG 的反向传播算法,并用 50 行代码实现了类 PyTorch API 的库。目前,micrograd 项目的 GitHub Star 量已达 2.6k。

基于 micrograd,Andrej 介绍了只有一个输入的简单函数的求导(y = 3x² - 4x + 5 这个函数中,求 y 对 x 的导数)和具有多个输入的简单函数的求导(已知3个输入a、b、c,并且 d = a * b + c,求d分别对a、b、c的导数)、启动 micrograd 的核心 Value 对象及其可视化的方法,并举了两个手动反向传播的例子。接下来 Andrej 系统地介绍了:
为单个运算实现反向传播;
为整个表达式图实现反向函数;
修复反向传播中一个节点多次使用出现的 bug;
使用更多运算替换 tanh 激活函数;
在 PyTorch 中实现上述运算并与 micrograd 进行比较;
用 micrograd 构建一个神经网络库(MLP);
创建一个微型数据集,编写损失函数;
收集神经网络的所有参数;
手动进行梯度下降优化,训练网络。
最后 Andrej 总结了反向传播与现代神经网络的关系。此外,Andrej 还探究了 PyTorch 中 tanh 激活函数的反向传播机制

Andrej Karpathy 出生于斯洛伐克,15 岁时随家人移民加拿大。在一次采访中,Andrej 表示,“在斯洛伐克的时候并不开心,一直想要离开,当父母表示要移民加拿大的时候,我立马同意了,但家里其他人很犹豫,我就去说服每个人”[3]。
来到加拿大的 Andrej 还不会说英语,但数学成绩非常优秀,完成高中学业后进入多伦多大学计算机科学与物理系并辅修数学,在那里他遇到了 Geoffrey Hinton 教授,也是在 Geoff 的课上,他接触到了深度学习算法。
2009 - 2011 年,Andrej 硕士就读于加拿大不列颠哥伦比亚大学,其导师为计算机科学系教授 Michiel van de Panne,主要研究物理模拟中用于敏捷机器人的机器学习。
2011 年,Andrej 进入斯坦福大学攻读博士学位,师从李飞飞主攻深度学习和图像识别。在斯坦福,他和导师李飞飞一起研究图像识别与深度学习算法,主导设计了斯坦福第一门深度学习课程《CS231n:用于视觉识别的卷积神经网络》,并和李飞飞共同担任主讲人。很快,这门课成为斯坦福的网红课程,注册学生从开课时的150人增加到两年后的750人。
在读博期间,Andrej 发表的多篇论文都是 CV 领域的高引文章,还在 Google、DeepMind 两家公司实习。
2016年 Andrej 成为 OpenAI 创始成员,OpenAI 是由马斯克等人创立的非盈利人工智能研究组织,也是在这里,他的天赋被马斯克看中,马斯克不惜得罪 OpenAI 其他成员把 Andrej 从 OpenAI 带到了特斯拉。五年里,Andrej 一手促成了 Autopilot 的开发。随着特斯拉从最开始的自动驾驶慢慢扩展到更广泛的人工智能领域,他也被提为特斯拉的AI高级总监,直接向马斯克汇报工作。
据说马斯克曾说过,很多人把 Andrej 当做优秀的 AI 视觉科学家,但我知道,他会是全世界最顶级的 AI 领袖。
而这位 AI 领袖现在才36岁...
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案
我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT
我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n