几个问题请教一下
来源:3-12 tf.GradientTape与tf.keras结合使用
manbaneverout
2020-05-03
老师您好,有几个问题请教一下
1.使用随机批量梯度下降法过程中,假设我有100个样本,batch_size为32,那么每次epoch会进行100 // 32 = 3次step,第一次随机取出batch_size(假设为32)个样本进行训练,第二是从剩下的68个样本中随机取32个样本还是从100个样本中随机取32个?
2.我还是不大明白为什么要自己去计算梯度,使用TF默认的计算方法不够吗?
3.apply_gradients()的作用就是根据learning_rate和gradient去更新坐标的值吗?
4.reduce_mean在这里起的作用是什么?
麻烦老师了,感谢
写回答
1回答
-
剩下的68个中取,不过我们一般不这样理解,而是把100个shuffle一下,然后一个batch一个batch的取。
其实两种方法都是TF框架帮我们算梯度,只不过我们课上所讲的“自己去算梯度”需要我们显式的把梯度算出来,然后调用optimizer.apply_gradients去把梯度更新加到变量上去。这种方法是一种更加底层的实现,fit函数可以看作是这个的封装。底层的实现会带来更大的灵活程度,比如你可以给梯度设置上下限,比如,某些变量在某些时候不需要梯度等等。当然,如果模型使用不是那么深入的话,fit函数就足够了。
是。
reduce_mean是求均值。但在这里应该没有意义,因为mean_squared_error返回的已经是均值了。我在git上的代码中已经把这个去掉了。
00
相似问题