【问题标题】:numpy summation with matrix indices带有矩阵索引的numpy求和
【发布时间】:2017-06-06 04:08:25
【问题描述】:

我有表达式 Sum 从 1 到 K of log(sigmoid(-u_k^Tv_c)) .抱歉,我在 StackOverflow 上没有足够的声誉来发布图片。

这里 u 和 v 都是矩阵。我正在尝试使用 numpy 实现这一点并完全陷入困境。

我有什么:

np.sum(log(sigmoid(-np.dot(u.T,v))))

我知道这甚至不接近我想要的,因为我还无法将总和限制在 1 到 k 的范围内。 Sigmoid 是在别处实现的函数。 u 和 v 的尺寸应该没问题。

【问题讨论】:

  • 用imgur什么的链接?
  • 什么是cv 的下标)?
  • 是的,c是下标
  • 所以v_c 是一个实际上并没有改变总和的列向量?你可以写成 v[:, c:c+1] 或 v[:, c] [:, None]。诚然,两者都不是特别容易让人眼前一亮。无论如何,假设你的 sigmoid 可以处理数组参数,我猜你的代码应该在你用任一表达式替换 v 后立即工作。

标签: python numpy matrix


【解决方案1】:

如果没有正式的数学符号,这有点不清楚

Sum from 1 to K of log(sigmoid(-u_k^Tv_c))

但让我们试着澄清一些细节。

uv 是“矩阵”。这有点模糊。什么,特别是它们的形状。一维,二维?请记住,1d 的转置没有任何作用。

这就是你所说的 sigmoid:How to calculate a logistic sigmoid function in Python?

sum from 1 to K - 总和是什么?对uk 维度求和?

u_k^T v_c 是否应该是一个外部产品,产生二维结果(与u 大小相同的行,来自c 的列)?还是标量点/矩阵乘积,将两个一维数组相乘并求和?

你期望结果是什么形状?

使用 numpy 数组时的关键点,输入的形状是什么,结果的期望形状是什么?

【讨论】:

    猜你喜欢
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多