Для умножения двух матриц количество столбцов первой матрицы должно быть равно количеству строк второй матрицы.В вашем случае столбцы X
должны быть равны строкам self.weights
.Но количество столбцов X
равно 50, а число строк self.weights
равно 3.
При определении весов для вашей нейронной сети вы всегда должны учитывать каналы входов и выходов.
Если входы имеют каналы n, а выходы имеют каналы m, форма весов должна быть (n, m).
Исходя из того, как вы получили доступ к X (train_data[len(train_data) - 1][0]
), X представляет собой один образец формы (50,50).Если это правильно, то X должен быть преобразован в вектор перед подачей в нейронную сеть (при условии, что входной слой вашей сети полностью подключен к скрытому слою).То же самое касается Y.
X = X.reshape(1, -1) # X.shape == (1, 2500)
Y = Y.reshape(1, -1) # Y.shape == (1, 2)
Теперь форма веса должна быть (2500, 2)
self.weight = 2 * np.random.random((2500, 2)) - 1