我有一个基于NumPy的神经网络,我正在尝试移植到CuPy。我的职能如下:
import numpy as np
def tensor_diag(x): return np.apply_along_axis(np.diag, -1, x)
# Usage: (x is a matrix, i.e. a 2-tensor)
def sigmoid_prime(x): return tensor_diag(sigmoid(x) * (1 - sigmoid(x)))
这可以使用NumPy实现,但CuPy没有类似的功能(截至2020年5月8日不支持)。我怎样才能模仿丘比特的这种行为呢
np.diag
接受一个1d数组,并返回一个在对角线上有值的2d数组apply_along_axis
只需在除最后一个维度之外的所有维度上迭代,并将最后一个数组一次传递给diag
:我可以通过以下方式进行相同的映射:
检查
apply
结果:或者对于
apply
的更直接副本,使用np.ndindex
生成所有i,j
元组对,以迭代arr
的前两个维度:相关问题 更多 >
编程相关推荐