【问题标题】:Total variation implementation in numpy for a piecewise linear functionnumpy中分段线性函数的总变化实现
【发布时间】:2021-08-22 19:09:41
【问题描述】:

我想在 python 中使用total variation,但我找不到现有的实现。

假设我有一个元素数量有限的数组,用 numpy 的实现是否简单如下:

import numpy as np

a = np.array([...], dtype=float)
tv = np.sum(np.abs(np.diff(a)))

我的主要疑问是如何计算所有分区的tv 的上限值,以及是否仅绝对差的总和就足以满足有限的浮点数数组。

编辑:我的输入数组表示一个分段线性函数,因此整个分区集的上确界确实是连续点之间的绝对差之和。

【问题讨论】:

    标签: python numpy variations


    【解决方案1】:

    是的,没错。

    我想您对Wikipedia page for total variation 上的数学定义感到困惑。请查看Wikipedia page for total variation denoising 上更实用的定义。

    对于实际代码(甚至是 Python)实现,请参见例如Tensorflow's total_variation(),虽然这是针对一个或多个(2D,彩色)图像,所以 TV 是针对行和列计算的,然后相加。

    【讨论】:

    • 非常感谢!是的,确实,我找到了指示简化版本的总变化去噪页面 - 因为我的数组是有限的并且代表分段线性函数,所以适合我的情况。我还将查看 Tensorflow 的实现,但由于对于这种特定情况,我的代码只是一行,因此我将使用此实现(除非存在我缺少 atm 的边缘情况)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多