Traceback (most recent call last): File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/jupyter_cache/executors/utils.py", line 51, in single_nb_execution executenb( File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/client.py", line 1204, in execute return NotebookClient(nb=nb, resources=resources, km=km, **kwargs).execute() File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/util.py", line 84, in wrapped return just_run(coro(*args, **kwargs)) File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/util.py", line 62, in just_run return loop.run_until_complete(coro) File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete return future.result() File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/client.py", line 663, in async_execute await self.async_execute_cell( File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/client.py", line 965, in async_execute_cell await self._check_raise_for_error(cell, cell_index, exec_reply) File "/Users/mhjensen/miniforge3/envs/myenv/lib/python3.9/site-packages/nbclient/client.py", line 862, in _check_raise_for_error raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content) nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: ------------------ # to categorical turns our integer vector into a onehot representation from sklearn.metrics import accuracy_score # one-hot in numpy def to_categorical_numpy(integer_vector): n_inputs = len(integer_vector) n_categories = np.max(integer_vector) + 1 onehot_vector = np.zeros((n_inputs, n_categories)) onehot_vector[range(n_inputs), integer_vector] = 1 return onehot_vector #Y_train_onehot, Y_test_onehot = to_categorical(Y_train), to_categorical(Y_test) Y_train_onehot, Y_test_onehot = to_categorical_numpy(Y_train), to_categorical_numpy(Y_test) def feed_forward_train(X): # weighted sum of inputs to the hidden layer z_h = np.matmul(X, hidden_weights) + hidden_bias # activation in the hidden layer a_h = sigmoid(z_h) # weighted sum of inputs to the output layer z_o = np.matmul(a_h, output_weights) + output_bias # softmax output # axis 0 holds each input and axis 1 the probabilities of each category exp_term = np.exp(z_o) probabilities = exp_term / np.sum(exp_term, axis=1, keepdims=True) # for backpropagation need activations in hidden and output layers return a_h, probabilities def backpropagation(X, Y): a_h, probabilities = feed_forward_train(X) # error in the output layer error_output = probabilities - Y # error in the hidden layer error_hidden = np.matmul(error_output, output_weights.T) * a_h * (1 - a_h) # gradients for the output layer output_weights_gradient = np.matmul(a_h.T, error_output) output_bias_gradient = np.sum(error_output, axis=0) # gradient for the hidden layer hidden_weights_gradient = np.matmul(X.T, error_hidden) hidden_bias_gradient = np.sum(error_hidden, axis=0) return output_weights_gradient, output_bias_gradient, hidden_weights_gradient, hidden_bias_gradient print("Old accuracy on training data: " + str(accuracy_score(predict(X_train), Y_train))) eta = 0.01 lmbd = 0.01 for i in range(1000): # calculate gradients dWo, dBo, dWh, dBh = backpropagation(X_train, Y_train_onehot) # regularization term gradients dWo += lmbd * output_weights dWh += lmbd * hidden_weights # update weights and biases output_weights -= eta * dWo output_bias -= eta * dBo hidden_weights -= eta * dWh hidden_bias -= eta * dBh print("New accuracy on training data: " + str(accuracy_score(predict(X_train), Y_train))) ------------------ --------------------------------------------------------------------------- RuntimeWarning Traceback (most recent call last) Input In [26], in ()  53 lmbd = 0.01  54 for i in range(1000):  55 # calculate gradients ---> 56 dWo, dBo, dWh, dBh = backpropagation(X_train, Y_train_onehot)  58 # regularization term gradients  59 dWo += lmbd * output_weights Input In [26], in backpropagation(X, Y)  32 def backpropagation(X, Y): ---> 33 a_h, probabilities = feed_forward_train(X)  35 # error in the output layer  36 error_output = probabilities - Y Input In [26], in feed_forward_train(X)  18 z_h = np.matmul(X, hidden_weights) + hidden_bias  19 # activation in the hidden layer ---> 20 a_h = sigmoid(z_h)  22 # weighted sum of inputs to the output layer  23 z_o = np.matmul(a_h, output_weights) + output_bias Input In [25], in sigmoid(x)  3 def sigmoid(x): ----> 4 return 1/(1 + np.exp(-x)) RuntimeWarning: overflow encountered in exp RuntimeWarning: overflow encountered in exp