Here is my code:
def sigmoid(X, T): return (1.0 / (1.0 + np.exp(-1.0*np.dot(X, T))))
And this line gives me error
"AttributeError: 'float' object has no attribute 'exp'". X, t are Numpy ndarray.
Probably there's something wrong with the input values for X and/or T. The function from the question works 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)) # Just to see if values are ok print([1. / (1. + e ** el) for el in [-5, -10, -15, -16]]) print() print(sigmoid(X, T))
Result:
[[15 16] [ 5 10]] [0.9933071490757153, 0.9999546021312976, 0.999999694097773, 0.9999998874648379] [[ 0.99999969 0.99999989] [ 0.99330715 0.9999546 ]]
Probably it's the dtype of your input arrays. Changing X to:
X = np.array([[1, 2, 3], [5, 0, 0]], dtype=object)
Gives:
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
You convert type np.dot(X, T)
to float32 like this:
z=np.array(np.dot(X, T),dtype=np.float32)
def sigmoid(X, T): return (1.0 / (1.0 + np.exp(-z)))
Hopefully it will finally work!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With