在Python中创建一个矩阵数组(numpy)



我试图为神经网络创建一个未定义长度的矩阵数组,但是,当我将第二个矩阵附加到数组时,格式混乱。

def createRandomWeights(X):
initialW = generateWeights(X.shape[1], S[0]) # first weight matrix
w = np.array([initialW])              # array of weight matrices
for i in range(0, L - 1):
layerW = np.random.uniform(-1, 1, (S[i], S[i + 1]))
w = np.append(w, [layerW])
return w

generateWeights函数只创建一个NxM大小的np。-1到1之间的随机数矩阵。S是一个数字数组L是S

的长度的例子:

S = [2,3]
L = len(s)
X = [[1,1,1],[1,-1,1],[-1,1,1],[-1,-1,1]]

期望输出示例(随机数写成'rn'):

matrix1 = [[rn, rn],[rn, rn],[rn, rn]] # 3x2 matrix
matrix2 = [[rn, rn, rn],[rn, rn, rn]] # 2x3 matrix
output = [matrix1, matrix2] # 2 matrix elements array

实际产出:

output = [rn, rn, rn, rn, rn...] #12 times

问题是你在Python中使用np.append而不是append方法。

def createRandomWeights(X):
initialW = generateWeights(X.shape[1], S[0]) # first weight matrix
w = np.array([initialW])              # array of weight matrices
for i in range(0, L - 1):
layerW = np.random.uniform(-1, 1, (S[i], S[i + 1]))
w.append(layerW)
return w
上面的代码应该可以完成这项工作。如果你检查np.append上的文档,你会看到如果没有指定其他参数,它会将参数转换为1维数组。