AB矩阵秩1乘法,列乘以行

devtools/2024/11/18 11:10:47/

1. AB矩阵相乘

在这里插入图片描述

2. 代码测试

python">#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :ABTest.py
# @Time      :2024/11/17 8:37
# @Author    :Jason Zhang
import numpy as np
from abc import ABCMeta, abstractmethodnp.set_printoptions(suppress=True, precision=3)
np.random.seed(1213)class ABMultipy(metaclass=ABCMeta):@abstractmethoddef execute(self, in_a, in_b):pass@abstractmethoddef result(self):passclass DoProduct(ABMultipy):def __init__(self, in_a, in_b):self.in_a = in_aself.in_b = in_bdef execute(self, in_a, in_b):my_result = in_a @ in_breturn my_resultdef result(self):get_result = self.execute(self.in_a, self.in_b)#   print(f"result=\n{get_result}")return get_resultclass ColumnRowProduct(ABMultipy):def __init__(self, in_a, in_b):self.in_a = in_aself.in_b = in_bdef execute(self, in_a, in_b):a_r, a_c = np.shape(self.in_a)b_r, b_c = np.shape(self.in_b)result1 = np.zeros((a_r, b_c))if a_c == b_r:for i in range(a_c):result1 += np.outer(self.in_a[:, i], self.in_b[i, :])return result1def result(self):get_result1 = self.execute(self.in_a, self.in_b)#   print(f"result=\n{get_result1}")return get_result1class CheckResult(object):def __init__(self):self.step = 5self.shape_abc = np.random.choice(20, (3, self.step), replace=False)def execute(self):# print(self.shape_abc)for i in range(self.step):a_row, a_column, b_column = self.shape_abc[:, i]b_row = a_columnmatrix_a = np.random.randint(1, 20, (a_row, a_column))matrix_b = np.random.randint(1, 20, (b_row, b_column))#  print(f"*" * 50)#  print(f"a_row={a_row}")#  print(f"a_column={a_column}")#  print(f"b_column={b_column}")#  print(f"*" * 50)my_strategy_do_product = DoProduct(matrix_a, matrix_b)result1 = my_strategy_do_product.result()my_strategy_column = ColumnRowProduct(matrix_a, matrix_b)result2 = my_strategy_column.result()check_result = np.allclose(result1, result2)print(f"*" * 50)print(f"matrix_a=\n{matrix_a}")print(f"matrix_b=\n{matrix_b}")#    print(f"result1=\n{result1}")#    print(f"result2=\n{result2}")print(f"result1 is {check_result} same with result2")if __name__ == "__main__":run_code = 0my_test = CheckResult()my_test.execute()
  • 运行结果:
python">**************************************************
matrix_a=
[[15 15 14 13 19 10 12  2 11 11  4  9][13 10 19  3 18 13  7 11  8 13  7  7][13  2 18 17  2 14 16 11  6 18  2 12][ 5 18 18  8 12 14 14  7  9  9 15  7][18  5 12  7 11  4  6  2 18  8 12  3][ 6  7 13 11  1  6 18 18 17  9 13  7][19  3 13  1 11 17 14  5  9 16 18 16][12 18 14 16  8  8 10 15 18 11  1 13][10  7 12  3  1  6  2 11  9  9 19  4][18 19 16 15 13  9  1  5 10  6 14  1][15 17 16  2  5  1 18 15 13 16  2 16][11  8 18 14  7 12 11 12 17 12 16 19][ 4 13  3  1  1  4 15 12 13 11  1 17][12 18  5  4 10  2  8 18 10 16 12  6][ 3  2 19  3  7 17  8  3 11 17 14 10][ 6 18 18 11 12  7  9  9 14  8  2  1][10  2  6  5  1  6 10 15  6  7 16 15][ 7 14  5  8  4 10  5 11  7 15 15 19][18  7 19 10 13 13  2  7  5 12 13 17]]
matrix_b=
[[ 7 14 14 13  2  5][16  2 18 19 15 10][13 13  5  8 14 19][19  1  7  3  4  9][16  2  3  5 13  6][ 7  7  1  2 19 10][ 7  9  6  8 17  5][17  4  5  7 10  9][ 1 13 16 11  8  6][19 18 16  1  3 18][16 16 19 11 17 11][10  4 16 17 13  7]]
result1 is True same with result2
**************************************************
matrix_a=
[[19 15  5  3  8  4 10  3 14  6 11  3  4][16  3  6  1 17  8 10  4  3 17  8  9  7][ 1  5 17 13  8 18 11 15  7 14 12 17 12][18  5  1  6 13 17 18  9  1 12 18  1  1][12  9 18 16  2  8  3 13  2  2  1 13  4][19  5  8 19 15 19 15  4 16 16 12  6 19][ 2  1 14  3  7 14  4 17  7 12  8 16  8][ 2 18 14 18 11 10 17 19 10  3 13  3 14][13 17 17 12  8  9  1  7 13  8 19 14  4][ 7  8 11 17 11  5 15  6 19 12 18  4  9][ 7  9  4 11 18  2 16  5 10 18  2 10 14][14  2 18 15 13 12 13 15 11 19  8  1  6][15  9  2 11  7 10  5  2  9 16  2 19 18][18  4  4  9  5 10 19 17  8  7 13  2  6][11  9 16 13 11 11  4  5 16  1 12 10 12][17  3  8 13 18  3 15 12  3  5 11 16 15][ 4  6  2 17  4 16 19 10 13 15 17 13 19]]
matrix_b=
[[ 8  8 13  9  8  4  4  9 15 17 10  2 19 14][ 1  2  2  5 13  8 16 10  7  2 19 18 15 16][15 13  2 18  2 12  5 19 17  2 11 10  8 16][ 3  4 11  5 16 19  2  2 18 12 11 12 12 11][18 16 15 15  3 11  1 12 10  1 16  6  8 19][10  2 12  2  6 16  4  5  7  6  7 16 12 19][10 10 15  4 15 17 11 18  8  9 14  7  1 11][ 3  8  8 18  9 10 17  2  8 17 11  5  3  1][15 17 19  4  5  6  4 17  6  6 14  7 11  8][ 3 19  2 17  5  7 15  7 14 12  6 19  7  6][19 16  3 17  3  2 13 16 11  5 19 17 17 12][ 9 19  8  6  6  9  9  4  1 13  8 15 19  5][12  9  9  8  7 16 10  1 16  8 19 18  9 18]]
result1 is True same with result2
**************************************************
matrix_a=
[[18 10 13 16 12 16  1 19  4 18  6 13 18 19  6  6 16 11][15 10 13 15 18  8 13 13 15  5 15 11 11 13  7 17  2 14]]
matrix_b=
[]
result1 is True same with result2
**************************************************
matrix_a=
[[14 16  4 16  6 14  7  5  5][18  5 13  4 12 16 10  7  9][ 6 16  2  3 14 12  8 11 18][ 7  5 13  5 12  7 15  8  2][10 17  3  4 16 17  9  5 17][10  6 15 16  2 11 11  8  3][ 8 15  8 17 11  9  4  7  2]]
matrix_b=
[[10  8  8  4  4  5 11 11][ 1 17  4 10 16 10 19 11][19 10 14  4  3 16 19  7][11 16  8  1 13 13 10 12][ 6 12 11 15 16 12  2  5][ 6  6 15  7  8 14 10  6][ 5 17 12  4  7 17  3 10][ 4  2 11 13  3 13 16 18][ 7  3 16 17 11  6 15 18]]
result1 is True same with result2
**************************************************
matrix_a=
[[16  9 16]]
matrix_b=
[[ 4 14 11  5][ 9  7 16  7][ 4 11  9 19]]
result1 is True same with result2

http://www.ppmy.cn/devtools/134940.html

相关文章

A3超级计算机虚拟机,为大型语言模型LLM和AIGC提供强大算力支持

热门大语言模型项目地址:www.suanjiayun.com/mirrorDetails?id66ac7d478099315577961758 近几个月来,我们目睹了大型语言模型(LLMs)和生成式人工智能强势闯入我们的视野,显然,这些模型在训练和运行时需要…

YashanDB 23.2.3安装过程,并使用DBeaver进行连接

Yashandb安装 环境准备 虚拟机环境说明 虚拟机系统:centos 7.9,2c,8g,100GB;内存至少4G,否则无法安装; 安装用户:yashan 软件目录:/app/install 安装目录:…

树状数组+概率论,ABC380G - Another Shuffle Window

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 G - Another Shuffle Window 二、解题报告 1、思路分析 不难用树状数组计…

38.判断素数之和 C语言

输入一个数字,判断这个数字可以由哪些素数相加得到 比如24可以是5和19相加得到,而5和19都是素数 这个代码可以找出所有素数组合,如果没有这样的组合输出无 代码比较简单,但是能解决问题,利用了电脑计算速度快的特点…

Scala学习记录,case class,迭代器

case class case class创建的对象的属性是不可改的 创建对象,可以不用写new 自动重写:toString, equals, hashCode, copy 自动重写方法:toString,equals,hashCode,copy 小习一下 1.case class 的定义语法是什么 基本形式:case …

neo4j desktop基本入门

下载安装不在赘述,本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了,可以通过neo4j web(默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser)重置密码 AL…

同端互斥登录技术选型之Sa-Token(上篇)

文章目录 同端登录冲突检测需求分析方案设计1、账号冲突检测策略2、实现思路 Sa-Token 入门入门 DemoSa-Token 实用功能Sa-Token 原理 同端登录冲突检测 需求分析 在多用户系统中,如电商平台、企业办公系统或社交应用,用户的账户安全和系统的正常使用至…

卡西莫多的手信2022-2024.11.15

卡西莫多的手信2022-2024.11.15 卡西莫多的手信,上次整理还是9月份,这两个月又增加了一些,增补进集子: 通过网盘分享的文件:卡西莫多的手信2022-2024.11.16-A5.pdf 链接: 百度网盘 请输入提取码 提取码: 9jaw