*★,°*:.☆欢迎您/$:*.°★* |
在针对不用反向传播参数直接采取多段线性方程求解问题上会遇到输出和输入维度问题,所以想使用一种方式能将同的维度矩阵转为相同的矩阵 |
下面的例子展示了 如何从一个维度将矩阵 扩充为二维度 的
通过矩阵乘法 的基本累加性 假设[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()
这样智能计算单独的一个组合起来也能多段,后期再研究多维度一起计算