В чем разница между этими двумя строками кода? Массивы ML - PullRequest
2 голосов
/ 11 января 2020

Итак, я начал изучать 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, но по некоторым причинам они не равны. Я не понимаю почему, поэтому я был бы очень признателен, если бы кто-нибудь объяснил мне, почему есть разница.

1 Ответ

2 голосов
/ 11 января 2020
>>> A = np.array([[1,2,3],[4,5,6]])
>>> A.reshape(3,2)
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> A.transpose()
array([[1, 4],
       [2, 5],
       [3, 6]])

Из этого короткого примера вы можете видеть, что A.transpose ()! = A.reshape (3,2).

Представьте пустую матрицу с размерами 3х2. A.reshape (3,2) будет читать значения формы A (матрица 2x3) слева направо, начиная с верхнего ряда и сохраняя их в пустой матрице. Создание этих матриц имеет разные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...