python - PyTorch - 逐元素签名的最小值/最大值?
问题描述
我可能遗漏了一些明显的东西,但我找不到计算它的方法。
给定两个张量,我想保留每个张量中的最小元素以及符号。
我想过
sign_x = torch.sign(x)
sign_y = torch.sign(y)
min = torch.min(torch.abs(x), torch.abs(y))
为了最终将符号与获得的最小值相乘,但是我没有办法将正确的符号乘以保留的每个元素,并且必须选择两个张量之一。
解决方案
这是一种方法。乘以一个布尔值的张量,表示是否torch.sign(x)
是计算的结果。然后将两个结果张量的逻辑或 ( ) 组合起来,然后乘以计算。torch.sign(y)
x
y
min
|
min
mins = torch.min(torch.abs(x), torch.abs(y))
xSigns = (mins == torch.abs(x)) * torch.sign(x)
ySigns = (mins == torch.abs(y)) * torch.sign(y)
finalSigns = xSigns.int() | ySigns.int()
result = mins * finalSigns
如果x
和y
对于某个元素具有相同的绝对值,则在上面的代码中,符号x
优先。要y
获得优先权,请交换顺序并finalSigns = ySigns.int() | xSigns.int()
改为使用。
推荐阅读
- python - “str”类型对象的未知格式代码“g”
- multithreading - 尽管有 -j 选项,但目标链接上的 cmake 瓶颈
- css - Vuetify,文本字段旁边的对齐按钮
- state-management - Blazor webassembly,状态管理。刷新子组件
- vue.js - 在自定义 vuetify 组件中使用 v-mask 时出错
- javascript - 使用 javascript SDK 的财务打印机 FP-80II RT 实现
- mysql - 根据@variable的IF条件执行不同的WHERE语句?
- r - 如何计算 MSE?
- javascript - 使用多个关键字动态拆分字符串
- django - 带有 Gunicorn 的 Nginx 反向代理对站点名称的处理方式不同