我正在优化反向传播算法的实现,以训练神经网络。我正在研究的方面之一是对数据点集(输入/输出向量)执行矩阵运算,这是由numpy库优化的批处理过程,而不是遍历每个数据点。
在我原来的算法中,我做了以下工作:
for datapoint in datapoints:
A = ... (created out of datapoint info)
B = ... (created out of datapoint info)
C = np.dot(A,B.transpose())
____________________
A: (7,1) numpy array
B: (6,1) numpy array
C: (7,6) numpy array
然后,我将所述矩阵扩展为张量,其中第一个形状索引将引用数据集。如果我有3个数据集(为简单起见),则矩阵如下所示:
A: (3,7,1) numpy array
B: (3,6,1) numpy array
C: (3,7,6) numpy array
仅使用np.tensordot或其他Numpy操纵,如何生成C?
我认为答案看起来像这样:
C = np.tensordot(A.[some manipulation], B.[some manipulation], axes = (...))
((这是更复杂的应用程序的一部分,我构造事物的方式不再灵活。如果找不到解决方案,我将仅遍历数据集并为每个数据集执行乘法)