ot.sliced
切片的OT距离
函数
- ot.sliced.get_random_projections(d, n_projections, seed=None, backend=None, type_as=None)[源]
从维度为 \(d-1\) 的单位球面上生成 n_projections 个样本: \(\mathcal{U}(\mathcal{S}^{d-1})\)
- Parameters:
- Returns:
out – 球体上的单位均匀向量
- Return type:
ndarray,形状 (d, n_projections)
示例
>>> n_projections = 100 >>> d = 5 >>> projs = get_random_projections(d, n_projections) >>> np.allclose(np.sum(np.square(projs), 0), 1.) True
- ot.sliced.max_sliced_wasserstein_distance(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算最大p切片Wasserstein距离的蒙特卡洛近似
\[\mathcal{Max-SWD}_p(\mu, \nu) = \underset{\theta _in \mathcal{U}(\mathbb{S}^{d-1})}{\max} [\mathcal{W}_p^p(\theta_\# \mu, \theta_\# \nu)]^{\frac{1}{p}}\]其中 :
\(\theta_\# \mu\) 代表投影的推送 \(\mathbb{R}^d \ni X \mapsto \langle \theta, X \rangle\)
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, optional =) – 用于计算切片Wasserstein的幂p
投影 (形状 (维度, 投影数), 可选) – 投影矩阵(在这种情况下不使用投影数和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_distance 会返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 切片的Wasserstein成本
log (dict, optional) – 仅在参数log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> sliced_wasserstein_distance(X, X, seed=0) 0.0
参考文献
- ot.sliced.sliced_wasserstein_distance(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算p切片Wasserstein距离的蒙特卡罗近似值
\[\mathcal{SWD}_p(\mu, \nu) = \underset{\theta \sim \mathcal{U}(\mathbb{S}^{d-1})}{\mathbb{E}}\left(\mathcal{W}_p^p(\theta_\# \mu, \theta_\# \nu)\right)^{\frac{1}{p}}\]其中 :
\(\theta_\# \mu\) 表示投影 \(X \in \mathbb{R}^d \mapsto \langle \theta, X \rangle\) 的推前。
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, optional =) – 用于计算切片Wasserstein的幂p
投影 (形状 (维度, 投影数), 可选) – 投影矩阵(在这种情况下不使用投影数和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_distance 会返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 切片的Wasserstein成本
log (dict, optional) – 仅在参数log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> sliced_wasserstein_distance(X, X, seed=0) 0.0
参考文献
[31] Bonneel, Nicolas, 等. “切片和拉东华斯坦质心。” 数学成像与视觉杂志 51.1 (2015): 22-45
- ot.sliced.sliced_wasserstein_sphere(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算球面切片-Wasserstein 差异。
\[SSW_p(\mu,\nu) = \left(\int_{\mathbb{V}_{d,2}} W_p^p(P^U_\#\mu, P^U_\#\nu)\ \mathrm{d}\sigma(U)\right)^{\frac{1}{p}}\]其中:
\(P^U_\# \mu\) 表示投影的推前 \(\forall x\in S^{d-1},\ P^U(x) = \frac{U^Tx}{\|U^Tx\|_2}\)
该函数在后台运行,但不支持tensorflow和jax。
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标领域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, 可选的 (默认=2)) – 用于计算球面切片Wasserstein的功率p
投影 (形状 (投影数量, 维度, 2), 可选) – 投影矩阵(在这种情况下,不使用投影数量和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_sphere 将返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 球面切片瓦瑟斯坦成本
log (dict, optional) – 仅当parameters中的log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> X = X / np.sqrt(np.sum(X**2, -1, keepdims=True)) >>> sliced_wasserstein_sphere(X, X, seed=0) 0.0
参考文献
[46] Bonet, C., Berg, P., Courty, N., Septier, F., Drumetz, L., & Pham, M. T. (2023). 球面切片-沃瑟斯坦。国际学习表征会议。
- ot.sliced.sliced_wasserstein_sphere_unif(X_s, a=None, n_projections=50, seed=None, log=False)[源]
计算相对于均匀分布的2-球面切片瓦瑟斯坦距离。
\[SSW_2(\mu_n, \nu)\]在哪里
\(\mu_n=\sum_{i=1}^n \alpha_i \delta_{x_i}\)
\(\nu=\mathrm{Unif}(S^1)\)
- Parameters:
- Returns:
cost (float) – 球面切片瓦瑟斯坦成本
log (dict, optional) – 仅当parameters中的log==True时返回日志字典
示例
>>> np.random.seed(42) >>> x0 = np.random.randn(500,3) >>> x0 = x0 / np.sqrt(np.sum(x0**2, -1, keepdims=True)) >>> ssw = sliced_wasserstein_sphere_unif(x0, seed=42) >>> np.allclose(sliced_wasserstein_sphere_unif(x0, seed=42), 0.01734, atol=1e-3) True
参考文献:
[46] Bonet, C., Berg, P., Courty, N., Septier, F., Drumetz, L., & Pham, M. T. (2023). 球面切片-沃瑟斯坦。国际学习表征会议。
- ot.sliced.get_random_projections(d, n_projections, seed=None, backend=None, type_as=None)[源]
从维度为 \(d-1\) 的单位球面上生成 n_projections 个样本: \(\mathcal{U}(\mathcal{S}^{d-1})\)
- Parameters:
- Returns:
out – 球体上的单位均匀向量
- Return type:
ndarray,形状 (d, n_projections)
示例
>>> n_projections = 100 >>> d = 5 >>> projs = get_random_projections(d, n_projections) >>> np.allclose(np.sum(np.square(projs), 0), 1.) True
- ot.sliced.max_sliced_wasserstein_distance(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算最大p切片Wasserstein距离的蒙特卡洛近似
\[\mathcal{Max-SWD}_p(\mu, \nu) = \underset{\theta _in \mathcal{U}(\mathbb{S}^{d-1})}{\max} [\mathcal{W}_p^p(\theta_\# \mu, \theta_\# \nu)]^{\frac{1}{p}}\]其中 :
\(\theta_\# \mu\) 代表投影的推送 \(\mathbb{R}^d \ni X \mapsto \langle \theta, X \rangle\)
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, optional =) – 用于计算切片Wasserstein的幂p
投影 (形状 (维度, 投影数), 可选) – 投影矩阵(在这种情况下不使用投影数和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_distance 会返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 切片的Wasserstein成本
log (dict, optional) – 仅在参数log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> sliced_wasserstein_distance(X, X, seed=0) 0.0
参考文献
[35] Deshpande, I., Hu, Y. T., Sun, R., Pyrros, A., Siddiqui, N., Koyejo, S., … & Schwing, A. G. (2019). 最大切片沃瑟斯坦距离及其在GAN中的应用。发表于IEEE/CVF计算机视觉与模式识别会议论文集(第10648-10656页)。
- ot.sliced.sliced_wasserstein_distance(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算p切片Wasserstein距离的蒙特卡罗近似值
\[\mathcal{SWD}_p(\mu, \nu) = \underset{\theta \sim \mathcal{U}(\mathbb{S}^{d-1})}{\mathbb{E}}\left(\mathcal{W}_p^p(\theta_\# \mu, \theta_\# \nu)\right)^{\frac{1}{p}}\]其中 :
\(\theta_\# \mu\) 表示投影 \(X \in \mathbb{R}^d \mapsto \langle \theta, X \rangle\) 的推前。
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, optional =) – 用于计算切片Wasserstein的幂p
投影 (形状 (维度, 投影数), 可选) – 投影矩阵(在这种情况下不使用投影数和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_distance 会返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 切片的Wasserstein成本
log (dict, optional) – 仅在参数log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> sliced_wasserstein_distance(X, X, seed=0) 0.0
参考文献
[31] Bonneel, Nicolas, 等. “切片和拉东华斯坦质心。” 数学成像与视觉杂志 51.1 (2015): 22-45
- ot.sliced.sliced_wasserstein_sphere(X_s, X_t, a=None, b=None, n_projections=50, p=2, projections=None, seed=None, log=False)[源]
计算球面切片-Wasserstein 差异。
\[SSW_p(\mu,\nu) = \left(\int_{\mathbb{V}_{d,2}} W_p^p(P^U_\#\mu, P^U_\#\nu)\ \mathrm{d}\sigma(U)\right)^{\frac{1}{p}}\]其中:
\(P^U_\# \mu\) 表示投影的推前 \(\forall x\in S^{d-1},\ P^U(x) = \frac{U^Tx}{\|U^Tx\|_2}\)
该函数在后台运行,但不支持tensorflow和jax。
- Parameters:
X_s (ndarray, shape (n_samples_a, dim)) – 源领域中的样本
X_t (ndarray, shape (n_samples_b, dim)) – 目标领域中的样本
a (ndarray, shape (n_samples_a,), optional) – 源域中的样本权重
b (ndarray, shape (n_samples_b,), optional) – 目标域中的样本权重
n_projections (int, 可选) – 用于蒙特卡洛近似的投影数量
p (float, 可选的 (默认=2)) – 用于计算球面切片Wasserstein的功率p
投影 (形状 (投影数量, 维度, 2), 可选) – 投影矩阵(在这种情况下,不使用投影数量和种子)
seed (int 或 RandomState 或 None, 可选) – 用于随机数生成器的种子
log (bool, 可选) – 如果为 True,sliced_wasserstein_sphere 将返回使用的投影及其相关的 EMD。
- Returns:
cost (float) – 球面切片瓦瑟斯坦成本
log (dict, optional) – 仅当parameters中的log==True时返回日志字典
示例
>>> n_samples_a = 20 >>> X = np.random.normal(0., 1., (n_samples_a, 5)) >>> X = X / np.sqrt(np.sum(X**2, -1, keepdims=True)) >>> sliced_wasserstein_sphere(X, X, seed=0) 0.0
参考文献
[46] Bonet, C., Berg, P., Courty, N., Septier, F., Drumetz, L., & Pham, M. T. (2023). 球面切片-沃瑟斯坦。国际学习表征会议。
- ot.sliced.sliced_wasserstein_sphere_unif(X_s, a=None, n_projections=50, seed=None, log=False)[源]
计算相对于均匀分布的2-球面切片瓦瑟斯坦距离。
\[SSW_2(\mu_n, \nu)\]在哪里
\(\mu_n=\sum_{i=1}^n \alpha_i \delta_{x_i}\)
\(\nu=\mathrm{Unif}(S^1)\)
- Parameters:
- Returns:
cost (float) – 球面切片瓦瑟斯坦成本
log (dict, optional) – 仅当parameters中的log==True时返回日志字典
示例
>>> np.random.seed(42) >>> x0 = np.random.randn(500,3) >>> x0 = x0 / np.sqrt(np.sum(x0**2, -1, keepdims=True)) >>> ssw = sliced_wasserstein_sphere_unif(x0, seed=42) >>> np.allclose(sliced_wasserstein_sphere_unif(x0, seed=42), 0.01734, atol=1e-3) True
参考文献:
[46] Bonet, C., Berg, P., Courty, N., Septier, F., Drumetz, L., & Pham, M. T. (2023). 球面切片-沃瑟斯坦。国际学习表征会议。