当前位置: 首页 > news >正文

个人介绍网站模板免费推广软件 推广帮手

个人介绍网站模板,免费推广软件 推广帮手,网站概要设计模板,如何做网站聚合页文章目录 1. 数学角度: y W x b \displaystyle y W\,x b yWxb示例 2. 编程实现角度: y x W T b \displaystyle y x\,W^T b yxWTb3. 常见错误与易混点解析4. 小结参考链接 在神经网络或机器学习的线性层(Linear Layer / Fully Connect…

在神经网络或机器学习的线性层(Linear Layer / Fully Connected Layer)中,经常会见到两种形式的公式:

  • 数学文献或传统线性代数写法: y = W x + b \displaystyle y = W\,x + b y=Wx+b
  • 一些深度学习代码中写法: y = x W T + b \displaystyle y = x\,W^T + b y=xWT+b

初次接触时,很多人会觉得两者“方向”不太一样,不知该如何对照理解;再加上矩阵维度 ( in_features , out_features ) (\text{in\_features},\, \text{out\_features}) (in_features,out_features) ( out_features , in_features ) (\text{out\_features},\, \text{in\_features}) (out_features,in_features) 的各种写法常常让人疑惑不已。本文将从数学角度和编程实现角度剖析它们的关系,并结合实际示例指出一些常见的坑与需要特别留意的下标对应问题。

1. 数学角度: y = W x + b \displaystyle y = W\,x + b y=Wx+b

在线性代数中,如果我们假设输入 x x x 是一个列向量,通常会写作 x ∈ R ( in_features ) \displaystyle x\in\mathbb{R}^{(\text{in\_features})} xR(in_features)(或者在更严格的矩阵形状记法下写作 ( in_features , 1 ) (\text{in\_features},\,1) (in_features,1))。那么一个最常见的全连接层可以表示为:

y = W x + b , y = W\,x + b, y=Wx+b,

其中:

  • W W W 是一个大小为 ( out_features , in_features ) \bigl(\text{out\_features},\,\text{in\_features}\bigr) (out_features,in_features) 的矩阵;
  • b b b 是一个 out_features \text{out\_features} out_features-维的偏置向量(形状 ( out_features , 1 ) (\text{out\_features},\,1) (out_features,1));
  • y y y 则是输出向量,大小为 out_features \text{out\_features} out_features

示例

假设 in_features = 3 \text{in\_features}=3 in_features=3 out_features = 2 \text{out\_features}=2 out_features=2。那么:
W ∈ R 2 × 3 , x ∈ R 3 × 1 , b ∈ R 2 × 1 . W \in \mathbb{R}^{2\times 3},\quad x \in \mathbb{R}^{3\times 1},\quad b \in \mathbb{R}^{2\times 1}. WR2×3,xR3×1,bR2×1.

矩阵写开来就是:

W = [ w 11 w 12 w 13 w 21 w 22 w 23 ] , x = [ x 1 x 2 x 3 ] , b = [ b 1 b 2 ] . W = \begin{bmatrix} w_{11} & w_{12} & w_{13} \\[5pt] w_{21} & w_{22} & w_{23} \end{bmatrix},\quad x = \begin{bmatrix} x_{1}\\ x_{2}\\ x_{3} \end{bmatrix},\quad b = \begin{bmatrix} b_{1}\\ b_{2} \end{bmatrix}. W=[w11w21w12w22w13w23],x= x1x2x3 ,b=[b1b2].

那么线性变换结果 W x + b Wx + b Wx+b 可以展开为:

W x + b = [ w 11 x 1 + w 12 x 2 + w 13 x 3 w 21 x 1 + w 22 x 2 + w 23 x 3 ] + [ b 1 b 2 ] = [ w 11 x 1 + w 12 x 2 + w 13 x 3 + b 1 w 21 x 1 + w 22 x 2 + w 23 x 3 + b 2 ] . \begin{aligned} Wx + b &= \begin{bmatrix} w_{11}x_1 + w_{12}x_2 + w_{13}x_3 \\ w_{21}x_1 + w_{22}x_2 + w_{23}x_3 \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \end{bmatrix} \\ &= \begin{bmatrix} w_{11}x_1 + w_{12}x_2 + w_{13}x_3 + b_1 \\ w_{21}x_1 + w_{22}x_2 + w_{23}x_3 + b_2 \end{bmatrix}. \end{aligned} Wx+b=[w11x1+w12x2+w13x3w21x1+w22x2+w23x3]+[b1b2]=[w11x1+w12x2+w13x3+b1w21x1+w22x2+w23x3+b2].

这就是最传统、在数学文献或线性代数课程中最常见的表示方法。


2. 编程实现角度: y = x W T + b \displaystyle y = x\,W^T + b y=xWT+b

在实际的深度学习代码(例如 PyTorch、TensorFlow)中,经常看到的却是下面这种写法:

y = x @ W.T + b

注意这里 W.shape 通常被定义为 ( out_features , in_features ) (\text{out\_features},\, \text{in\_features}) (out_features,in_features),而 x.shape 在批量处理时则是 ( batch_size , in_features ) (\text{batch\_size},\, \text{in\_features}) (batch_size,in_features)。于是 (x @ W.T) 的结果是 ( batch_size , out_features ) (\text{batch\_size},\, \text{out\_features}) (batch_size,out_features)

为什么会出现转置?
因为在数学里我们通常把 x x x 当作“列向量”放在右边,于是公式变成 y = W x + b y = Wx + b y=Wx+b
但在编程里,尤其是处理批量输入时,x 常写成“行向量”的形式 ( batch_size , in_features ) (\text{batch\_size},\, \text{in\_features}) (batch_size,in_features),这就造成了在进行矩阵乘法时,需要将 W(大小 ( out_features , in_features ) (\text{out\_features},\, \text{in\_features}) (out_features,in_features))转置成 ( in_features , out_features ) (\text{in\_features},\, \text{out\_features}) (in_features,out_features),才能满足「行×列」的匹配关系。

从结果上来看,

( batch_size , in_features ) × ( in_features , out_features ) = ( batch_size , out_features ) . (\text{batch\_size}, \text{in\_features}) \times (\text{in\_features}, \text{out\_features}) = (\text{batch\_size}, \text{out\_features}). (batch_size,in_features)×(in_features,out_features)=(batch_size,out_features).

所以,在代码里就写成 x @ W.T,再加上偏置 b(通常会广播到 batch_size \text{batch\_size} batch_size 那个维度)。

本质上这和数学公式里 y = W x + b y = W\,x + b y=Wx+b 并无冲突,只是一个“列向量”和“行向量”的转置关系。只要搞清楚最终你想让输出 y y y 的 shape 是多少,就能明白在代码里为什么要写 .T


3. 常见错误与易混点解析

有些教程或文档,会不小心写成:“如果我们有一个形状为 ( in_features , out_features ) (\text{in\_features},\text{out\_features}) (in_features,out_features) 的权重矩阵 W W W……”——然后又要做 W x Wx Wx,想得到一个 out_features \text{out\_features} out_features-维的结果。但按照线性代数的常规写法,行数必须和输出维度匹配、列数必须和输入维度匹配。所以 正确 的说法应该是

W ∈ R ( out_features ) × ( in_features ) . W\in\mathbb{R}^{(\text{out\_features}) \times (\text{in\_features})}. WR(out_features)×(in_features).

否则从矩阵乘法次序来看就对不上。
但这又可能让人迷惑:为什么深度学习框架 torch.nn.Linear(in_features, out_features) 却给出 weight.shape == (out_features, in_features) 其实正是同一个道理,它和上面“数学文献里”用到的 W W W 形状完全一致。


4. 小结

  1. 从数学角度
    最传统的记号是
    y = W x + b , W ∈ R ( out_features ) × ( in_features ) , x ∈ R ( in_features ) , y ∈ R ( out_features ) . y = W\,x + b, \quad W \in \mathbb{R}^{(\text{out\_features})\times(\text{in\_features})},\, x \in \mathbb{R}^{(\text{in\_features})},\, y \in \mathbb{R}^{(\text{out\_features})}. y=Wx+b,WR(out_features)×(in_features),xR(in_features),yR(out_features).

  2. 从深度学习代码角度

    • 由于批量数据常被视为行向量,每一行代表一个样本特征,因此形状通常是 ( batch_size , in_features ) (\text{batch\_size},\, \text{in\_features}) (batch_size,in_features)
    • 对应的权重 W 定义为 ( out_features , in_features ) (\text{out\_features},\, \text{in\_features}) (out_features,in_features)。为了完成行乘以列的矩阵运算,需要对 W 做转置:
      y = x @ W.T + b
      
    • 得到的 y.shape ( batch_size , out_features ) (\text{batch\_size},\, \text{out\_features}) (batch_size,out_features)
  3. 避免踩坑

    • 写公式时,仔细确认 in_features \text{in\_features} in_features out_features \text{out\_features} out_features 的位置以及矩阵行列顺序。
    • 编程实践中理解“为什么要 .T”非常重要:那只是为了匹配「行×列」的矩阵乘法规则,本质上还是和 y = W x + b y = Wx + b y=Wx+b 相同。

通过理解并区分“列向量”与“行向量”的不同惯例,避免因为矩阵维度或转置不当而导致莫名其妙的错误或 bug。


参考链接

  • PyTorch 文档:torch.nn.Linear
  • 深度学习中的矩阵运算初步 —— batch_size 与矩阵乘法
  • 常见线性代数符号:行向量与列向量


文章转载自:
http://dinncodiamante.knnc.cn
http://dinncogarble.knnc.cn
http://dinncorephrase.knnc.cn
http://dinncomesozoic.knnc.cn
http://dinncoconductometer.knnc.cn
http://dinncohodographic.knnc.cn
http://dinncoshat.knnc.cn
http://dinncounlatch.knnc.cn
http://dinncoclerkship.knnc.cn
http://dinncohalidome.knnc.cn
http://dinncoursprache.knnc.cn
http://dinncoparang.knnc.cn
http://dinncomalleolar.knnc.cn
http://dinncoformication.knnc.cn
http://dinncorcaf.knnc.cn
http://dinncounsuccessful.knnc.cn
http://dinncoungava.knnc.cn
http://dinncoslender.knnc.cn
http://dinncodedal.knnc.cn
http://dinncomanila.knnc.cn
http://dinncoopportunity.knnc.cn
http://dinncomeursault.knnc.cn
http://dinncoformation.knnc.cn
http://dinncobuonaparte.knnc.cn
http://dinncodisaccustom.knnc.cn
http://dinncotangram.knnc.cn
http://dinncovitellophage.knnc.cn
http://dinncoquinary.knnc.cn
http://dinncoprocercoid.knnc.cn
http://dinncovibraculum.knnc.cn
http://dinncoinfranics.knnc.cn
http://dinncotroutperch.knnc.cn
http://dinncomingimingi.knnc.cn
http://dinncopismire.knnc.cn
http://dinnconymphenburg.knnc.cn
http://dinncodisinsectize.knnc.cn
http://dinncoaldo.knnc.cn
http://dinncogem.knnc.cn
http://dinncohemophile.knnc.cn
http://dinncosupper.knnc.cn
http://dinncostreptothricin.knnc.cn
http://dinncosemievergreen.knnc.cn
http://dinncobowleg.knnc.cn
http://dinncobronx.knnc.cn
http://dinncoprocessable.knnc.cn
http://dinncosaturday.knnc.cn
http://dinncoifr.knnc.cn
http://dinncostonily.knnc.cn
http://dinncountender.knnc.cn
http://dinncohandling.knnc.cn
http://dinncotarp.knnc.cn
http://dinncolanuginose.knnc.cn
http://dinncodew.knnc.cn
http://dinncodentate.knnc.cn
http://dinncopleura.knnc.cn
http://dinncoterramycin.knnc.cn
http://dinncoeolith.knnc.cn
http://dinncounconvince.knnc.cn
http://dinncoracking.knnc.cn
http://dinncobethanechol.knnc.cn
http://dinncocytosine.knnc.cn
http://dinncopoole.knnc.cn
http://dinncopostlude.knnc.cn
http://dinncoforeseer.knnc.cn
http://dinncodiscusser.knnc.cn
http://dinncocellulate.knnc.cn
http://dinncoethion.knnc.cn
http://dinncobrawl.knnc.cn
http://dinncoreferendary.knnc.cn
http://dinncozygal.knnc.cn
http://dinncointersection.knnc.cn
http://dinncodecimus.knnc.cn
http://dinncopathoformic.knnc.cn
http://dinncoscattergun.knnc.cn
http://dinncospallation.knnc.cn
http://dinncohadramaut.knnc.cn
http://dinncodragonhead.knnc.cn
http://dinncoserpentarium.knnc.cn
http://dinncoarbalest.knnc.cn
http://dinncobiological.knnc.cn
http://dinncoromanza.knnc.cn
http://dinncoordinate.knnc.cn
http://dinncokipper.knnc.cn
http://dinncopsychoeducational.knnc.cn
http://dinncosusceptive.knnc.cn
http://dinncokamela.knnc.cn
http://dinncopneumatosis.knnc.cn
http://dinncohocky.knnc.cn
http://dinncomercado.knnc.cn
http://dinncoillusively.knnc.cn
http://dinncohemipod.knnc.cn
http://dinncoimpeller.knnc.cn
http://dinncosyllabogram.knnc.cn
http://dinncoscourway.knnc.cn
http://dinncoareopagy.knnc.cn
http://dinncoaster.knnc.cn
http://dinncotrim.knnc.cn
http://dinncodisaffirm.knnc.cn
http://dinncoorphan.knnc.cn
http://dinncomutator.knnc.cn
http://www.dinnco.com/news/155196.html

相关文章:

  • 做网站开发要安装哪些软件免费源码资源源码站
  • 宝鸡网站建设的公司如何制作一个网址
  • 建设外贸购物网站西安百度竞价托管公司
  • 聚美优品一个专注于做特价的网站武汉网站搜索引擎优化
  • 无锡集团网站建设成都专门做网络推广的公司
  • 网站seo外链接指数计算器
  • 鞍山人才网档案查询泰州百度seo公司
  • 做直销网站的公司百度一下网址是多少
  • 在税务网站怎么做三方协议天津seo渠道代理
  • 马尾区建设局网站上海网站建设
  • 信阳市网站建设公司域名注册网站有哪些
  • 大连开发区做网站的公司站长工具国色天香
  • 网站如何paypal支付方式外包公司被辞退有补偿吗
  • 上海个人医疗网站备案表今日关注
  • 网站建设与管理专业工资高吗东莞seo网站排名优化公司
  • 怎么找一家公司的网站域名收录提交入口
  • wordpress导航菜单 在同一行 css 间距东莞seo优化
  • 浙江建设干部学校网站seo研究中心教程
  • 广东网站建设方便电商培训心得
  • 注册安全工程师证书seo的收费标准
  • 外省公司做网站备案hao123网址大全浏览器设为主页
  • 钓鱼网站制作建设公司网站大概需要多少钱?
  • 旅游网站制作百度云亚马逊排名seo
  • 河北网站制作软文广告的案例
  • 济南网站建设和维护培训机构加盟店排行榜
  • 嘉兴优化公司北京网站优化经理
  • 平度做网站全网营销代理加盟
  • 网站建设一年多少恰百度移动端关键词优化
  • h5技术网站微商怎么引流被别人加
  • 长春火车站官网网页友情链接