Python 张量标量乘张量流

Python 张量标量乘张量流,python,numpy,tensorflow,math,Python,Numpy,Tensorflow,Math,我目前正在尝试实现我自己的损失函数 我有三个张量 A [batch, row, col, keypoints] # Actual Values B [batch, row, col, keypoints] # Predicted Values C [batch, keypoints_mask] # Mask 关键点\u掩码为1或0。我想把张量当作数组,做最后一个维度的标量乘法 E.g something like this: A [5, 100, 100, 10] B [5, 10

我目前正在尝试实现我自己的损失函数

我有三个张量

A [batch, row, col, keypoints] # Actual Values
B [batch, row, col, keypoints] # Predicted Values
C [batch, keypoints_mask]      # Mask
关键点\u掩码为1或0。我想把张量当作数组,做最后一个维度的标量乘法

E.g something like this:

A [5, 100, 100, 10]
B [5, 100, 100, 10]
C [5, 10]

A[-1][0] = A[-1][0] * C[-1][0]
A[-1][1] = A[-1][1] * C[-1][1]
...

B[-1][0] = B[-1][0] * C[-1][0]
B[-1][1] = B[-1][1] * C[-1][1]
...

Loss = Mean_Squared_Error(A, B)
实现这一点的最佳方法是什么

编辑:

数据是一个图像,其中每个像素有10个值

Psuedo Code

for b in batch:
    for r in row:
        for c in col:
            for i in enumerate(keypoints):
                A[b, r, c, i] = A[b, r, c, i] * C[b, i]
                B[b, r, c, i] = B[b, r, c, i] * C[b, i]

这就是我最终要做的事情,现在看来效果不错

A [5, 100, 100, 10] # Actual
B [5, 100, 100, 10] # Predicted
C [5, 10]           # Mask

Loss = A - B
Loss = Loss * Loss
Loss = tf.reduce_mean(Loss, [1,2]) # [5, 100, 100, 10] -> [5, 10]
Loss = Loss * C

你的索引对我来说有点不清楚。这里的[-1]是什么意思(通常指该维度的最后一个条目)?你的意思是说A[i,,,m]=A[i,,,m]*C[i,m]?也就是说,每个
行、列
条目都有相同的屏蔽?我已经更新了问题。我希望能有一些小魔法,可以直接乘以最后一个维度,而不需要太多的循环。