簡體   English   中英

如何從多個張量中找到最大張量?

[英]How to find the maximum tensor from multiple tensors?

我在理解張量如何工作時遇到問題,例如我創建了一個充滿零的張量

Enhanced = tf.zeros((m, n))

我想使用 for 循環將這些零替換為來自另一個張量“lr_ip”的元素:

m, n, c = lr_ip.shape
Enhanced = tf.zeros((m, n))
for k in range(c):
    q = lr_ip[:, :, k]
    for i in range(1, m+1):
        for j in range(1, n+1):
            qi = q[i-1:i+2, j-1:j+2]
            p_0 = abs(qi[1][1]*(1-qi[1][0]*qi[1][2]))
            p_45 = abs(qi[1][1]*(1-qi[2][0]*qi[0][2]))
            p_90 = abs(qi[1][1]*(1-qi[0][1]*qi[2][1]))
            p_135 = abs(qi[1][1]*(1-qi[0][0]*qi[2][2]))

            tensor_list = [p_0, p_45, p_90, p_135]

所以我陷入了這一步,我想用“tensor_list”中的最大張量替換“增強[i-1,j-1]”元素我在谷歌搜索並找到一些解決方案,但它們都不適合我,例如我試過:

        max_tensor = tensor_list[0]
        for tensor in tensor_list[1:]:
            Enhanced[i-1, j-1] = torch.max(max_tensor,tensor)

但我得到這個錯誤

TypeError: max() received an invalid combination of arguments - got (Tensor, Tensor), but expected one of:
 * (Tensor input)
 * (Tensor input, Tensor other, *, Tensor out)
 * (Tensor input, int dim, bool keepdim, *, tuple of Tensors out)
 * (Tensor input, name dim, bool keepdim, *, tuple of Tensors out)

我也嘗試使用 functools 但它也不起作用,它給了我同樣的錯誤。 先感謝您

我認為還有另一種解決問題的方法是將張量“lr_ip”轉換為 Eagertensor,然后轉換為 numpy,但我不知道如何以這種方式實現

比較兩個張量時,您需要使用 torch.maximum() 而不是 torch.max() 。

參考

https://pytorch.org/docs/stable/generated/torch.maximum.html

暫無
暫無

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

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