簡體   English   中英

沿維度的點積

[英]Dot product along a dimension

我有兩個形狀為 [B, 3, 240, 320] 的張量,其中 B 代表批量大小,3 代表通道,240 代表高度(H),320 代表寬度(W)。

我需要沿通道維度(3 個通道)找到點積,因此生成的張量的形狀為 [B, 1, 240, 320]。 我的張量在 gpu 中有 float32 元素(cuda 到 backprop)。

你們能建議我怎么做嗎?

謝謝!

更多說明:

假設我們有 B=10,H=100,W=200。 因此,從上面來看,第一張量和第二張量都是常見的。 如果我們保持 B、H、W 不變,我們會得到一個 1D 向量作為結果張量(具有 3 個元素)。 我需要取這兩個向量的點積。 因此,結果張量的維度為 [B, 1, 240, 320]

點積是兩個向量中值相乘的總和:

所以我猜你想將通道維度上的所有值相乘並且需要找到結果的總和,如果我的理解有誤,請糾正我。

import torch

t1 = torch.rand(10, 3, 240, 320)
t2 = torch.rand(10, 3, 240, 320)

# Multiply two tensors and sum along the channel dimension
multp  = t1 * t2 
summed = multp.sum(dim = 1, keepdim = True)

print(summed.shape)  # torch.Size([10, 1, 240, 320])    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM