(*Spin-up/spin-downmeasurementprobabilitiesonY-rotatedqubit*)Pu[θ_]:=(Cos[θ/2])^2;Pd[θ_]:=1-Pu[θ]
(*Discretizerotationvalues*)theta=Table[θ,{θ,π/100,π,π/100}]
(*One-hotvectorsfromdiscretizedthetavalues*)numBins=Length[theta];binToOneHot[bins_List,totalBins_Integer]:=Table[If[i==#,1,0],{i,1,totalBins}]&/@binsbins=Range[numBins];oneHotEncoded=binToOneHot[bins,Length[theta]];
(*Evaluatemeasurementprobabilitiesforeachthetavalue*)pr=Table[List[N[FullSimplify[Re[Pu[θ]]]],N[FullSimplify[Re[Pd[θ]]]]],{θ,π/100,π,π/100}]
(*GeneratetrainingmeasurementoutcomesforeachSubscript[θ,j](withrandomnumbergenerator)-1representsspin-upoutcomeand0spin-down*)(*NumberofmeasurementsforeachSubscript[θ,j]in(0,π)*)m=1000;meas=Table[{},{Length[pr]}];Table[Do[b=ConstantArray[0,1];Clear[r];updateTally[]:=Block[{r},r=RandomReal[];If[r<pr[[j]][[1]],b[[1]]+=1,If[pr[[j]][[1]]<=r<pr[[j]][[1]]+pr[[j]][[2]],b[[1]]+=0]]];Do[updateTally[],{1}];AppendTo[meas[[j]],b],{i,1,m}],{j,Length[pr]}];
(*GeneratedtrainingmeasurementoutcomesforeachSubscript[θ,j]*)meas=Partition[Flatten[meas],m];
(*Functiontocount1sand0s*)countOnesZeros[list_]:={Count[list,1],Count[list,0]}
(*Trainingdataforneuralnetwork*)(*SimulatedMeasurementsOutcomesforeachSubscript[θ,j]in(0,π)*)meas=Map[countOnesZeros,meas]trainingData=Rule@@@Transpose[{meas,oneHotEncoded}];
(*Neuralnetworkarchitecture*)net=NetChain[{LinearLayer[50],ElementwiseLayer["ReLU"],LinearLayer[100],SoftmaxLayer[]}];
(*Trainingthenetwork*)trainedNet=NetTrain[net,trainingData,MaxTrainingRounds->50000,LossFunction->CrossEntropyLossLayer["Probabilities"]]
(*Examplesetoftestmeasurements*)meas2={meas[[12]]}trainedNet/@meas2
(*Probabilityunitycheck*)Total[(trainedNet/@meas2)[[1]]]