Daw-Ins 2022-08-07 03:47 采纳率: 100%
浏览 74
已结题

关于#tensorflow#的问题:学习率等都一样的情况下,模型到达一定的深度时,而自定义学习loss完全不变(语言-python)

在优化器,学习率等都一样的情况下,模型到达一定的深度时,fit正常使用,而自定义学习loss完全不变,一点都不学习。在模型比较小的时候就挺正常的。这是为什么呢? fit有什么隐藏的自动调节手段吗

  • 写回答

4条回答 默认 最新

  • herosunly 优质创作者: python技术领域 2022-08-07 06:57
    关注

    看了下代码,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))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日