Vectorizing across multiple examples

Vectorizing across multiple examples

Sogiveninput:x(1)z[1](4,1)=W[1](4,3)x(3,1)+b[1](4,1)(2)a[1](4,1)=σ(z[1](4,1))(3)z[2](1,1)=W[2](1,4)a[1](4,1)+b[2](1,1)(4)a[2](1,1)=σ(z[2](1,1))

在上次学习中,我们主要推导上面这四条公式

无法显示时所显示的信息
图1.单个样本

这个图就是我们计算单个样本的输出时所用到的,现在我们需要重复多次这种运算,所以我们首先想到的肯定还是向量化:

xa[2]=y^mx(1)a[2](1)=y^(1)x(2)a[2](2)=y^(2)x(m)a[2](m)=y^(m)xn×1x(1),x(2),,x(m)m(a[2](i)[[2]][(i)]i)n×m

如果我们用for-loops去一个个样本执行时,我们可以这样(伪代码)

fori=1tom:(5)z[1](i)=W[1]x(i)+b[1](6)a[1](i)=σ(z[1](i))(7)z[2](i)=W[2]a[1](i)+b[2](8)a[2](i)=σ(z[2](i))

我们把m个样本x向量化后记为X

X=[x(1)x(2)x(m)](nx,m):nxx

所以我们去写代码时应该是这样

(9)Z[1]=W[1]X+b[1](10)A[1]=σ(Z[1])(11)Z[2]=W[2]A[1]+b[2](12)A[2]=σ(Z[2])

里面的Z同样

Z[1]=[z[1](1)z[1](2)z[1](m)](nz,m)A[1]=[a[1](1)a[1](2)a[1](m)](nz,m):nznx,na=nz

对于我们刚刚所提到的矩阵,我们可以画个这样的图:

image-20220402231920444

到目前为止,我们可以得到一个在神经网络中正向传播的向量化实现,下面我们将对其进一步解释:


我们不妨假设只有三个样本,而且还是应用上面那个神经网络:

X[1]=[x[1](1)x[1](2)x[1](3)]z[1](1)=W[1]x[1](1)+b[1][](1)=[][](1)+[]Z[1]=W[1]X[1]+b[1][[](1)[](2)[](3)]=[][[](1)[](2)[](3)]+[]:广b

由矩阵相乘的知识我们容易知道这是对的,这样,我们也就直观解释了这样向量化的原因;

下面一章我们继续学习不同激活函数的作用,除了sigmoid函数,我们应该也有更好的激活函数。

posted @   Link_kingdom  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示