Numpy AttributeError: el objeto ‘float’ no tiene atributo ‘exp’

Aquí está mi código:

def sigmoid(X, T): return (1.0 / (1.0 + np.exp(-1.0*np.dot(X, T)))) 

Y esta línea me da el error “AttributeError: el objeto ‘float’ no tiene ningún atributo ‘exp'”. X, t son numpray numpy.

Probablemente hay algo mal con los valores de entrada para X y / o T. La función de la pregunta funciona bien:

 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) 

Resultado:

 [[15 16] [ 5 10]] [0.9933071490757153, 0.9999546021312976, 0.999999694097773, 0.9999998874648379] [[ 0.99999969 0.99999989] [ 0.99330715 0.9999546 ]] 

Probablemente sea el dtype de tus matrices de entrada. Cambiando X a:

 X = np.array([[1, 2, 3], [5, 0, 0]], dtype=object) 

Da:

 Traceback (most recent call last): File "/[...]/stackoverflow_sigmoid.py", line 24, in  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 

Convierte el tipo np.dot(X, T) a float32 de esta manera:

z=np.array(np.dot(X, T),dtype=np.float32)

 def sigmoid(X, T): return (1.0 / (1.0 + np.exp(-z))) 

Esperemos que finalmente funcione!