Có lẽ có điều gì đó sai trái với các giá trị đầu vào cho X và/hoặc T. Các chức năng từ các câu hỏi làm việc ok:
import numpy as np
from math import e
def sigmoid(X, T):
return 1.0/(1.0 + np.exp(-1.0 * np.dot(X, T)))
X = np.array([[1, 2, 3], [5, 0, 0]])
T = np.array([[1, 2], [1, 1], [4, 4]])
print X.dot(T)
print
# Just to see if values are ok
print [1./(1. + e ** el) for el in [-5, -10, -15, -16]]
print
print sigmoid(X, T)
Kết quả:
[[15 16]
[ 5 10]]
[0.9933071490757153, 0.9999546021312976, 0.999999694097773, 0.9999998874648379]
[[ 0.99999969 0.99999989]
[ 0.99330715 0.9999546 ]]
Có lẽ đó là dtype của đầu vào của bạn mảng. Thay đổi X:
X = np.array([[1, 2, 3], [5, 0, 0]], dtype=object)
Cung cấp:
Traceback (most recent call last):
File "/[...]/stackoverflow_sigmoid.py", line 24, in <module>
print sigmoid(X, T)
File "/[...]/stackoverflow_sigmoid.py", line 14, in sigmoid
return 1.0/(1.0 + np.exp(-1.0 * np.dot(X, T)))
AttributeError: exp
Có vẻ như bạn đã gán lại 'np' cho giá trị float. –
Liệu 'X' hoặc' T' có xảy ra ngẫu nhiên khi được tạo bằng một kiểu dtype của 'đối tượng' thay vì' float64' không? – user2357112
Không, được chỉ định lại không xảy ra. type (X) là ndarray numpy, type (X [0] [0]) là float –