知识补充:
binary_cross_entropy_with_logits():
二元交叉熵(Binary cross entropy)是二分类中常用的损失函数,它可以衡量两个概率分布的距离,二元交叉熵越小,分布越相似,其公式如下:
本章节中,我们首先定义了:
x = ops.ones(5, mindspore.float32) # input tensor
y = ops.zeros(3, mindspore.float32) # expected output
w = Parameter(Tensor(np.random.randn(5, 3), mindspore.float32), name='w') # weight
b = Parameter(Tensor(np.random.randn(3,), mindspore.float32), name='b') # bias
grad()
mindspore.grad()函数,自动求导:
grad()两个参数:
fn : 待求导的函数。
grad_position : 指定求导输入位置的索引。
如图示:
(2,3)位置对应w,b。
Stop Gradient
ops.stop_gradient()函数可以阶段一个参数,防止其对导数有影响,如图示:
此时,z对function的求导是无影响的。
Auxiliary data
Auxiliary data意为辅助数据,是函数除第一个输出项外的其他输出。通常我们会将函数的loss设置为函数的第一个输出,其他的输出即为辅助数据。
grad 和 value_and_grad 提供 has_aux 参数,当其设置为 True 时,可以自动实现前文手动添加 stop_gradient的功能,满足返回辅助数据的同时不影响梯度计算的效果。
如图示:
可以代替stop_gradient()功能,让代码更整洁。