zl程序教程

您现在的位置是:首页 >  其它

当前栏目

不同维度矩阵乘法的试验

不同 矩阵 乘法 维度 试验
2023-09-14 09:05:38 时间

🍿*★,°*:.☆欢迎您/$:*.°★* 🍿


 

     目录             


        背景

        正文

        总结


背景描述

在针对不用反向传播参数直接采取多段线性方程求解问题上会遇到输出和输入维度问题,所以想使用一种方式能将同的维度矩阵转为相同的矩阵

正文


下面的例子展示了 如何从一个维度将矩阵 扩充为二维度 的

通过矩阵乘法 的基本累加性   假设[1,2]  扩为  [0,1,0,2]  加和后 值不变

这种扩充最好是2的倍数 ,按照 取十位各位 来扩充的  将其扩为矩阵的是后  要按照前n项和的比例

扩充这样加起来 依然 相同   要知道前者扩充和后者不通 后者是 将一个数扩充为n个数,不是多个数扩充为2n个 [[0,0.1,0,0.2][0,0.2,0,0.4][0,0.3,0,0.6][0,0.4,0,0.8]]

 


# -*- coding: utf-8 -*-
import numpy as np
def up_aix(x,y,flag):
    if len(x.shape) < len(y.shape):
        x, y = y, x
    daix = x.shape[0] // y.shape[0]
    if daix == 2:
        y_z = y // 1
        y_0 = y % 1
        # 交叉在一起
        new_y = np.vstack([y_z, y_0]).transpose([1, 0]).reshape(-1)
        # 采样比例矩阵
        new_o = (np.ones([new_y.size, 1]) + np.arange(new_y.size)).T / ((1 + new_y.size) * new_y.size / 2)
        new_o = new_y * new_o
        if flag:
            x /= (new_o+0.000000000000000001)
            return x

        else:
            x *= new_o
            return x



def down_aix(x,y):
    return

def get_a_b(x1,x2,y1,y2):
    # 升维度还是降维度取决 输入和输出的维度大小 输出维度大 调用升为函数
    a=up_aix(y1-y2,x1 - x2,True)
    b=y1-up_aix(a,x1,False)
    return a,b
wav1=np.random.random([128])
wav2=np.random.random([128])
image1=np.random.random([256,256])
image2=np.random.random([256,256])

if __name__ == '__main__':
    a,b=get_a_b(wav1,wav2,image1,image2)

    wav=np.random.random([128])
    image=up_aix(a,wav,False)+b
    print()


总结

        这样智能计算单独的一个组合起来也能多段,后期再研究多维度一起计算


  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由东方佑原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨