python - 从 scipy 导入 softmax 并在从 sklearn 导入后使用它时出现问题

标签 python scikit-learn scipy conda softmax

我已经使用 conda 安装了 scipy。

当我尝试从 scipy 导入 softmax 时,出现错误:

from scipy.special import softmax
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-34-35eed14e1f88> in <module>
----> 1 from scipy.special import softmax

ImportError: cannot import name 'softmax' from 'scipy.special' (C:\Users\Alienware\Anaconda3\envs\tf2\lib\site-packages\scipy\special\__init__.py)

另一方面,我可以从 sklearn 导入 softmax,但当我尝试使用它时却遇到异常:

from sklearn.utils.extmath import softmax
X = np.array([[2, 3], [4,5]])
softmax(X)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-35-781ae2561cff> in <module>
      1 X = np.array([[2, 3], [4,5]])
----> 2 softmax(X)

~\Anaconda3\envs\tf2\lib\site-packages\sklearn\utils\extmath.py in softmax(X, copy)
    597     max_prob = np.max(X, axis=1).reshape((-1, 1))
    598     X -= max_prob
--> 599     np.exp(X, X)
    600     sum_prob = np.sum(X, axis=1).reshape((-1, 1))
    601     X /= sum_prob

TypeError: ufunc 'exp' output (typecode 'd') could not be coerced to provided output parameter (typecode 'l') according to the casting rule ''same_kind''

最佳答案

您的问题的第一部分可能已由评论回答,并归结为您使用的 SciPy 版本不包含 softmax。对于第二部分,错误消息表明无法将 double 转换为长整型数;您可以通过在输入中仅使用 double 来解决此问题:

In [13]: softmax(X.astype(np.double))                                                                    
Out[13]: 
array([[0.26894142, 0.73105858],
       [0.26894142, 0.73105858]])

the documentation 中也可以明显看出 softmax 不适用于整数。是 by design :

Parameters

X : array-like of floats, shape (M, N) Argument to the logistic function

关于python - 从 scipy 导入 softmax 并在从 sklearn 导入后使用它时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006937/

相关文章:

python - 如何使用sklearn从RFE中获取系数?

python - 如何从 Graphlab 迁移到 pandas

python - 使用 scipy.signal 在 Python 中进行卷积和反卷积

python - 为什么 scipy stats 描述的没有中位数?

python - py4j.protocol.Py4JError : An error occurred while calling None. 无。痕迹:

python - 使用 Django 1.5 的 Twitter Bootstrap

python - 没有模块名称 'sklearn.forest.ensemble'

python - 是否有更好的函数来查找公共(public)节点列表上的边?

python - 获取 bash 变量内容的函数

python - Pandas 将数据帧与包含日期时间的系列进行比较