Итак, я начал изучать ML, и мне нужно кодировать в Python. Я следую учебнику по обратному распространению. Итак, в нем передо мной стоит проблема превращения алгоритма в поддержку умножения матриц, чтобы он работал быстрее. Следующий код взят из функции, которая обновляет смещения и веса. Мне нужно было изменить его, чтобы вместо одновременного запуска каждой пары ввода-вывода я выполнял все матрицы входов и выходов. Мини-пакет представляет собой список из 10 элементов. Каждый элемент в списке состоит из двух кортежей, один кортеж является входом, матрица размером 784x1. Другой кортеж - это выход, матрица размером 10x1. Я попытался сгруппировать входные данные в массив 784x10x1, а затем преобразовать его в массив 784x10. Я сделал это двумя способами, как показано в следующем коде:
# for clearance - batch[0] is the first tuple in the element in mini_batch, which is, as recalled, the input array.
# mini_batch[0][0] is the input array of the first element in mini_batch, which is a 784x1 array as I mentioned earlier
inputs3 = np.array([batch[0] for batch in mini_batch]).reshape(len(mini_batch[0][0]), len(mini_batch))
inputs2 = np.array([batch[0].ravel() for batch in mini_batch]).transpose()
оба inputs3
и inputs2
являются массивами 784x10, но по некоторым причинам они не равны. Я не понимаю почему, поэтому я был бы очень признателен, если бы кто-нибудь объяснил мне, почему есть разница.