Деление на ноль встречается в matmul на MacOS M4 с numpy v2.0.0Python

Программы на Python
Ответить
Anonymous
 Деление на ноль встречается в matmul на MacOS M4 с numpy v2.0.0

Сообщение Anonymous »

Я сталкиваюсь со странным RuntimeWarning: деление на ноль, обнаруженным в matmul при выполнении простого умножения матриц на моем новом компьютере Apple M4.
Самое странное заключается в том, что это предупреждение появляется именно тогда, когда размерность единичной матрицы равна n=15, но не возникает для n=14 или других меньших значений, которые я тестировал. Сам расчет выполнен правильно.
Среда
Аппаратное обеспечение: MacBook Pro (чип M4)
  • ОС: macOS Sonoma
  • Python: 3.12
  • Версия NumPy: 2.0.0 (или последняя версия, установленная через pip)
Минимальный воспроизводимый пример
Вот простой код, воспроизводящий проблему:

Код: Выделить всё

import numpy as np

print(f"NumPy version: {np.__version__}")

# This line produces the RuntimeWarning
print("Testing with n=15:")
try:
result_15 = np.identity(n=15) @ np.identity(n=15)
print(result_15)
except Exception as e:
print(e)

print("\n" + "="*30 + "\n")

# This line runs without any warning
print("Testing with n=14:")
try:
result_14 = np.identity(n=14) @ np.identity(n=14)
print(result_14)
except Exception as e:
print(e)
Выход:

Код: Выделить всё

(.venv) mursalatulpallob@Mac ml_codes % python del.py
NumPy version: 2.0.0
Testing with n=15:
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: divide by zero encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: overflow encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
/Users/mursalatulpallob/programming/research/ml_codes/del.py:8: RuntimeWarning: invalid value encountered in matmul
result_15 = np.identity(n=15) @ np.identity(n=15)
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]

==============================

Testing with n=14:
[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.  1.]]
Конфигурация BLAS numpy:

Код: Выделить всё

{
"Compilers": {
"c": {
"name": "clang",
"linker": "ld64",
"version": "15.0.0",
"commands": "cc"
},
"cython": {
"name": "cython",
"linker": "cython",
"version": "3.0.10",
"commands": "cython"
},
"c++": {
"name": "clang",
"linker": "ld64",
"version": "15.0.0",
"commands": "c++"
}
},
"Machine Information": {
"host": {
"cpu": "aarch64",
"family": "aarch64",
"endian": "little",
"system": "darwin"
},
"build": {
"cpu": "aarch64",
"family": "aarch64",
"endian": "little",
"system": "darwin"
}
},
"Build Dependencies": {
"blas": {
"name": "accelerate",
"found": true,
"version": "unknown",
"detection method": "system",
"include directory": "unknown",
"lib directory": "unknown",
"openblas configuration": "unknown",
"pc file directory": "unknown"
},
"lapack": {
"name": "accelerate",
"found": true,
"version": "unknown",
"detection method": "system",
"include directory": "unknown",
"lib directory": "unknown",
"openblas configuration": "unknown",
"pc file directory": "unknown"
}
},
"Python Information": {
"path": "/private/var/folders/dm/88b38gj92jj53dgxdsm12qf00000gn/T/build-env-j0ydyct6/bin/python",
"version": "3.9"
},
"SIMD Extensions": {
"baseline": [
"NEON",
"NEON_FP16",
"NEON_VFPV4",
"ASIMD"
],
"found": [
"ASIMDHP"
],
"not found": [
"ASIMDFHM"
]
}
}
Эта проблема не возникает в Windows или Linux. Есть ли способ исправить это, не понижая версию NumPy, поскольку для последних пакетов Python требуется актуальная версия?

Подробнее здесь: https://stackoverflow.com/questions/797 ... mpy-v2-0-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»