I give you some hint,then you can prettify it.
data = Flatten@
Table[{x, y} -> x*y, {x, -1, 1, .005}, {y, -1, 1, .005}];
epochs = 2;
batchSize = 1024;
batchsPerEpochs = Floor[Length[data]/batchSize];
net = NetChain[{32, Tanh, 1}];
{trained, info} = {First@#, Rest@#} &@
NetTrain[net, data, Automatic(*loss function*),
{"TrainedNet", "LossEvolutionPlot", "LastRoundLoss",
"LastValidationLoss", "MeanBatchesPerSecond",
"MeanInputsPerSecond", "TotalTrainingTime"},
BatchSize -> batchSize,
MaxTrainingRounds -> Round[epochs*Length[data]*0.9/batchSize],
ValidationSet -> Scaled[0.1]];
Column[Join[{"BatchSize:" <> ToString@batchSize,
"rounds:" <> ToString@epochs,
Sequence @@
Thread[{"LossEvolutionPlot", "LastRoundLoss",
"LastValidationLoss", "MeanBatchesPerSecond",
"MeanInputsPerSecond", "TotalTrainingTime"} -> info]}]]
All of the properties list here
TrainingProgressReporting -> ((t = <|KeyValueMap[# -> #2 &]@#|>) &)
(this stores the data int
) and build a table yourself. (The explicit rebuilding is necessary to for the values of the association to evaluate) $\endgroup$Unprotect@PrintTemporary; Block[{PrintTemporary = Print}, trained = NetTrain[net, {1 -> 1.9, 2 -> 4.1, 3 -> 6.0, 4 -> 8.1}] ] Protect@PrintTemporary
$\endgroup$