Numpy 如何使用“函数”实现等式;diag";以及Python中带圆圈的时间符号(⊗;)

Numpy 如何使用“函数”实现等式;diag";以及Python中带圆圈的时间符号(⊗;),numpy,machine-learning,deep-learning,Numpy,Machine Learning,Deep Learning,上述方程在本文()中作为方程#4找到 对于如何将其转换为以下代码,我感到非常困惑: epistemic = np.mean(p_hat**2, axis=0) - np.mean(p_hat, axis=0)**2 aleatoric = np.mean(p_hat*(1-p_hat), axis=0) 我想我可能会因为等式中的符号而感到困惑,例如“diag”和带十字的圆。在Python中,diag和circle是如何表示的 谢谢。链接文章解释了以下等式(2)“外方”操作的定义: 五⊗2=v

上述方程在本文()中作为方程#4找到

对于如何将其转换为以下代码,我感到非常困惑:

epistemic = np.mean(p_hat**2, axis=0) - np.mean(p_hat, axis=0)**2
aleatoric = np.mean(p_hat*(1-p_hat), axis=0)
我想我可能会因为等式中的符号而感到困惑,例如“diag”和带十字的圆。在Python中,diag和circle是如何表示的


谢谢。

链接文章解释了以下等式(2)“外方”操作的定义:

五⊗2=v v

在机器学习领域,向量被解释为列向量。在numpy中,如果
v
是一个形状向量
(n,)
,则您可以编写:

v.reshape(-1, 1) * v
结果是一个形状
(n,n)
数组。如果希望更接近列和行向量的表示法,还可以编写:

v_column = v.reshape(-1, 1)
result = v_column @ v_column.T
函数
diag
np.diag
相同:你给它一个向量,然后得到一个对角矩阵

如果没有关于
p_hat
的形状以及方程式中哪个轴表示
t
的信息,很难说出你问题中的Python代码片段是如何实现论文中的方程式的。在最合理的定义中,
p\u hat
将具有形状
(T,n)
,在这种情况下,
np.平均值(p\u hat**2,axis=0)
将返回形状
(n,)
,这与您从论文中引用的方程不一致,该方程应产生
(n,n)
形状

鉴于论文中的认知不确定性和任意不确定性似乎是标量而不是向量,我怀疑作者在定义⊗2:他们应该写

五⊗2=vT v

它翻译成Python(在shape
(n,)
数组上)如下


这取决于这些符号在本文中的含义。
np.sum(v**2)