张量标量乘法张量流

时间:2018-07-27 08:16:10

标签: python numpy tensorflow math

我目前正在尝试实现自己的损失功能。

我有三个张量。

A [batch, row, col, keypoints] # Actual Values
B [batch, row, col, keypoints] # Predicted Values
C [batch, keypoints_mask]      # Mask

keypoints_mask是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]

1 个答案:

答案 0 :(得分:1)

这是我最终要执行的操作,目前似乎可以正常工作。

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