出于学习目的,我有一项任务是在张量流中进行线性和S形运算。
我设法做线性运算:

def linear_op_forward(X, W):
''' linear operation'''
return np.dot(X, W.T)

def linear_op_backward(op, grads):
    ''' Linear gradient realization '''
    X = op.inputs[0]
    W = op.inputs[1]
    dX = tf.multiply(grads, W)
    dW = tf.reduce_sum(tf.multiply(X, grads),
                       axis = 0,
                       keep_dims = True)
    return dX, dW


但是我一直坚持使用S形运算:

那是对的吗?

def sigmoid_op_forward(X):
    return 1 / (1 + np.exp(-X))


而且我很难理解S形梯度

def sigmoid_op_backward(op, grads):
    ???


有人可以帮忙吗?

最佳答案

尝试这个:

def sigmoid_op_backward(op, grads):
  sigmoid = op.outputs[0]
  return sigmoid * (1 - sigmoid) * grads

08-24 14:07