首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

核对矩阵的维度

新手请点击公众号里的“历史文章”从之前的文章看起,否则你可能看不懂本篇文章

在编写深度神经网络程序时,出现的很多问题都是由于矩阵的维度不对引起的,而且这个问题非常难查。而且python有时候还会改变矩阵的维度(例如之前我们学到的python广播化),所以我们需要经常核对矩阵的维度,使他们的维度与我们预料中的保持一致。在本小节的实战中,你会看到很多地方我使用assert来核对矩阵的维度。

本篇文章中我带大家总结一下我们在神经网络中各种变量的矩阵维度。

上面是一个五层的神经网络,输入层有2个元素,所以n[0]=2,第一层有三个元素,所以n[1]=3,其他层同理。

下面我先列出单个训练样本时各变量的维度公式

w[l]--> (n[l], n[l-1])

b[l]--> (n[l], 1)

z[l]--> (n[l], 1)

a[l]--> (n[l], 1)

da[l]--> (n[l], 1)

dz[l]--> (n[l], 1)

db[l]--> (n[l], 1)

dw[l]--> (n[l], n[l-1])

根据上面的公式,下面举例列出第一层的相关变量的维度

W[1]--> (3 , 2)

b[1]--> (3 , 1)

z[1]--> (3 , 1)

a[1]--> (3 , 1)

da[1]--> (3 , 1)

dz[1]--> (3 , 1)

db[1]--> (3 , 1)

dW[1]--> (3 , 2)

那么当多个训练样本时维度公式又是怎么样的呢?由前面的文章我们知道,多个样本时,我们会通过向量化来提升效率,例如我们会将每个样本的特征x列向量(也就是a[0])一个一个排起来,组成一个矩阵。

下面给出m个训练样本时的维度公式

W[l]--> (n[l], n[l-1])-->和单个样本时一样,因为多个样本它们都共用一套W

b[l]--> (n[l], 1) -->和单个样本时一样,因为多个样本它们都共用一套b

Z[l]--> (n[l], m)

A[l]--> (n[l], m)

dA[l]--> (n[l], m)

dZ[l]--> (n[l], m)

db[l]--> (n[l], 1) --> db也只有一套,根据公式db = np.sum(dZ) / m可知,db取的是一个平均值

dW[l]--> (n[l], n[l-1])--> dW也只有一套,同理db

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180929G15T6J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券