нейронная сеть: изменение формы массива np - PullRequest
0 голосов
/ 27 октября 2019

Я следовал этому уроку нейронной сети: https://medium.com/analytics-vidhya/neural-networks-for-digits-recognition-e11d9dff00d5

В сети есть 1 скрытый слой с 25 нейронами. Я хотел попробовать поэкспериментировать с изменением различного количества нейронов в скрытом слое на 10. Я попытался изменить hidden_layer_size и формировать theta1 и theta2.

Изначально theta1 имел размер 25x401, я изменил10x401 theta2 имел размер 10x26, я изменил его на 10x11 маленькая диаграмма

Ошибка была: ValueError: cannot reshape array of size 3690 into shape (10,401)

Как мне изменить форму массива так, чтобысеть ведет себя правильно? (изменяемое число нейронов в скрытом слое)

Изменение формы кода использовалось в:

def nnCostFunc(nn_params, input_layer_size, hidden_layer_size, num_labels, X, y, lmbda):
theta1 = np.reshape(nn_params[:hidden_layer_size*(input_layer_size+1)],
                    (hidden_layer_size, input_layer_size+1), 'F')
theta2 = np.reshape(
    nn_params[hidden_layer_size*(input_layer_size+1):], (num_labels, hidden_layer_size+1), 'F')

m = len(y)
ones = np.ones((m, 1))
a1 = np.hstack((ones, X))
a2 = sigmoid(a1 @ theta1.T)
a2 = np.hstack((ones, a2))
h = sigmoid(a2 @ theta2.T)

y_d = pd.get_dummies(y.flatten())

temp1 = np.multiply(y_d, np.log(h))
temp2 = np.multiply(1-y_d, np.log(1-h))
temp3 = np.sum(temp1 + temp2)

sum1 = np.sum(np.sum(np.power(theta1[:, 1:], 2), axis=1))
sum2 = np.sum(np.sum(np.power(theta2[:, 1:], 2), axis=1))

return np.sum(temp3 / (-m)) + (sum1 + sum2) * lmbda / (2*m)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...