Manually construct a net and initialize it with random parameters:

net=NetInitialize@NetChain[{
LinearLayer[10],BatchNormalizationLayer[],ElementwiseLayer[Ramp],
LinearLayer[10],BatchNormalizationLayer[],ElementwiseLayer[Ramp],
LinearLayer[1]},
"Input"->"Scalar","Output"->"Scalar"]

Evaluate it on a set of values:

net[{1,2,3}]

x=Range[-5,5,.01];
f := x |-> .3 x^2 + 2 x - 4
y = f[x];

Train the net for a few rounds checking in real time how it is fitting the model:

trainedNet = NetTrain[net, <|"Input" -> x, "Output" -> y|>,
  MaxTrainingRounds -> 300,
  TrainingProgressReporting ->{Function[
Plot[{f[x],#Net[x]}, {x, -5, 5},PlotLegends -> {HoldForm[f[x]],HoldForm[net[x]]}]], "Interval" -> 1}];

The net result is now close to the symbolic computation:

trainedNet[{1, 2, 3}]

f[{1, 2, 3}]