如何在Python中广播列表?
How to broadcast a list in 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。我不知道为什么。
你可以试试这些:
假设 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]
我认为您应该手动执行此操作并创建一个具有正确维度的新数组。 Python 的座右铭毕竟是明确的比含蓄的要好。 https://www.python.org/dev/peps/pep-0020/
Numpy 使用 C 后端并且有很多技巧来优化表达式,因此您可以忽略很多技术细节。
同样,为不同类型的数据重用变量名是令人困惑和不好的做法。
我需要将 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。我不知道为什么。
你可以试试这些:
假设 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]
我认为您应该手动执行此操作并创建一个具有正确维度的新数组。 Python 的座右铭毕竟是明确的比含蓄的要好。 https://www.python.org/dev/peps/pep-0020/ Numpy 使用 C 后端并且有很多技巧来优化表达式,因此您可以忽略很多技术细节。 同样,为不同类型的数据重用变量名是令人困惑和不好的做法。