У меня есть массив с большим количеством, который я собираюсь провести линейную проекцию с использованием случайно генерируемых значений.Numpy: Уменьшение объема памяти для точечного продукта со случайными данными
>>> input_array.shape
(50, 200000)
>>> random_array = np.random.normal(size=(200000, 300))
>>> output_array = np.dot(input_array, random_array)
К сожалению, random_array
занимает много памяти, и моя машина начинает обменивать. Мне кажется, что мне действительно не нужно все сразу random_array
; в теории, я должен был бы лениво генерировать его во время вычисления точечного продукта ... но я не могу понять, как это сделать.
Как уменьшить объем памяти для расчета output_array
от input_array
?
Это упрощенный пример, или вы на самом деле усеивание в большой массив нормально распределенные случайных числа? Способ создания «random_array» может иметь значение. –
@ Давид Заславский не упрощенный пример - это именно то, что я хочу сделать. Метод, который допускает изменения в генерации 'random_array', является бонусом, но не обязательным. –
Имея игру с этим, я не уверен, что это возможно - 'np.dot' должен знать размеры всех своих входов (в виде 2D-точечного произведения == матричное умножение). В любом случае я не вижу (простой) способ использования генератора в 'np.dot'. – Yuushi