在某些机器学习框架中,该train
函数实际上可能不会自己进行训练,而只是设置模式(即只是确保模型等已准备好进行训练)。train
Flux 中的函数是这种情况,还是该train!()
函数实际上进行了培训?
1 回答
0
根据Flux.jl docs,该train!()
函数确实进行了实际训练。函数签名如下所示:train!(loss, params, data, opt; cb)
其中:
对于 data 中的每个数据点 d,通过反向传播计算相对于 params 的损失梯度并调用优化器 opt。如果 d 是 loss 的参数元组,则调用 loss(d...),否则调用 loss(d)。使用关键字参数 cb 给出回调。例如,这将每 10 秒打印一次“training”(使用 Flux.throttle): train!(loss, params, data, opt, cb = throttle(() -> println("training"), 10)) 回调可以调用 Flux.stop 中断训练循环。多个优化器和回调可以作为数组传递给 opt 和 cb。
另一个例子:@epochs 2 Flux.train!(loss, ps, dataset, opt)
我们进行 2 个训练 epoch。您可以在Flux 迁移学习教程中找到更多信息。
于 2021-06-27T14:50:07.323 回答