几个问题请教一下

来源: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回答

正十七

2020-05-04

  1. 剩下的68个中取,不过我们一般不这样理解,而是把100个shuffle一下,然后一个batch一个batch的取。

  2. 其实两种方法都是TF框架帮我们算梯度,只不过我们课上所讲的“自己去算梯度”需要我们显式的把梯度算出来,然后调用optimizer.apply_gradients去把梯度更新加到变量上去。这种方法是一种更加底层的实现,fit函数可以看作是这个的封装。底层的实现会带来更大的灵活程度,比如你可以给梯度设置上下限,比如,某些变量在某些时候不需要梯度等等。当然,如果模型使用不是那么深入的话,fit函数就足够了。

  3. 是。

  4. reduce_mean是求均值。但在这里应该没有意义,因为mean_squared_error返回的已经是均值了。我在git上的代码中已经把这个去掉了。

0
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程