我有一个张量phi = np.random.rand(n, n, 3)和一个矩阵D = np.random.rand(3, 3)。我想沿着phi的最后一个轴将矩阵D相乘,以便输出具有形状(n, n, 3)。我已经试过了 np.einsum("klj,ij->kli", phi, D) 但我对这个符号一点也不自信。基本上我想做的是 res = np.zeros_like(phi)
for i in range(n):
for j in range(n):
res[i, j, :] = D.dot(phi[i, j, :])
Using TF后端,需要构造两个具有形状(batch_size,N,M)的三维向量的相似矩阵,它们是N和M自然数。
函数tf.losses.cosine_distance仅在一维张量之间。我需要建立一个张量矩阵batch_sizexNxM,这样矩阵将是Tensor1和Tensor2的余弦相似性。
我该怎么做?
在构造一个简单的感知器神经网络时,我们通常将格式(batch_size,features)输入的2D矩阵传递给二维权矩阵,类似于中的这种简单的神经网络。我总是假设神经网络的感知器/密集/线性层只接受2D格式的输入,并输出另一个2D输出。但最近,我遇到了这样一个模型:线性层接受三维输入张量,并输出另一个三维张量(o1 = self.a1(x))。
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
class Net(nn.Module):
def
我有三维顶点,它是从一个由单位向量u定义的向上的模型中读取的。我需要将所有这些顶点点转换到另一个空间,它的向上方向由单位向量v定义。
我知道,如果最初的向上方向是(0,1,0),目标是(1,0,0),我可以对所有的点使用类似于这样的旋转矩阵:
x' = x*cos(-90) - y*sin(-90) = y
y' = x*sin(-90) + y*cos(-90) = -x
z' = z
where -90 is the angle from (0,1,0) to (1,0,0).
到目前为止,我尝试将这种方法推广到“开始”中提到的情况的尝试已经证明是徒劳的。
有什么
我很难理解一维全局平均池对嵌入层的作用。我知道嵌入层就像查找表。如果我有tf.keras.layers.Embedding(vocab_size=30, embedding_dim=7, input_length=10),那么输入后的输出是10 rows x 7 columns矩阵还是1 row x 7 columns x 10 length的三维张量?
如果是10 rows x 7 columns,它是否取每一行的平均值并输出形状10 row x 1 columns的单个向量?
如果是1 row x 7 columns x 10 length,它是否取每个向量的平均值并输出一个同样形状为10
我有一个方程要数,看起来是这样的:
F(a,b) = sum(c=1...n, a*b*c[i])
我可以这样数数:
for a=
for b=
for c=
F(a,b)=F(a,b)+a*b*c
end
end
end
但我听说,在大型数组上,matlab“冻结”嵌套循环。所以我可以这样做:
a=(1:n)';
b=1:n2;
Fs=a*b;
for c=
F=F+Fs*c;
end
但我想解决这个问题,没有任何明显的循环。因此,我可以创建三个正交数组a,b,c张量乘积,得到三维数组,然后使用和函数的三维。
a(:,1,1)=1:3;
b(1,
我有一个大小为A的矩阵p x p和一个向量y = [y1,y2,...,yn]。
我想要做的是创建一个三维矩阵的大小p x p x n,也就是说,它包含n带,其中每一个是大小p x p。
如何创建每个乐队?:
每个带等于矩阵A乘以y中的一个值。例如,第一个带是A * y1,第二个带是A * y2。另一方面,带号i,其中i = 1, ..., n等于A * yi
这可以很容易地使用for循环来完成,但是这在计算上非常繁琐和昂贵。如何防止使用for循环?有什么非常快速的自动方法可以直接创建三维矩阵吗?
任何帮助都将不胜感激。