(200,10)和(10,)的ndarray数组怎么计算内积,得到的是什么维度?

今天在定义一个内积运算的时候,发现了一个模糊的问题,两个变量,都是ndarray数组,一个维度是(200,10),一个维度是(10,),两者求内积后得到的新数组的维度是(200,),该如何理解?

一、数据的维度

max_degree = 10 # 多项式的最大阶数
n_train, n_test = 100, 100 # 训练和测试数据集的大小
true_w = np.zeros(max_degree)
true_w[0 : 4] = np.array([5, 1.2, -3.4, 5.6])
features = np.random.normal(size = (n_train + n_test, 1))
np.random.shuffle(features)
poly_features = np.power(features, np.arange(max_degree).reshape(1, -1))
for i in range(max_degree):
    poly_features[:, i] /= math.gamma(i + 1)
labels = np.dot(poly_features, true_w)
labels += np.random.normal(scale = 0.1, size = labels.shape)
true_w, features, poly_features, labels = [torch.tensor(x, dtype = torch.float32) for x in [true_w, features, poly_features, labels]]

我们看一下true_w, features, poly_features, labels四个变量的维度分别为多少:

首先是true_w,维度为(10,1)

在这里插入图片描述
再然后是features,维度为(200,1):

在这里插入图片描述

再然后是poly_features,维度为(200,10):

在这里插入图片描述

最后是labels,维度为(200,):

在这里插入图片描述

二、问题的理解

labels = np.dot(poly_features, true_w)

我们可以知道,labels是由poly_featurestrue_w做内积得到的。

形状为(10,)的数组是一维数组。它的结构应该与此类似:a=[1,2,3,4,5]。

我们举一个例子:

import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([1, 2, 3, 4, 5, 6, 7, 8]).reshape((-1, 4))
c = np.dot(b, a)
print(c)

得到的结果为:

(PyTorch) D:\Code Project>D:/Anaconda/envs/PyTorch/python.exe "d:/Code Project/demo.py"
[30 70]

数据类型为ndarray数组。

那么30和70分别是怎么计算的?

不难理解:
30 = 1 ∗ 1 + 2 ∗ 2 + 3 ∗ 3 + 4 ∗ 4 = 1 + 4 + 9 + 16 = 30 30 = 1*1+2*2+3*3+4*4 = 1+4+9+16=30 30=11+22+33+44=1+4+9+16=30
70 = 1 ∗ 5 + 2 ∗ 6 + 3 ∗ 7 + 4 ∗ 8 = 5 + 12 + 21 + 32 = 38 + 32 = 70 70 = 1*5+2*6+3*7+4*8=5+12+21+32=38+32=70 70=15+26+37+48=5+12+21+32=38+32=70
内积后为一维数组。

同理可得,每一行做内积,共计200行,得到200个数据,内积后为一维数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值