mirror of
https://github.com/StepanovPlaton/NeuralNetwork.git
synced 2026-04-04 04:40:40 +04:00
TensorInfo
This commit is contained in:
181
src/run.py
181
src/run.py
@@ -1,6 +1,181 @@
|
||||
from tensor.tensor import *
|
||||
|
||||
a = iMatrix([2, 3], 2)
|
||||
|
||||
a *= 3.0
|
||||
print(a)
|
||||
def test_matrix_operations():
|
||||
print("=" * 50)
|
||||
print("ТЕСТИРОВАНИЕ БИБЛИОТЕКИ MATRIX")
|
||||
print("=" * 50)
|
||||
|
||||
# Тест создания матриц
|
||||
print("\n1. СОЗДАНИЕ МАТРИЦ:")
|
||||
print("-" * 30)
|
||||
|
||||
# Создание матрицы с заполнением одним значением
|
||||
m1 = Matrix([2, 3], 1.0)
|
||||
print(f"Matrix([2, 3], 1.0) = {m1}")
|
||||
|
||||
# Создание матрицы с разными значениями
|
||||
m2 = Matrix([2, 3], 2.0, 3.0)
|
||||
print(f"Matrix([2, 3], 2.0, 3.0) = {m2}")
|
||||
|
||||
# Создание матрицы для умножения
|
||||
m3 = Matrix([3, 2], 2.0)
|
||||
print(f"Matrix([3, 2], 2.0) = {m3}")
|
||||
|
||||
# Тест получения свойств
|
||||
print("\n2. СВОЙСТВА МАТРИЦ:")
|
||||
print("-" * 30)
|
||||
print(f"m1.get_shape() = {m1.get_shape()}")
|
||||
print(f"m1.get_axes() = {m1.get_axes()}")
|
||||
print(f"m1.get_size() = {m1.get_size()}")
|
||||
|
||||
# Тест доступа к элементам
|
||||
print("\n3. ДОСТУП К ЭЛЕМЕНТАМ:")
|
||||
print("-" * 30)
|
||||
print(f"m1[0] = {m1[0]}")
|
||||
print(f"m1[0, 1] = {m1[0, 1]}")
|
||||
|
||||
# Установка значений
|
||||
m1[0, 1] = 5.0
|
||||
print(f"После m1[0, 1] = 5.0: {m1}")
|
||||
|
||||
# Тест арифметических операций
|
||||
print("\n4. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ:")
|
||||
print("-" * 30)
|
||||
|
||||
# Сложение
|
||||
m_add = m1 + m2
|
||||
print(f"m1 + m2 = {m_add}")
|
||||
|
||||
# Вычитание
|
||||
m_sub = m1 - m2
|
||||
print(f"m1 - m2 = {m_sub}")
|
||||
|
||||
# Умножение на скаляр
|
||||
m_mul_scalar = m1 * 2.0
|
||||
print(f"m1 * 2.0 = {m_mul_scalar}")
|
||||
|
||||
# Поэлементное умножение
|
||||
m_mul_element = m1 * m2
|
||||
print(f"m1 * m2 (поэлементно) = {m_mul_element}")
|
||||
|
||||
# Деление на скаляр
|
||||
m_div = m1 / 2.0
|
||||
print(f"m1 / 2.0 = {m_div}")
|
||||
|
||||
# Унарные операторы
|
||||
m_neg = -m1
|
||||
print(f"-m1 = {m_neg}")
|
||||
m_pos = +m1
|
||||
print(f"+m1 = {m_pos}")
|
||||
|
||||
# Тест матричного умножения
|
||||
print("\n5. МАТРИЧНОЕ УМНОЖЕНИЕ:")
|
||||
print("-" * 30)
|
||||
try:
|
||||
m_matmul = m1 @ m3
|
||||
print(f"m1 @ m3 = {m_matmul}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при матричном умножении: {e}")
|
||||
|
||||
# Тест транспонирования
|
||||
print("\n6. ТРАНСПОНИРОВАНИЕ:")
|
||||
print("-" * 30)
|
||||
m_transposed = m1.t()
|
||||
print(f"m1.t() = {m_transposed}")
|
||||
|
||||
try:
|
||||
m_transpose_method = m1.transpose(0, 1)
|
||||
print(f"m1.transpose(0, 1) = {m_transpose_method}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при transpose(0, 1): {e}")
|
||||
|
||||
try:
|
||||
m_transpose_list = m1.transpose([0, 1])
|
||||
print(f"m1.transpose([0, 1]) = {m_transpose_list}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при transpose([0, 1]): {e}")
|
||||
|
||||
# Тест операций на месте
|
||||
print("\n7. ОПЕРАЦИИ НА МЕСТЕ:")
|
||||
print("-" * 30)
|
||||
|
||||
m_test = Matrix([2, 2], 1.0)
|
||||
print(f"Исходная матрица: {m_test}")
|
||||
|
||||
m_test += 2.0
|
||||
print(f"После m_test += 2.0: {m_test}")
|
||||
|
||||
m_test -= 1.0
|
||||
print(f"После m_test -= 1.0: {m_test}")
|
||||
|
||||
m_test *= 3.0
|
||||
print(f"После m_test *= 3.0: {m_test}")
|
||||
|
||||
m_test /= 2.0
|
||||
print(f"После m_test /= 2.0: {m_test}")
|
||||
|
||||
# Тест с вашими матрицами из примера
|
||||
print("\n8. ТЕСТ С ВАШИМИ МАТРИЦАМИ:")
|
||||
print("-" * 30)
|
||||
|
||||
a = Matrix([2, 3], 2)
|
||||
b = Matrix([3, 2], 1)
|
||||
|
||||
print(f"a = {a}")
|
||||
print(f"b = {b}")
|
||||
|
||||
try:
|
||||
result = a @ b
|
||||
print(f"a @ b = {result}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при a @ b: {e}")
|
||||
|
||||
# Тест обратных операций
|
||||
print("\n9. ОБРАТНЫЕ ОПЕРАЦИИ:")
|
||||
print("-" * 30)
|
||||
|
||||
m_base = Matrix([2, 2], 3.0)
|
||||
print(f"Исходная матрица: {m_base}")
|
||||
|
||||
# Правое сложение
|
||||
m_radd = 2.0 + m_base
|
||||
print(f"2.0 + m_base = {m_radd}")
|
||||
|
||||
# Правое умножение
|
||||
m_rmul = 2.0 * m_base
|
||||
print(f"2.0 * m_base = {m_rmul}")
|
||||
|
||||
# Правое вычитание
|
||||
m_rsub = 10.0 - m_base
|
||||
print(f"10.0 - m_base = {m_rsub}")
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
print("ТЕСТИРОВАНИЕ ЗАВЕРШЕНО")
|
||||
print("=" * 50)
|
||||
|
||||
|
||||
def test_edge_cases():
|
||||
print("\n\n10. ТЕСТ ГРАНИЧНЫХ СЛУЧАЕВ:")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
# Попытка создания с разными параметрами
|
||||
m_empty = Matrix([0, 0])
|
||||
print(f"Matrix([0, 0]) = {m_empty}")
|
||||
except Exception as e:
|
||||
print(f"Ошибка при создании Matrix([0, 0]): {e}")
|
||||
|
||||
try:
|
||||
# Попытка доступа к несуществующему элементу
|
||||
m_test = Matrix([2, 2], 1.0)
|
||||
print(f"Попытка доступа к m_test[5, 5]: ", end="")
|
||||
value = m_test[5, 5]
|
||||
print(value)
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_matrix_operations()
|
||||
test_edge_cases()
|
||||
|
||||
Reference in New Issue
Block a user