[英]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.