Tensorflow 中的 Sigmoid 运算实现
Sigmoid operation implementation in Tensorflow
出于学习目的,我有一个任务是在 tensorflow 中进行线性和 sigmoid 运算。
我设法做了线性运算:
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
但我被 sigmoid 操作困住了:
对吗?
def sigmoid_op_forward(X):
return 1 / (1 + np.exp(-X))
而且我很难理解 sigmoid 梯度
def sigmoid_op_backward(op, grads):
???
有人可以帮忙吗?
试试这个:
def sigmoid_op_backward(op, grads):
sigmoid = op.outputs[0]
return sigmoid * (1 - sigmoid) * grads
出于学习目的,我有一个任务是在 tensorflow 中进行线性和 sigmoid 运算。 我设法做了线性运算:
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
但我被 sigmoid 操作困住了:
对吗?
def sigmoid_op_forward(X):
return 1 / (1 + np.exp(-X))
而且我很难理解 sigmoid 梯度
def sigmoid_op_backward(op, grads):
???
有人可以帮忙吗?
试试这个:
def sigmoid_op_backward(op, grads):
sigmoid = op.outputs[0]
return sigmoid * (1 - sigmoid) * grads