In[]:=
xis=RandomReal[1,6]
Out[]=
{0.364096,0.769249,0.769639,0.759772,0.0844187,0.567809}
In[]:=
Sum[a[i]Abs[x-xis[[i]]]+b,{i,Length[xis]}]
Out[]=
6b+a[3]Abs[-0.769639+x]+a[2]Abs[-0.769249+x]+a[4]Abs[-0.759772+x]+a[6]Abs[-0.567809+x]+a[1]Abs[-0.364096+x]+a[5]Abs[-0.0844187+x]
Sin[Pix]
In[]:=
Sum[(Sum[a[i]Abs[xis[[j]]-xis[[i]]]+b,{i,Length[xis]}]-Sin[Pixis[[j]]])^2,{j,Length[xis]}]
Out[]=
2
(-0.977395+6b+0.203713a[1]+0.201439a[2]+0.201829a[3]+0.191963a[4]+0.48339a[5])
2
(-0.685069+6b+0.395675a[1]+0.00947662a[2]+0.0098667a[3]+0.675353a[5]+0.191963a[6])
2
(-0.663081+6b+0.405152a[1]+0.000390075a[3]+0.00947662a[4]+0.68483a[5]+0.201439a[6])
2
(-0.662163+6b+0.405542a[1]+0.000390075a[2]+0.0098667a[4]+0.68522a[5]+0.201829a[6])
2
(-0.910231+6b+0.405152a[2]+0.405542a[3]+0.395675a[4]+0.279678a[5]+0.203713a[6])
2
(-0.262111+6b+0.279678a[1]+0.68483a[2]+0.68522a[3]+0.675353a[4]+0.48339a[6])
In[]:=
NMinimize[%,Evaluate[Append[Array[a,6],b]]]
Out[]=
{-1.33227×,{a[1]-0.993842,a[2]-0.016315,a[3]2.55661,a[4]-0.398726,a[5]2.53885,a[6]-0.926261,b-0.0805958}}
-15
10
In[]:=
Sum[a[i]Abs[x-xis[[i]]]+b,{i,Length[xis]}]/.Last[%]
Out[]=
-0.483575+2.55661Abs[-0.769639+x]-0.016315Abs[-0.769249+x]-0.398726Abs[-0.759772+x]-0.926261Abs[-0.567809+x]-0.993842Abs[-0.364096+x]+2.53885Abs[-0.0844187+x]
In[]:=
Plot[%,{x,0,1}]
Out[]=
In[]:=
Sum[(Sum[a[i]xis[[j]]xis[[i]]+b,{i,Length[xis]}]-Sin[Pixis[[j]]])^2,{j,Length[xis]}]
Out[]=
2
(-0.262111+6b+0.0307366a[1]+0.064939a[2]+0.0649719a[3]+0.064139a[4]+0.00712653a[5]+0.0479337a[6])
2
(-0.910231+6b+0.132566a[1]+0.280081a[2]+0.280223a[3]+0.27663a[4]+0.0307366a[5]+0.206737a[6])
2
(-0.977395+6b+0.206737a[1]+0.436786a[2]+0.437008a[3]+0.431405a[4]+0.0479337a[5]+0.322407a[6])
2
(-0.685069+6b+0.27663a[1]+0.584453a[2]+0.58475a[3]+0.577253a[4]+0.064139a[5]+0.431405a[6])
2
(-0.663081+6b+0.280081a[1]+0.591743a[2]+0.592043a[3]+0.584453a[4]+0.064939a[5]+0.436786a[6])
2
(-0.662163+6b+0.280223a[1]+0.592043a[2]+0.592344a[3]+0.58475a[4]+0.0649719a[5]+0.437008a[6])
In[]:=
NMinimize[%,Evaluate[Append[Array[a,6],b]]]
Out[]=
{0.258009,{a[1]2.23484,a[2]1.74523,a[3]3.66899,a[4]-1.69586,a[5]-28.3727,a[6]-1.60773,b0.0802452}}
In[]:=
Sum[a[i]xxis[[i]]+b,{i,Length[xis]}]/.Last[%]
Out[]=
0.481471+0.383478x
In[]:=
Sum[(Sum[a[i](xis[[j]]xis[[i]])^2+b,{i,Length[xis]}]-Sin[Pixis[[j]]])^2,{j,Length[xis]}]
Out[]=
2
(-0.262111+6b+0.000944737a[1]+0.00421707a[2]+0.00422135a[3]+0.00411381a[4]+0.0000507874a[5]+0.00229764a[6])
2
(-0.910231+6b+0.0175738a[1]+0.0784452a[2]+0.0785247a[3]+0.0765243a[4]+0.000944737a[5]+0.0427403a[6])
2
(-0.977395+6b+0.0427403a[1]+0.190782a[2]+0.190976a[3]+0.186111a[4]+0.00229764a[5]+0.103946a[6])
2
(-0.685069+6b+0.0765243a[1]+0.341586a[2]+0.341932a[3]+0.333221a[4]+0.00411381a[5]+0.186111a[6])
2
(-0.663081+6b+0.0784452a[1]+0.35016a[2]+0.350515a[3]+0.341586a[4]+0.00421707a[5]+0.190782a[6])
2
(-0.662163+6b+0.0785247a[1]+0.350515a[2]+0.350871a[3]+0.341932a[4]+0.00422135a[5]+0.190976a[6])
In[]:=
NMinimize[%,Evaluate[Append[Array[a,6],b]]]
Out[]=
{0.298189,{a[1]2.09353,a[2]3.09555,a[3]-20.2712,a[4]4.17011,a[5]-240.967,a[6]29.2722,b0.101393}}
In[]:=
Sum[a[i](xxis[[i]])^2+b,{i,Length[xis]}]/.Last[%]
Out[]=
0.608358+0.229331
2
x
In[]:=
NetToExpression[net_]:=Module[{layersList,batchNormFunction,layerFunctions},layersList=Information[net,"LayersList"];batchNormFunction=Function[Block[{sd=Sqrt[#MovingVariance+#Epsilon]},(#2*#Scaling/sd)+(#Biases-(#Scaling*#MovingMean)/sd)]];layerFunctions=layersList/.{layer_LinearLayer:>(Normal@NetExtract[layer,"Weights"].#+Normal@NetExtract[layer,"Biases"]&),layer_ElementwiseLayer:>(ϕ/@#&),layer_BatchNormalizationLayer:>(batchNormFunction[<|"Scaling"->Normal@NetExtract[layer,"Scaling"],"Biases"->Normal@NetExtract[layer,"Biases"],"MovingMean"->Normal@NetExtract[layer,"MovingMean"],"MovingVariance"->Normal@NetExtract[layer,"MovingVariance"],"Epsilon"->Normal@NetExtract[layer,"Epsilon"]|>,#]&)};Fold[#2@#1&,{x},layerFunctions][[1]]];
In[]:=
nsmall=With[{size=3,act="SELU"},NetTrain[NetChain[{LinearLayer[size],BatchNormalizationLayer[],ElementwiseLayer[act],LinearLayer[size],ElementwiseLayer[act],LinearLayer[{}]},"Input"->"Real"],Table[x->Sin[x],{x,0,10,0.01}],RandomSeeding->6543]];
In[]:=
NumberForm[FullSimplify[NetToExpression[nsmall]],2]
Out[]//NumberForm=
0.28-0.3ϕ[0.51+0.47ϕ[2.1-0.63x]+0.22ϕ[2.3-0.44x]-0.6ϕ[-3.5+0.62x]]+1.2ϕ[0.41+0.5ϕ[2.1-0.63x]-0.17ϕ[2.3-0.44x]+0.32ϕ[-3.5+0.62x]]-1.8ϕ[-0.29-0.54ϕ[2.1-0.63x]+0.86ϕ[2.3-0.44x]+0.5ϕ[-3.5+0.62x]]
In[]:=
%/.ϕ->Ramp
Out[]=
0.275392-0.296115Ramp[0.511035+0.4742Ramp[2.07063-0.629712x]+0.222557Ramp[2.27835-0.442641x]-0.603324Ramp[-3.49625+0.615439x]]+1.23731Ramp[0.410873+0.504099Ramp[2.07063-0.629712x]-0.170811Ramp[2.27835-0.442641x]+0.316695Ramp[-3.49625+0.615439x]]-1.7916Ramp[-0.294367-0.538188Ramp[2.07063-0.629712x]+0.86174Ramp[2.27835-0.442641x]+0.502636Ramp[-3.49625+0.615439x]]
In[]:=
FullSimplify[%]
Out[]=
|
In[]:=
Plot[%,{x,0,2Pi}]
Out[]=
In[]:=
0.28-0.3ϕ[0.51+0.47ϕ[2.1-0.63x]+0.22ϕ[2.3-0.44x]-0.6ϕ[-3.5+0.62x]]+1.2ϕ[0.41+0.5ϕ[2.1-0.63x]-0.17ϕ[2.3-0.44x]+0.32ϕ[-3.5+0.62x]]-1.8ϕ[-0.29-0.54ϕ[2.1-0.63x]+0.86ϕ[2.3-0.44x]+0.5ϕ[-3.5+0.62x]]/.ϕ->(Piecewise[{{1.0507#,#>=0}},1.758099340847161`(Exp[#]-1)]&)
Out[]=
0.275392-0.296115
+1.23731
-1.7916
|
|
|
How similar is a transformer to e.g. ARIMA?
How similar is a transformer to e.g. ARIMA?
Can a transformer learn parenthesis matching
Can a transformer learn parenthesis matching