Using same net and similar data,but MSE is very different. originalData = Get["https://wolfr.am/lRWRvwBp"]; originalGenerator = <|"EmbeddingLayerInput" -> Rationalize@#[[All, 1]], "Input2" -> #[[All, 2 ;; 13]], "Output" -> #[[All, 14 ;;]]|> &@RandomSample[originalData, #BatchSize] &; originalGenerator[<|"BatchSize" -> 3|>] [![enter image description here][1]][1] net = NetGraph[{EmbeddingLayer[128, "Input" -> NetEncoder[{"Class", Range[0, Max@data[[All, 1]]]}]], CatenateLayer[], 512, Ramp, 43}, {NetPort["EmbeddingLayerInput"] -> 1 -> 2, NetPort["Input2"] -> 2 -> 3 -> 4 -> 5}, "Input2" -> 12] [![enter image description here][2]][2] NetTrain[net, originalGenerator, MeanSquaredLossLayer[], "LossEvolutionPlot", BatchSize -> 300, MaxTrainingRounds -> 200] [![enter image description here][3]][3] INPUTNOTE = Length[originalData]; testData = Transpose[{Join[List /@ originalData[[All, 1]], RandomReal[1, {INPUTNOTE, 12}], 2], RandomReal[1, {INPUTNOTE, 43}]}]; testGenerator = <|"EmbeddingLayerInput" -> Rationalize@#[[All, 1, 1]],"Input2" -> #[[All, 1, 2 ;;]], "Output" -> #[[All, 2]]|> &@RandomSample[testData, #BatchSize] &; testGenerator[<|"BatchSize" -> 3|>] [![enter image description here][4]][4] NetTrain[net, testGenerator, MeanSquaredLossLayer[], "LossEvolutionPlot", BatchSize -> 300, MaxTrainingRounds -> 200] [![enter image description here][5]][5] So why using similar data but different level of MES loss? [1]: https://i.sstatic.net/V9IHI.png [2]: https://i.sstatic.net/w6RoI.png [3]: https://i.sstatic.net/kZyYl.png [4]: https://i.sstatic.net/USaqG.png [5]: https://i.sstatic.net/cyRdc.png