-1

在某些机器学习框架中,该train函数实际上可能不会自己进行训练,而只是设置模式(即只是确保模型等已准备好进行训练)。trainFlux 中的函数是这种情况,还是该train!()函数实际上进行了培训?

4

1 回答 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 回答