Nano Hash - криптовалюты, майнинг, программирование

NumPy - точечный продукт по 3-му измерению без копирования

Я пытаюсь векторизовать функцию, которая принимает на вход трехкомпонентный вектор "x" и "матрицу" 3x3 и создает скаляр

def myfunc(x, matrix):
    return np.dot(x, np.dot(matrix, x))

Однако это нужно вызывать «n» раз, и каждый раз вектор x имеет разные компоненты. Я хотел бы изменить эту функцию так, чтобы она принимала в качестве входных данных несколько массивов 3xn (столбцами которых являются векторы x) и создавала вектор, компоненты которого являются скалярами, вычисляемыми на каждой итерации.

Я могу записать суммирование Эйнштейна, которое выполняет эту работу, но для этого требуется, чтобы я построил стопку 3x3xn из «копий» оригинала 3x3. Я обеспокоен тем, что это сведет на нет любой прирост производительности, который я получу от попытки сделать это. Есть ли способ вычислить нужный мне вектор без создания копий 3x3?


Ответы:


1

Пусть x будет массивом 3xN, а y будет массивом 3x3. Ты ищешь

z = numpy.einsum('ji,jk,ki->i', x, y, x)

Вы также могли бы построить этот массив 3x3xN, о котором вы говорили, как представление y, чтобы избежать копирования, но это не обязательно.

12.07.2016
  • Большое спасибо за быстрое и простое решение! Теперь пришло время подумать о том, как это работает. 13.07.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..