using namespace TMVA::Experimental; TString pythonSrc = "\ import torch\n\ import torch.nn as nn\n\ \n\ model = nn.Sequential(\n\ nn.Linear(32,16),\n\ nn.ReLU(),\n\ nn.Linear(16,8),\n\ nn.ReLU()\n\ )\n\ \n\ criterion = nn.MSELoss()\n\ optimizer = torch.optim.SGD(model.parameters(),lr=0.01)\n\ \n\ x=torch.randn(2,32)\n\ y=torch.randn(2,8)\n\ \n\ for i in range(500):\n\ y_pred = model(x)\n\ loss = criterion(y_pred,y)\n\ optimizer.zero_grad()\n\ loss.backward()\n\ optimizer.step()\n\ \n\ model.eval()\n\ m = torch.jit.script(model)\n\ torch.jit.save(m,'PyTorchModel.pt')\n"; TMVA::PyMethodBase::PyInitialize(); TMacro m; m.AddLine(pythonSrc); m.SaveSource("make_pytorch_model.py"); gSystem->Exec(TMVA::Python_Executable() + " make_pytorch_model.py"); std::vector inputTensorShapeSequential{2,32}; std::vector> inputShapesSequential{inputTensorShapeSequential}; SOFIE::RModel model = SOFIE::PyTorch::Parse("PyTorchModel.pt",inputShapesSequential); model.Generate(); model.OutputGenerated("PyTorchModel.hxx"); std::cout<<"\n\n"; model.PrintRequiredInputTensors(); std::cout<<"\n\n"; model.PrintInitializedTensors(); std::cout<<"\n\n"; model.PrintIntermediateTensors(); std::cout<<"\n\nTensor \"0weight\" already exist: "< tensorShape = model.GetTensorShape("0weight"); std::cout<<"Shape of tensor \"0weight\": "; for(auto& it:tensorShape){ std::cout<