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