Q: How can I train the model using my GPU?
A: To train the model on a single GPU, do the following:
using Lux, LuxCUDA
prob = Sophon.discretize(...) |> gpu_device()Q: How can I monitor the loss for each loss function?
A: Data points are stored in prob.p. Call Sophon.residual_function_x with the corresponding arguments to obtain the residual of each data point:
residual = Sophon.residual_function_1(prob.p[1], res.u)If you want to monitor the loss during training, create a callback function like the following:
function callback(p, _)
loss_1 = sum(abs2, Sophon.residual_function_1(prob.p[1], p))
loss_2 = sum(abs2, Sophon.residual_function_1(prob.p[2], p))
println("loss: $loss_1, loss_2")
return false
endFinally, pass the callback function to Optimization.solve to monitor the loss as the training progresses.
Q: How can I inspect the generated symbolic loss function?
A: Simply replace Sophon.discretize by Sophon.symbolic_discretize.