GVKun编程网logo

使用 Numpy einsum(使用 numpy 的什么函数可以求解矩阵的迹)

1

如果您对使用Numpyeinsum和使用numpy的什么函数可以求解矩阵的迹感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用Numpyeinsum的各种细节,并对使用numpy的什么函数可以

如果您对使用 Numpy einsum使用 numpy 的什么函数可以求解矩阵的迹感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解使用 Numpy einsum的各种细节,并对使用 numpy 的什么函数可以求解矩阵的迹进行深入的分析,此外还有关于"import numpy as np" ImportError: No module named numpy、3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数、A * B + C使用np.einsum、CuPy.einsum 慢?的实用技巧。

本文目录一览:

使用 Numpy einsum(使用 numpy 的什么函数可以求解矩阵的迹)

使用 Numpy einsum(使用 numpy 的什么函数可以求解矩阵的迹)

如何解决使用 Numpy einsum

我正在尝试使用 Numpy 对函数进行矢量化,以计算使用 scikit-learn 拟合的多项 logit 模型中特征的平均边际效应。我已经设法使用 for 循环 进行计算,它看起来像这样

  1. #Get probabilities for each obs i belonging to class j. shape = N * J
  2. probas = fitted_model.predict_proba(X)
  3. #Get coefficients. Shape j_classes * k_coefficients
  4. betas = fitted_model.coef_
  5. J = probas.shape[1]
  6. N = probas.shape[0]
  7. K = betas.shape[1]
  8. avg_margins = np.zeros([K,J])
  9. for j in tqdm(range(J)):
  10. for k in range(K):
  11. dydw = 0
  12. for i in range(N):
  13. dydw += probas[i,j] * (betas[j,k] - np.dot(probas[i,:],betas[:,k]))
  14. avg_margins[k,j] = 1 / N * dydw

然而,这很慢,为什么我想要摆脱循环。我是 Numpy 和线性代数的初学者,所以请多多包涵,但我认为我最好的选择是使用 numpy einsum,到目前为止我得到的就是这个

  1. avg_margins = 1 / N * np.einsum(''ij,jk -> kj'',probas,betas - np.einsum(''im,mk -> k'',betas))

不幸的是,这返回了错误的结果,我不确定我哪里出错了。任何有关我哪里出错的帮助或提示将不胜感激!

解决方法

这里不需要 einsum:

  1. diff = betas[:,None] - np.dot(probas,betas)
  2. avg_margins = np.sum(probas * diff.T,axis=1) / N

"import numpy as np" ImportError: No module named numpy

问题:没有安装 numpy

解决方法:

下载文件,安装

numpy-1.8.2-win32-superpack-python2.7

安装运行 import numpy,出现

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    import numpy
  File "C:\Python27\lib\site-packages\numpy\__init__.py", line 153, in <module>
    from . import add_newdocs
  File "C:\Python27\lib\site-packages\numpy\add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "C:\Python27\lib\site-packages\numpy\lib\__init__.py", line 8, in <module>
    from .type_check import *
  File "C:\Python27\lib\site-packages\numpy\lib\type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "C:\Python27\lib\site-packages\numpy\core\__init__.py", line 6, in <module>
    from . import multiarray
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

原因是:python 装的是 64 位的,numpy 装的是 32 位的

重新安装 numpy 为:numpy-1.8.0-win64-py2.7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数

3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数

目录

[TOC]

前言

具体我们来学 Numpy 的统计函数

(一)函数一览表

调用方式:np.*

.sum(a) 对数组 a 求和
.mean(a) 求数学期望
.average(a) 求平均值
.std(a) 求标准差
.var(a) 求方差
.ptp(a) 求极差
.median(a) 求中值,即中位数
.min(a) 求最大值
.max(a) 求最小值
.argmin(a) 求最小值的下标,都处里为一维的下标
.argmax(a) 求最大值的下标,都处里为一维的下标
.unravel_index(index, shape) g 根据 shape, 由一维的下标生成多维的下标

(二)统计函数 1

(1)说明

(2)输出

.sum(a)

.mean(a)

.average(a)

.std(a)

.var(a)

(三)统计函数 2

(1)说明

(2)输出

.max(a) .min(a)

.ptp(a)

.median(a)

.argmin(a)

.argmax(a)

.unravel_index(index,shape)

作者:Mark

日期:2019/02/11 周一

A * B + C使用np.einsum

A * B + C使用np.einsum

如何解决A * B + C使用np.einsum?

我正在尝试使用 np.einsum 进行此非常简单的操作,但是我仍然很难理解如何使用它。

我有以下3个数组:

A = np.zeros((8,8))
B = np.zeros((64))
C = np.zeros((64,8,8))

首先,我首先将A * B“按通道”相乘(这意味着A与B中的每个元素相乘,所以结果将是(64,8,8)),然后我将这个结果与C相加。如何使用 np.einsum 执行此操作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

CuPy.einsum 慢?

CuPy.einsum 慢?

如何解决CuPy.einsum 慢?

我最近开始使用 CuPy。在我的应用程序中,函数 einsum 似乎没有一致的执行速度。在下面的第一个示例中,它最多比 tensordot 函数慢 5 倍(例如,对于 M = 128 和 2048)。在下面的第二个示例中,它比 dot 慢,但与 tensordot 一样快。我在使用 einsum 时是否犯了错误?

我的代码:

  1. import numpy as np
  2. import cupy as cp
  3. import timeit
  4. import tabulate
  5. nrepeats = 1000
  6. alpha_max= 11
  7. cp.random.seed(123)
  8. Ts = []
  9. Ms = 2**(1+np.arange(3,alpha_max))
  10. chi = cp.array([[0.,2.5,5.5],[2.5,0.,2.5],[5.5,0. ]])
  11. # 1st test
  12. for M in Ms:
  13. #print(M)
  14. shape = [3,M,M]
  15. ndim = len(shape)
  16. phi = cp.random.rand(*shape)
  17. t_1 = timeit.timeit(lambda: cp.einsum(''mn,n...->m...'',chi,phi),number=nrepeats) / float(nrepeats)
  18. t_2 = timeit.timeit(lambda: cp.einsum(''mn,number=nrepeats) / float(nrepeats)
  19. t_3 = timeit.timeit(lambda: cp.tensordot(chi,phi,axes=([1],[0])),number=nrepeats) / float(nrepeats)
  20. Ts.append([t_1,t_2,t_3])
  21. data = np.array(Ts)
  22. data = np.concatenate([Ms.reshape(-1,1),data],axis=1)
  23. print("1st test")
  24. print(tabulate.tabulate(data,tablefmt=''simple'',headers=[''M''] + ["t_{:d}".format(i) for i in range(1,data.shape[1])]))
  25. print("")
  26. # 2nd test
  27. Ts = []
  28. for M in Ms:
  29. #print(M)
  30. phi = cp.random.rand(M,M)
  31. mat = cp.random.rand(M,M)
  32. t_1 = timeit.timeit(lambda: cp.einsum(''mn,mat,number=nrepeats) / float(nrepeats)
  33. t_2 = timeit.timeit(lambda: cp.dot(mat,number=nrepeats) / float(nrepeats)
  34. t_3 = timeit.timeit(lambda: cp.tensordot(mat,axis=1)
  35. print("2nd test")
  36. print(tabulate.tabulate(data,data.shape[1])]))

我的结果:

  1. 1st test
  2. M t_1 t_2 t_3
  3. ---- ----------- ----------- -----------
  4. 16 0.000625728 0.000117246 2.18285e-05
  5. 32 0.000116557 0.000116172 2.16212e-05
  6. 64 0.000116819 0.000117002 2.15155e-05
  7. 128 0.000116461 0.000116047 2.16749e-05
  8. 256 0.000159753 0.000240077 7.99196e-05
  9. 512 0.00063619 0.00093989 0.000312955
  10. 1024 0.0028338 0.00372209 0.00106168
  11. 2048 0.0128821 0.0149504 0.00289213
  12. 2nd test
  13. M t_1 t_2 t_3
  14. ---- ----------- ----------- -----------
  15. 16 0.000252584 9.88275e-06 1.89785e-05
  16. 32 0.000111875 1.03006e-05 2.8993e-05
  17. 64 0.000117031 1.05121e-05 6.57232e-05
  18. 128 0.000165988 3.82686e-05 7.81205e-05
  19. 256 0.000161549 0.000117307 0.000154361
  20. 512 0.000745595 0.000655062 0.000870415
  21. 1024 0.00495882 0.00228163 0.00665659
  22. 2048 0.0411153 0.017304 0.0508659

我的系统:

  • 在基于 nvidia/cuda:11.0-runtime 的 docker 容器中运行。
  • GPU。 GeForce RTX 2080 8Gb

今天的关于使用 Numpy einsum使用 numpy 的什么函数可以求解矩阵的迹的分享已经结束,谢谢您的关注,如果想了解更多关于"import numpy as np" ImportError: No module named numpy、3.7Python 数据处理篇之 Numpy 系列 (七)---Numpy 的统计函数、A * B + C使用np.einsum、CuPy.einsum 慢?的相关知识,请在本站进行查询。

本文标签: