シグモイド関数scipy.optimize.check_grad
の実装の勾配をチェックするために使用したい。ここに私のPython関数があります:
def sigmoid(x, gradient=False):
y = 1 / (1 + numpy.exp(-x))
return numpy.multiply(y, 1 - y) if gradient else y
引数と への呼び出しは次のcheck_grad
とおりです。
x0 = numpy.random.uniform(-30, 30, (4, 5))
func = sigmoid
grad = lambda x: sigmoid(x, gradient=True)
error = scipy.optimize.check_grad(func, grad, x0)
以下のエラーが表示されます。形状の不一致は操作を指しますxk+d
。何がこれを引き起こしているのでしょうか?
ファイル "scipy\optimize\optimize.py"、597 行目、approx_fprime
grad[k] = (f(*((xk+d,)+args)) - f0) / d[k]
ValueError: オペランドを指定できませんでした形状と一緒にブロードキャスト (4,5) (4)