I'm new to Theano, just learning it. I have a ANN in python that I'm implementing in Theano as learning process. I'm using Spyder.
And Theano throws out an error: TypeError: Unknown parameter type: class 'numpy.ndarray'
I'm not sure where the error is. Is it in the cost function or in the gradient descent? And what is the typical reason for it?
Here is my code:
X = T.dmatrix()
y = T.dmatrix()X_input = np.genfromtxt('X.csv',delimiter=',') #5000x195
y_input = np.genfromtxt('y.csv',delimiter=',') #5000x75input_layer_size, hidden_layer_size_1, hidden_layer_size_2, y_size = 195, 15, 15, 75theta1 = theano.shared(np.array(np.random.rand(hidden_layer_size_1, (input_layer_size+1)), dtype=theano.config.floatX))
theta2 = theano.shared(np.array(np.random.rand(hidden_layer_size_2, (hidden_layer_size_1+1)), dtype=theano.config.floatX))
theta3 = theano.shared(np.array(np.random.rand(y_size, hidden_layer_size_2+1), dtype=theano.config.floatX))def computeCost(X, y, w1, w2, w3):m = X.shape[0]b = T.ones((m,1))a_1 = T.concatenate([b, X], axis=1)z_2 = T.dot(a_1, T.transpose(w1))a_2 = T.nnet.nnet.sigmoid(z_2)a_2 = T.concatenate([b, a_2], axis=1)z_3 = T.dot(a_2, T.transpose(w2))a_3 = T.nnet.nnet.sigmoid(z_3)a_3 = T.concatenate([b, a_3], axis=1)z_4 = T.dot(a_3, T.transpose(w3))h = T.nnet.nnet.sigmoid(z_4)cost = T.sum(-y * T.log(h) - (1-y) * T.log(1-h))/mreturn costfc = computeCost(X, y, theta1, theta2, theta3)def grad_desc(cost, theta):alpha = 0.1 #learning ratereturn theta - (alpha * T.grad(cost, wrt=theta))cost = theano.function(inputs=[X_input, y_input], outputs=fc, updates=[(theta1, grad_desc(fc, theta1)),(theta2, grad_desc(fc, theta2)),(theta3, grad_desc(fc, theta3))])
My last code generated this error:
Traceback (most recent call last):File "ipython-input-88-099323f95e73", line 1, in <module>
cost = theano.function(inputs=[X_input, y_input], outputs=fc, updates=[(theta1, grad_desc(fc, theta1)), (theta2, grad_desc(fc, theta2)), (theta3, grad_desc(fc, theta3))])File "C:\Program Files\Anaconda3\lib\site-packages\theano\compile\function.py", line 320, in function
output_keys=output_keys)File "C:\Program Files\Anaconda3\lib\site-packages\theano\compile\pfunc.py", line 390, in pfunc
for p in params]File "C:\Program Files\Anaconda3\lib\site-packages\theano\compile\pfunc.py", line 390, in <listcomp>
for p in params]File "C:\Program Files\Anaconda3\lib\site-packages\theano\compile\pfunc.py", line 489, in _pfunc_param_to_in
raise TypeError('Unknown parameter type: %s' % type(param))TypeError: Unknown parameter type: class 'numpy.ndarray'