# scipy.optimize.minimize cost function of neural networks fails

I have written the cost function of a neural network for image classification problem. To optimize my cost function i have used scipy.optimize.minimize with solver ='TNC' though their isn't any run time error but after complication of optimization, result says success = 'false'

Here is my cost function

```
def costandGrad(nn_param,X,Y_matrix,lam,i,j):
Theta1,Theta2 = reshape(nn_param,i,j)
Theta1 = np.matrix(Theta1)
Theta2 = np.matrix(Theta2)
#part1 - IMPLEMENTING FEEDFORWARD PROPOGATION ALGORTHIM
a1 = X
Z2 = X*np.transpose(Theta1)
a2 = sigmoid(Z2)
a2 = np.hstack((np.ones([len(a2),1]),a2))
Z3 = a2*np.transpose(Theta2)
a3 = sigmoid(Z3)
Hyp = a3
#PART2 - IMPLEMENTING COST WITH REGULARISATION
first_term = np.trace((np.transpose(-Y_matrix))* (np.log(Hyp)));
second_term = np.trace(((1-(np.transpose(Y_matrix)))*(np.log(1-Hyp))));
JU = first_term + second_term
sq1 = (np.square(Theta1[:,1:]))
sq2 = (np.square(Theta2[:,1:]))
regularization = (lam/(2*m)) * (sum(np.transpose(sum(sq1))) + sum(np.transpose(sum(sq2))))
J = JU + regularization
#PART3 - BACKPROPOGATION ALGORTHIM
D3 = Hyp - Y_matrix
D2 = D3*Theta2[:,1:]
D2 = np.multiply(D2,sigmoidGrdadient(Z2))
Delta1 = np.transpose(D2)*X;
Delta2 = np.transpose(D3)*a2;
Theta1_Grad = 1/m*(Delta1)
Theta2_Grad = 1/m*Delta2
nn_parameters = np.concatenate((np.array(Theta1).ravel(), np.array(Theta2).ravel()))
return J,nn_parameters
```

here is the result

```
fim = sc.optimize.minimize(fun=costandGrad, x0=nn_params, args=(X_train, Y_matrix, 3,i,j), method='TNC', jac=True, options={'maxiter': 2000})
fun: matrix([[-227085.02475254]])
jac: array([ 0.08245473, -0.00159231, 0.47998975, ..., 1.12524447,
-1.30664152, 1.14908335])
message: 'Linear search failed'
nfev: 50
nit: 0
status: 4
success: False
x: array([ 0.08245473, -0.00159231, 0.47998975, ..., 1.12524447,
-1.30664152, 1.14908335])enter code here
```