cs231n__4.2 神经网络 Neural networks
2024-10-20 13:30:26
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:
最新文章
- JVM相关
- mybatis动态切换数据源
- select count(*)和select count(1)
- HDU 1978 记忆化搜索(dfs+dp)
- android程序的安装与卸载
- DenyHosts限制SSH登录尝试次数
- NDK编译应用程序
- 面试相关-转载-well,yzl——持续更新
- JavaScript正则表达式(Regular Expression):RegExp对象
- Asp.Net Web API(六)
- 浏览器中的user-agent的几种模式
- apigateway-kong(一)简介及部署
- tensorflow 莫烦教程
- dijstra算法
- python自动化框架(一)
- @PostConstruct注解小结
- JavaScript并发模型与Event Loop (转载)
- elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
- java 连接redis 以及基本操作
- win7搭建pyqt4开发环境
热门文章
- 记一次 .NET 某电子病历 CPU 爆高分析
- Nebula Graph介绍和SpringBoot环境连接和查询
- Spring Boot 配置 jar 包外面的 Properties 配置文件
- KubeEdge SIG AI发布首个分布式协同AI Benchmark调研
- JS前端防止F12扒取源码
- Blazor组件自做十一 : File System Access 文件系统访问 组件
- go-zero docker-compose 搭建课件服务(六):完善jwt鉴权和返回结构
- SpringCloud微服务实战——搭建企业级开发框架(四十六):【移动开发】整合uni-app搭建移动端快速开发框架-环境搭建
- 8.pygame-定时器
- 这次彻底读透 Redis