在优化器,学习率等都一样的情况下,模型到达一定的深度时,fit正常使用,而自定义学习loss完全不变,一点都不学习。在模型比较小的时候就挺正常的。这是为什么呢? fit有什么隐藏的自动调节手段吗
4条回答 默认 最新
关注看了下代码,model.fit()是默认使用batch_size=32的小批量学习,而tf.GradientTape是默认使用所有训练集进行训练。而且model.fit()在每次迭代时会对数据进行打乱(shuffle)。batch_size代码你可以根据下面的源码稍微改一下:
for x_batch, y_batch in tf.data.Dataset.from_tensor_slices((X, y_true)).batch(32): with tf.GradientTape() as tape: y = model(x_batch, training=True) loss_value = loss_fun(y_batch, y) grads = tape.gradient(loss_value, model.trainable_variables) opt_g.apply_gradients(zip(grads, model.trainable_variables))本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录