首页 > 解决方案 > 如何在 Python 中广播列表?

问题描述

我需要将 Python 中的列表广播到更大的值。我实际上正在研究一种不使用 Numpy 的反向传播算法。在我有限的开发环境中,我也无权访问它。

据我了解,当您对两个数组使用 Numpy.dot() 操作时,如果一个数组小于另一个数组,numpy 将广播一个数组,因此它们的大小相等。

   dW = np.dot(dZ, A_prev.T) / m 

当两者不可整除时,Numpy 如何处理广播数组?也就是当两个数组的模不等于0的时候?

就我而言,我有两个列表;len(dZ) 也等于 512,len(A_prev) 也等于 741。我应该如何处理广播 dZ 使其与 A_prev 的大小相同?

到目前为止我尝试过的是:

dZ = dZ * (len(dZ) + (len(A_prev) % len(dZ)))

然而,dZ 是一个巨大的数字,大约 16,000。我不确定为什么。

标签: pythonnumpybackpropagation

解决方案


你可以试试这些:

假设 dz 是一个 3 长度的数组:

dz = [4,2,8]

A_prev 是 11 项数组:

A_prev  = [0]*11

除了将 dz 广播到 A_prev 的长度之外,请执行以下操作:

dz = dz* (len(A_prev)//len(dz)) 
dz = dz + dz[:len(A_prev)-len(dz)] 

现在 dz 是一个 11 项数组:

[4, 2, 8, 4, 2, 8, 4, 2, 8, 4, 2]

推荐阅读