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

Продукт Кронекера в Python и Matlab

Я пытался воспроизвести результат в Python из MATLAB. Тем не менее, я не могу понять это правильно. Это правильный код MATLAB:

nx = 5;
ny = 7;

x = linspace(0, 1, nx); dx = x(2) - x(1);
y = linspace(0, 1, ny); dy = y(2) - y(1);

onex = ones(nx, 1);
oney = ones(ny, 1);

Dx = spdiags([onex -2*onex onex], [-1 0 1], nx, nx);
Dy = spdiags([oney -2*oney oney], [-1 0 1], ny, ny);

Ix = eye(nx); Iy = eye(ny);
L = kron(Iy, Dx);

size(L) % 35   35

Теперь это код Python:

nx = 5
ny = 7
x = linspace(0, 1, nx); dx = x[1] - x[0]
y = linspace(0, 1, ny); dy = y[1] - y[0]

onex = ones(nx)
oney = ones(ny)
Dx = sparse.dia_matrix( ([onex, -2*onex, onex], [-1,0,1] ), shape=(nx,nx))
Dy = sparse.dia_matrix( ([oney, -2*oney, oney], [-1,0,1] ), shape=(ny,ny))

Ix = eye(nx)
Iy = eye(ny)

L = kron(Iy, Dx)

L.shape # (7, 7)

Насколько я смог убедиться, все верно до определения L. Согласно MATLAB kron(Iy, Dx) (который должен быть продуктом Кронекера) должен создавать матрицу 35X35, но Python считает, что это должна быть матрица 7X7. В более простых расчетах оба дают правильный ответ:

Питон:

kron(array(([1,2],[2,3])), [1,2])

array([[1, 2, 2, 4],
       [2, 4, 3, 6]])

МАТЛАБ

kron([1 2; 2 3], [1 2]) 

ans = 1   2   2   4
      2   4   3   6

Почему я получаю разные результаты?

Спасибо!

11.06.2013

  • Дикое предположение: что лучше, если вы используете Dx.todense() или Dx.toarray() (и то же самое для Dy?) 11.06.2013
  • Абсолютно верно. Несколько минут назад я пытался построить матрицу, которую использовал без scipy.sparse. Знаете ли вы обходной путь при использовании разреженных матриц? 11.06.2013

Ответы:


1

Используйте sparse.kron для произведения Кронекера разреженных матриц. .

numpy.kron не обрабатывает разреженные матрицы. При задании разреженных матриц он может не генерировать ошибку, но возвращаемое значение будет неверным.

11.06.2013
Новые материалы

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

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

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

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

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

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

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