这个例子是对课程进度表里面的某个学生的剩余课时进行求和汇总。...SUM(profit) as profit'), \DB::raw('SUM(order_count) as order_count') ) )- toArray(); 以上这篇Laravel 对某一列进行筛选然后求和...sum()的例子就是小编分享给大家的全部内容了,希望能给大家一个参考。
数学基础 标量 Scalar 一个标量就是一个单独的数 向量 Vector 一个向量是一列数 可以把向量看做空间中的点,每个元素是不同坐标轴上的坐标 向量中有几个数就叫几维向量 如4维向量:[1, 2,...= B*A 左矩阵行乘以右矩阵列,对位相乘再求和 矩阵转置(transpose),即行列互换 张量 tensor 将3个2×2矩阵排列在一起,就称为3×2×2的张量 张量是神经网络的训练中最为常见的数据形式...as np import torch # 构造一个2行3列的矩阵 x = np.array([[1,2,3], [4,5,6]]) # 查看维度 print(x.ndim) # 形状 print(x.shape...) # 元素总数 print(x.size) # 元素和 print(np.sum(x)) # 对列求和 print(np.sum(x, axis=0)) # 对行求和 print(np.sum(x,...转换成2列,-1表示自动推断出行数 print(x.view(-1,2)) 部分输出: 再看一个张量操作的例子 导数
下表是einsum函数的三个例子: einsum(‘ij -> ji’, Mat) 对矩阵Mat求转置并返回 einsum(‘ij -> i’, Mat) 对矩阵Mat每行求和并返回 einsum(‘ij...-> j’, Mat) 对矩阵Mat每列求和并返回 (二)np.add.at() input: [ndarray], [ndarray or list], [ndarray]; return: <...如果输入的是一个向量,则返回只含有长度一个值的元组。如果输入的是一个矩阵,则返回行数和列数构成的元组。如果输入的是张量,则返回行数,列数和层数构成的元组。...如果输入的是一个张量,则返回三个数构成的元组,第一个数是每一层占用的内存大小,第二个数是每一层中,每一行占用的内存大小,第三个数是每一个数占用的内存大小。...如果是行向量加列向量,系统会将行向量的列数临时扩充为列向量的行数,还会将列向量的行数临时扩充为行向量的列数,例子如下: a = np.array([1, 1]) b = np.array([[1], [
但到了一定程度后,当你希望更好地理解不同机器学习算法运作原理时,线性代数就很有用了,它可以帮助你在开发机器学习系统时更好地做决策。...淡黄色图中有一个矩阵的例子:一个 2×3 的矩阵 (行数×列数)。下图中是另一个矩阵和对应的表示形式。 ? 张量 三维张量是按照一定规律排列在方格中的数组,其中一个变量数字表示轴。...张量有三个索引,其中第一个索引表示行,第二个索引表示列,第三个索引表示轴。例如,V_232 指向第二行、第三列、第二轴的元素,在下图右边的张量中表示 5。 ?...对一个矩阵乘以一个向量,可以理解为对矩阵的每一行乘以向量的每一列,运算结果会是一个向量,它的行数和矩阵的行数一样。下图展示了这是如何计算的。...运算结果会是一个矩阵,行数和第一个矩阵的行数相等,列数和第二个矩阵的列数相等。计算方法如下: 你只需要将第二个矩阵分成列向量,然后分别将第一个矩阵和每个列向量相乘。
但到了一定程度后,当你希望更好地理解不同机器学习算法运作原理时,线性代数就很有用了,它可以帮助你在开发机器学习系统时更好地做决策。...淡黄色图中有一个矩阵的例子:一个 2×3 的矩阵 (行数×列数)。下图中是另一个矩阵和对应的表示形式。 张量 三维张量是按照一定规律排列在方格中的数组,其中一个变量数字表示轴。...张量有三个索引,其中第一个索引表示行,第二个索引表示列,第三个索引表示轴。例如,V_232 指向第二行、第三列、第二轴的元素,在下图右边的张量中表示 5。...矩阵和向量的运算 对一个矩阵乘以一个向量,可以理解为对矩阵的每一行乘以向量的每一列,运算结果会是一个向量,它的行数和矩阵的行数一样。下图展示了这是如何计算的。...注意,只有当第一个矩阵的列数和第二个矩阵的行数相等时,才能把它们两个乘起来。运算结果会是一个矩阵,行数和第一个矩阵的行数相等,列数和第二个矩阵的列数相等。
除了形状改变之外,X中的元素保持不变。 1.6 创建张量: 1.6.1 创建各元素为0的张量 nd.zeros() ● 示例: 我们创建⼀个各元素为0,形状为(2, 3, 4)的张量。...2.8 对NDArray中所有元素求和得到一个只有一个元素的NDArray。...广播机制 3.1 概念 当对两个形状不同的NDArray按元素运算时,可能会触发⼴播(broadcasting)机制:先适当复制元素使这两个NDArray形状相同后再按元素运算。...4.4 截取部分元素,并为其重新赋值 ● 示例: 例⼦中,我们为⾏索引为1的每⼀列元素重新赋值。 5....运算的内存开销 5.1 id()函数 如果两个实例的ID一致,那么它们所对应的内存地址相同,反之则不同。
我们通常拥有由数千栋房屋组成的数据集,每栋房屋都称为一个数据点。此时,我们要做的就是将房屋的向量堆叠起来,形成一个矩阵。每行代表一所房子,每列代表一个解释变量。...我们有 n 个房屋/示例,因此从逻辑上讲,我们应该将设计矩阵中的每一行与列向量 W 相乘。为简洁起见,我们将考虑一个包含两个示例和三个解释变量的简单示例: 矩阵和列向量相乘将产生另一个列向量。...不要忘记矩阵相乘,第一个矩阵的列数应该与第二个矩阵的行数相同。...PyTorch 是众所周知的深度学习库,张量(Tensor)起着至关重要的作用。您可以将张量视为更高维的矩阵,而 PyTorch 允许我们高效地对它们执行数值运算。...为了表示隐藏层中的四个神经元,我们将我们的设计矩阵与一个四列三行的权重矩阵相乘;行数应等于输入的维数,列数应等于后续层中目标神经元的数量。 剩下的就是最终的输出层。
也就是说,对于隐藏层的第j行第k列的神经元,它的输出为: 其中σ是激活函数,b是共享偏置,Wl,m是共享权重的5×5数组,用ax,y表示输入层的第x行第y列的神经元的输出值,即隐层的第j行第...k列的神经元的若干个输入。...2,CNN反向传播的不同之处: 首先要注意的是,一般神经网络中每一层输入输出a,z都只是一个向量,而CNN中的a,z是一个三维张量,即由若干个输入的子矩阵组成。其次: 池化层没有激活函数。...池化层在前向传播的时候,对输入进行了压缩,那么我们向前反向推导上一层的误差时,需要做upsample处理。...卷积层是通过张量卷积,或者说若干个矩阵卷积求和而得到当前层的输出,这和一般的网络直接进行矩阵乘法得到当前层的输出不同。这样在卷积层反向传播的时候,上一层误差的递推计算方法肯定有所不同。
张量(Tensor) 张量是一组数字,排列在一个规则的网格上,具有不同数量的轴。 张量有三个指标,第一个指向行,第二个指向列,第三个指向轴。 例如,V232指向第二行,第三列和第二个轴。...▌计算规则(Computational Rules) ---- ---- 1.矩阵标量运算(Matrix-Scalar Operations) 如果在矩阵基础上乘除或者加一个变量,就代表对矩阵的每一个元素进行数学运算...下图显示了的乘法例子: ? 2.矩阵向量乘法(Matrix-Vector Multiplication) 将矩阵与矢量相乘可以被认为是将矩阵的每一行与矢量的列相乘。...请注意,如果第一个矩阵列的数量与第二个矩阵行的数量匹配,两个矩阵才能做乘法运算。 结果将是一个与第一个矩阵相同行数和与第二个矩阵相同列数的矩阵。...因此,与单位矩阵相乘的每个矩阵都等于它自己。例如,矩阵A乘以其单位矩阵等于A。 您可以通过以下事实来发现单位矩阵:它沿对角线为1,其他每个值都为零。它也是一个“方阵”,意思是它的行数与列数相同。 ?
本文的主要内容是帮助你学习如何进行向量、矩阵以及高阶张量(三维及以上的数组)的求导。并一步步引导你来进行向量、矩阵和张量的求导。...去掉求和符号的表达式如下所示(下标从 1 开始): 在这个表达式中,我们专门把 凸显出来,这是因为这一项正是我们要求导的项。显然,可以看出在求 对 的偏导数时,我们只需要关心 这一项即可。...例如:数据矩阵 中包含非常多的向量,每个向量代表一个输入,那到底是矩阵中的每一行代表一个输入,还是每一列代表一个输入呢? 在第一节中,我们介绍的示例中使用的向量 是列向量。...首先要做的还是写出 的表达式: 显然, 在 的表达式中没有起到任何作用,因此, 同时, 对 中第 3 列元素的求导结果是非零的,正如 表达式中展示的那样。...因为 中的每一个元素都只对 与中对应的那一行求导, 与 的不同行元素之间的导数均为0。 还可以进一步看出,计算偏导数 与和 的行没关系。
我们可以把如图所示的这个数据点x看成一个向量,一个向量就是一个一维数组,你可以把它看成一列数值或者表中的一行数值,n个元素的向量就是n维向量。...比向量大一点的范畴是矩阵,矩阵是由数字组成的矩形数组,向量则是矩阵中的一行或者一列,因此矩阵中的每一行都可以代表一个不同的数据点,相应的每一列数值则是该数据点的各个特征值。...这一切都是运用线性代数得到,代数基本就是在说关系,是对未知数之间的关系的探索。线性代数基本意味着线性关系,它是对矢量空间的信息的规整。...一个经过训练的”单词对向量”模型可以将“单词“转化成“向量”,然后我们可以对这些向量,进行数学计算。我们可以看出单词之间有多密切的关系。...比如动物的类型,单词之间的关联关系也可以构造出来,比如,罗马对于意大利的关系,和北京对中国的关系是一样的。
(m,n) 创建一个全1的m行n列的张量 torch.zeros(m,n,dtype=张量类型) 创建一个符合张量类型的全0m行n列的张量 torch.eye(m,n) 生成一个m行n列的对角线为1,其他为...获取行数与列数 获取Tensor的行数与列数 实现功能 name.size() 获取张量的行数和列数,返回一个元组(m,n) name.shape() 同上 加法运算 加法运算 注释 name1+name2...函数 功能 name.view(-1,m) 将name这个Tensor转换为m列的张量,行数根据列数自动确定,-1是一种标志 name.view(n,-1) 将name这个Tensor转换为n行的张量,...列数根据行数自动确定,-1是一种标志 name.view(x,y) 将name这个m行n列的张量转换为x行y列的张量 因为上面的原因,所以可以用clone克隆一个副本,然后对副本进行变换。...)机制 前面的运算都是针对形状相同的Tensor,但当两个形状不同的Tensor进行运算时,会触发广播( broadcasting )机制。
有没有什么办法让这些张量运算公式稍微显得对人类友好一些呢,能不能减少一些那种扭曲的 \sum 求和符号呢? 小爱发现,求和导致维度收缩,因此求和符号操作的指标总是只出现在公式的一边。...这种只出现在张量公式的一边的下标被称之为哑指标,反之为自由指标。 小爱同学脑瓜子滴溜一转,反正这种只出现在一边的哑指标一定是被求和求掉的,干脆把对应的 \sum 求和符号省略得了。...C_{ij} = A_{ik} B_{kj} 这个公式表达的含义如下: C这个张量的第i行第j列由 A 这个张量的第i行第k列和 B 这个张量的第k行第j列相乘,这样得到的是一个三维张量 D , 其元素为...D_{ikj} ,然后对 D 在维度k上求和得到。...2,只出现在元素计算公式箭头左边的指标叫做哑指标。 3,省略元素计算公式中对哑指标的求和符号。
, 23, 25]]) In [31]: x.sum(axis=1) # 对第(3-1)维求和,就是先“消灭”第二个维度,对每一列进行相加,即可消灭 Out[31]: tensor([[ 9, 12..., 15], [36, 39, 42]]) In [32]: x.sum(axis=2) # 对第(3-2)维求和,就是先“消灭”第一个维度,对每一行进行相加,即可消灭 Out[32...(顾名思义,view仅仅是改变了对这个张量的观察角度,内部数据并未改变) 虽然.view()与.reshape()返回的Tensor与源Tensor是共享data的,但是依然是一个新的Tensor(因为...然后我们就可以对z使用backward(),因为z是一个标量,backward()表示张量\mathbf{x}对标量z的梯度。...广播机制 当对两个形状不同的Tensor按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个Tensor形状相同后再按元素运算。
tensor([[ 1.0506, -0.5875], [-1.2477, 0.0635], [ 0.8997, 0.1551]]) View(a,b)中第一个参数a代表目标张量的行数...为了简便起见,也可以只指定第一个参数a,b这个参数设置成-1,函数会自动计算对应的列数。...Squeeze(a,b)中第一个参数a代表传入的张量,b代表要缩减的维数。...squeeze相反,可以增加张量的维度。...Max(a,b)中第一个参数a代表传入的张量,b代表要对应的维数。0代表返回每一列的最大值,1代表返回每一行的最大值。
基本思路:用加法换乘法 众所周知,矩阵乘法的传统算法是:两个矩阵行列交换相乘,然后求和,作为新矩阵的对应元素。其中涉及到大量的加法和乘法运算。...同样以2*2矩阵为例,使用三维张量来表示 AB=C 的矩阵乘法运算过程,其中左右维度(列)为A,上下维度(行)为B,前后维度(深)为C。 用{0,1}对这个表示张量进行填充。...在张量表示后,可以通过对矩阵的「低秩分解」,设张量Tn为两个 n×n 矩阵相乘的表示张量。将Tn分解为r个秩一项(rank-one term)的外积。...因此,即使我们改变了矩阵的基础,它在本质上仍然代表同样的转换。 然而,对于这个算法来说,却不是这样的。 有了不同的数字,算法看起来就不同了,因为它是一种对彼此的转换。...总结一下:为了解决这些游戏,开始,我们的矩阵是满的,棋盘处于初始状态,然后就要考虑不同的动作,每一步动作都会包含更多的动作,包括你的对手可能考虑到的动作。 这其实就是一个树搜索算法。
随后使用修改过的优化算法运行一定轮数的训练,调整类聚中心的值(权值从属关系不改变),具体过程参见Deep Compression论文,这里仅考虑结果,进行完量化后,每一层的权值张量变为一个同形状的标号张量和一个解码表...标号张量标记每个位置的元素属于的类别,一般仅有25bit(即分为432类);解码表标记每个类别的数据,如下图所示: ? 现在考虑量化对实现的影响。原有的高精度权值张量(取 ?...随后考虑矩阵的表示方法,CSC稀疏表示将矩阵的每一列视为一个向量进行压缩,每一列都产生一个v向量和一个z向量,第i列产生的向量 ? 和 ? 向量的长度和其他列均可能不同。...将每一列的v向量按列号依次连接,z向量按列号依次连接,获得矩阵的v和z向量,为了区分不同列,额外引入u向量,u向量长度为列数加1,表示每一列的v或z向量在矩阵v和z向量中的位置,即第i列的v和z向量在矩阵的...矩阵乘法计算的目标为: ? 上图中,有a=8、b=8。权值矩阵的第i行数据保存在标号为 ? 的PE中并由该PE负责计算。第i个PE的所有权值行向量顺序堆叠组成一个新权值矩阵 ?
在Pandas中,数据的获取逻辑是“先列后行”,所以max()默认返回每一列的最大值,axis参数默认为0,如果将axis参数设置为1,则返回的结果是每一行的最大值,后面介绍的其他统计运算函数同理。...根据DataFrame的数据特点,每一列的数据属性相同,进行统计运算是有意义的,而每一行数据的数据属性不一定相同,进行统计计算一般没有实际意义,极少使用,所以本文也不进行举例。...使用DataFrame数据调用mean()函数,返回结果为DataFrame中每一列的平均值,mean()与max()和min()不同的是,不能计算字符串或object的平均值,所以会自动将不能计算的列省略...使用DataFrame数据调用median()函数,返回结果为DataFrame中每一列的中位数,median()也不能计算字符串或object的中位数,会自动将不能计算的列省略。 ?...累计求和是指,对当前数据及其前面的所有数据求和。如索引1的累计求和结果为索引0、索引1的数值之和,索引2的累计求和结果为索引0、索引1、索引2的数值之和,以此类推。 ?
[x215h32ivd.png] 2D 张量可以看成矩阵,2D 张量的第一个维度为矩阵的行 (dim = 0),2D 张量的第二个维度为矩阵的列 (dim = 1),从左向右依次看三个红色元素在矩阵中的具体位置...如果按照从上到下来看三个红色元素,采集元素的顺序和从前面从左向右看的时候不同,此时采集元素的顺序为 1, 5, 6,现在看看此时这三个红色元素在矩阵中的具体位置: 1: 第 0 行的第 1 列 5: 第...(行或列) 进行索引传入的 index 参数的张量形状不同,在 gather 函数中规定: 传入 index 的张量维度数要和输入张量 input 的维度数相同; 输出张量的形状和传入 index 张量的形状相同...比如对于前面的 2D 张量,对行索引且每一行只采集一个元素,则 index 在行上的长度为 1,index 的形状即为 (1 x 3); 接下来使用一个形状为 (3 x 5) 2D 张量来详细的分析 gather...行的第 4 列 如果想要使用 gather 函数采集元素,需要在 index 中指定 5 个行索引号,而每列只索引一个元素且在行上索引 (dim = 0),因此最终我们需要传入 index 张量的形状为
向量是元素的一维列表: 矩阵是向量的二维列表: 下标表示(行,列)。考虑矩阵的另一种方式是用向量作为元素的向量。请注意,它们通常用大写字母表示。...矩阵乘法 请记住,矩阵是向量的集合。相同的操作适用于向量,但在涉及行和列时还有一些规则需要注意。...发生乘法的唯一方法是第一个矩阵中的行数与第二个矩阵中的列数匹配。...嗯,如前所述,二维的点积主要是将向量彼此相乘。在三维中,重点是按矩阵相乘,然后对这些矩阵中的每个向量执行点积。 上图应该有助于解释这一点。将两个 3D 张量视为矩阵向量可能会有所帮助。...由于点积是通过按元素相乘然后求和来执行的,因此首先发生的事情是每个矩阵与其相应的矩阵相乘。当这种情况发生时,矩阵乘法会导致矩阵中的每个向量与其他向量执行点积。从某种意义上说,它就像一个嵌套的点积。
领取专属 10元无门槛券
手把手带您无忧上云