In[]:=
deploy
Wed 27 Jul 2022 16:39:57
In[]:=
stepLen[data_]:=Total[
2
Norm[#]
&/@data];​​​​GramSchmidt[w_?MatrixQ]:=Module[{v=ConstantArray[0,Length[w]]},​​Table[v[[n]]=w[[n]]-Sum[(v[[i]].w[[n]]/v[[i]].v[[i]])*v[[i]],{i,1,n-1}],{n,1,Length[w]}];​​v];​​​​d=100;​​dsize=2000;​​dist=MultinormalDistribution[DiagonalMatrix[Table[1,{i,1,d}]]];​​​​data=RandomVariate[dist,dsize];​​data=Normalize/@data;​​getStepsGS[bsize_]:=Mean[stepLen@GramSchmidt@#&/@Partition[data,bsize]];​​DiscretePlot[getStepsGS[k],{k,1,d,1},PlotLabel->"Step length after orthog",AxesLabel->{"batch size","effective step"}]
Out[]=
In[]:=
norm2[mat_]:=With[{f=Flatten[mat]},Total[f*f]];​​​​​​x1={1,0};​​x2={1,1};​​{x1,x2}=Normalize/@{x1,x2};​​{y1,y2}=mgs[{x1,x2}];​​data1={x1,x2};​​data2={y1,y2};​​Show[Graphics[Arrow[{{0,0},#}]&/@data1],Axes->True,PlotLabel->StringForm["Before GS,total
2
length
=``",N@stepLen[data1]],AspectRatio->1,PlotRange->{{0,1},{0,1}}]​​​​Show[Graphics[Arrow[{{0,0},#}]&/@data2],Axes->True,PlotLabel->StringForm["After GS,total
2
length
=``",N@stepLen[data2]],AspectRatio->1,PlotRange->{{0,1},{0,1}}]​​
Out[]=
Out[]=