CS231n 学习笔记

4.2 神经网络 Neural networks

之前我们已经使用了 很多线性分类函数

现在我们不用单变换的:

我们首先有线性层,然后有这个非线性计算,继而在顶层再加入另一个线性层。然后到这里,最后我们可以得到一个计分函数。输出计分向量。

一般来说,神经网络就是由简单函数构成的一组函数,在顶层堆叠在一起,我们用一种层次化的方式将它们堆叠起来。为了形成一个更为复杂的非线性函数。

这就是基本的 多阶段分层计算

注:非线性通常出现在h之前。

h = max(0,W1x)

当然,我们也可以堆更多层

这也是深度神经网络的由来,意味着你可以堆很多层,得到很深的网络

实现一个2层的神经网络只需要20行代码:

import numpy as np
from numpy.random import randn N, D_in, H, D_out = 64, 1000, 100, 10
x, y = randn(N, D_in), randn(N, D_out)
w1, w2 = randn(D_in, H), randn(H, D_out) for t in range(2000):
h = 1 / (1 + np.exp(-x.dot(w1)))
y_pred = h.dot(w2)
loss = np.square(y_pred - y).sum()
print(t, loss) grad_y_pred = 2.0 * (y_pred - y)
grad_w2 = h.T.dot(grad_y_pred)
grad_h = grad_y_pred.dot(w2.T)
grad_w1 = x.T.dot(grad_h * h * (1-h)) w1 -= 1e-4 * grad_w1
w2 -= 1e-4 * grad_w2

当然,剩余部分我们将在Assignment_2中完成.


现在我们已经了解了神经元的数学原理了。

那么,我们是如何从生物的神经元中获得灵感的呢?

↓↓↓↓↓↓↓↓↓↓↓↓↓这张图对应下面的代码

生物上的神经元

我们讨论过了多种不同激发函数

我们也会讨论神经元的不同架构形式

之前我们说的两层神经网络,具体来讲我们有两个线性层,针对每个线性层,我们做了一次矩阵乘法。

一个在神经元中前向传播的例子:

写出来是:

我们可以用逆推运算来计算

summary:

最新文章

  1. JVM相关
  2. mybatis动态切换数据源
  3. select count(*)和select count(1)
  4. HDU 1978 记忆化搜索(dfs+dp)
  5. android程序的安装与卸载
  6. DenyHosts限制SSH登录尝试次数
  7. NDK编译应用程序
  8. 面试相关-转载-well,yzl——持续更新
  9. JavaScript正则表达式(Regular Expression):RegExp对象
  10. Asp.Net Web API(六)
  11. 浏览器中的user-agent的几种模式
  12. apigateway-kong(一)简介及部署
  13. tensorflow 莫烦教程
  14. dijstra算法
  15. python自动化框架(一)
  16. @PostConstruct注解小结
  17. JavaScript并发模型与Event Loop (转载)
  18. elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
  19. java 连接redis 以及基本操作
  20. win7搭建pyqt4开发环境

热门文章

  1. 记一次 .NET 某电子病历 CPU 爆高分析
  2. Nebula Graph介绍和SpringBoot环境连接和查询
  3. Spring Boot 配置 jar 包外面的 Properties 配置文件
  4. KubeEdge SIG AI发布首个分布式协同AI Benchmark调研
  5. JS前端防止F12扒取源码
  6. Blazor组件自做十一 : File System Access 文件系统访问 组件
  7. go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构
  8. SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
  9. 8.pygame-定时器
  10. 这次彻底读透 Redis