Oto mój kod:Numpy AttributeError: „pływak” obiekt ma atrybut „exp”
def sigmoid(X, T): return (1.0/(1.0 + np.exp(-1.0*np.dot(X, T))))
I ta linia daje mi błąd „AttributeError:«pływak»obiekt ma atrybut«exp»”. X, t to Numpy ndarray.
Oto mój kod:Numpy AttributeError: „pływak” obiekt ma atrybut „exp”
def sigmoid(X, T): return (1.0/(1.0 + np.exp(-1.0*np.dot(X, T))))
I ta linia daje mi błąd „AttributeError:«pływak»obiekt ma atrybut«exp»”. X, t to Numpy ndarray.
Prawdopodobnie coś jest nie tak z wartościami wejściowymi dla X i/lub T. Funkcja od kwestii działa 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)
Wynik:
[[15 16]
[ 5 10]]
[0.9933071490757153, 0.9999546021312976, 0.999999694097773, 0.9999998874648379]
[[ 0.99999969 0.99999989]
[ 0.99330715 0.9999546 ]]
Prawdopodobnie jest to dtype swojego wejścia tablice. Zmiana X do:
X = np.array([[1, 2, 3], [5, 0, 0]], dtype=object)
Daje:
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
Tak, dziękuję. Nie wiedziałem o dtype i użyłem tylko typu (X). Zrobiłem X = X.astype (float) i działa. –
, więc operacje tablicowe takie jak mean() nie mogły być używane w tablicach z dype = object? Zastanawiam się dlaczego? – gcamargo
ten komunikat o błędzie jest bardzo mylący: problem polega na tym, że 'dtype' jest w rzeczywistości' numpy.object', ale wiadomość mówi, że 'numpy.float64' nie ma atrybutu' log10' lub jakiejkolwiek metody arytmetycznej – deeenes
przekonwertować typ np.dot(X, T)
do float32 tak:
z=np.array(np.dot(X, T),dtype=np.float32)
def sigmoid(X, T):
return (1.0/(1.0 + np.exp(-z)))
Miejmy nadzieję, że w końcu działa!
Wygląda na to, że ponownie przypisano 'np' do wartości zmiennoprzecinkowej. –
Czy "X" lub "T" przypadkowo zostałoby utworzone z typem 'object' zamiast' float64'? – user2357112
Nie, ponowne przydzielenie nie miało miejsca. typ (X) to numpy ndarray, typ (X [0] [0]) jest zmiennoprzecinkowy –