| | try: |
| | from . import components as n |
| | from . import ai |
| | from . import scheduling as S |
| | except: |
| | import components as n |
| | import scheduling as S |
| | import ai |
| |
|
| | |
| |
|
| | def FFNN(c, **kargs): |
| | return n.FFNN([100, 100, 100, 100, 100,c], last_lin = True, last_zono = True, **kargs) |
| |
|
| | def ConvSmall(c, **kargs): |
| | return n.LeNet([ (16,4,4,2), (32,4,4,2) ], [100,c], last_lin = True, last_zono = True, **kargs) |
| |
|
| | def ConvMed(c, **kargs): |
| | return n.LeNet([ (16,4,4,2), (32,4,4,2) ], [100,c], padding = 1, last_lin = True, last_zono = True, **kargs) |
| |
|
| | def ConvBig(c, **kargs): |
| | return n.LeNet([ (32,3,3,1), (32,4,4,2) , (64,3,3,1), (64,4,4,2)], [512, 512,c], padding = 1, last_lin = True, last_zono = True, **kargs) |
| |
|
| | def ConvLargeIBP(c, **kargs): |
| | return n.LeNet([ (64, 3, 3, 1), (64,3,3,1), (128,3,3,2), (128,3,3,1), (128,3,3,1)], [200,c], padding=1, ibp_init = True, bias = True, last_lin = True, last_zono = True, **kargs) |
| |
|
| | def ResNetWong(c, **kargs): |
| | return n.Seq(n.Conv(16, 3, padding=1, bias=False), n.WideBlock(16), n.WideBlock(16), n.WideBlock(32, True), n.WideBlock(64, True), n.FFNN([1000, c], ibp_init = True, bias=True, last_lin=True, last_zono = True, **kargs)) |
| |
|
| | def TruncatedVGG(c, **kargs): |
| | return n.LeNet([ (64, 3, 3, 1), (64,3,3,1), (128,3,3,2), (128,3,3,1)], [512,c], padding=1, ibp_init = True, bias = True, last_lin = True, last_zono = True, **kargs) |
| |
|
| |
|
| | |
| |
|
| | def ResNetTiny(c, **kargs): |
| | def wb(c, bias = True, **kargs): |
| | return n.WideBlock(c, False, bias=bias, ibp_init=True, batch_norm = False, **kargs) |
| | return n.Seq(n.Conv(16, 3, padding=1, bias=True, ibp_init = True), |
| | wb(16), |
| | wb(32), |
| | wb(32), |
| | wb(32), |
| | wb(32), |
| | n.FFNN([500, c], bias=True, last_lin=True, ibp_init = True, last_zono = True, **kargs)) |
| |
|
| | def ResNetTiny_FewCombo(c, **kargs): |
| | def wb(c, bias = True, **kargs): |
| | return n.WideBlock(c, False, bias=bias, ibp_init=True, batch_norm = False, **kargs) |
| | dl = n.DeepLoss |
| | cmk = n.CorrMaxK |
| | cm2d = n.CorrMaxPool2D |
| | cm3d = n.CorrMaxPool3D |
| | dec = lambda x: n.DecorrMin(x, num_to_keep = True) |
| | return n.Seq(cmk(32), |
| | n.Conv(16, 3, padding=1, bias=True, ibp_init = True), dec(8), |
| | wb(16), dec(4), |
| | wb(32), n.Concretize(), |
| | wb(32), |
| | wb(32), |
| | wb(32), cmk(10), |
| | n.FFNN([500, c], bias=True, last_lin=True, ibp_init = True, last_zono = True, **kargs)) |
| |
|
| |
|
| | def ResNetTiny_ManyFixed(c, **kargs): |
| | def wb(c, bias = True, **kargs): |
| | return n.WideBlock(c, False, bias=bias, ibp_init=True, batch_norm = False, **kargs) |
| | cmk = n.CorrFix |
| | dec = lambda x: n.DecorrMin(x, num_to_keep = True) |
| | return n.Seq(n.CorrMaxK(32), |
| | n.Conv(16, 3, padding=1, bias=True, ibp_init = True), cmk(16), dec(16), |
| | wb(16), cmk(8), dec(8), |
| | wb(32), cmk(8), dec(8), |
| | wb(32), cmk(4), dec(4), |
| | wb(32), n.Concretize(), |
| | wb(32), |
| | n.FFNN([500, c], bias=True, last_lin=True, ibp_init = True, last_zono = True, **kargs)) |
| |
|
| | def SkipNet18(c, **kargs): |
| | return n.Seq(n.ResNet([2,2,2,2], bias = True, ibp_init = True, skip_net = True), n.FFNN([512, 512, c], bias=True, last_lin=True, last_zono = True, ibp_init = True, **kargs)) |
| |
|
| | def SkipNet18_Combo(c, **kargs): |
| | dl = n.DeepLoss |
| | cmk = n.CorrFix |
| | dec = lambda x: n.DecorrMin(x, num_to_keep = True) |
| | return n.Seq(n.ResNet([2,2,2,2], extra = [ (cmk(20),2),(dec(10),2) |
| | ,(cmk(10),3),(dec(5),3),(dl(S.Until(90, S.Lin(0, 0.2, 50, 40), 0)), 3) |
| | ,(cmk(5),4),(dec(2),4)], bias = True, ibp_init=True, skip_net = True), n.FFNN([512, 512, c], bias=True, last_lin=True, last_zono = True, ibp_init=True, **kargs)) |
| |
|
| | def ResNet18(c, **kargs): |
| | return n.Seq(n.ResNet([2,2,2,2], bias = True, ibp_init = True), n.FFNN([512, 512, c], bias=True, last_lin=True, last_zono = True, ibp_init = True, **kargs)) |
| |
|
| |
|
| | def ResNetLarge_LargeCombo(c, **kargs): |
| | def wb(c, bias = True, **kargs): |
| | return n.WideBlock(c, False, bias=bias, ibp_init=True, batch_norm = False, **kargs) |
| | dl = n.DeepLoss |
| | cmk = n.CorrMaxK |
| | cm2d = n.CorrMaxPool2D |
| | cm3d = n.CorrMaxPool3D |
| | dec = lambda x: n.DecorrMin(x, num_to_keep = True) |
| | return n.Seq(n.Conv(16, 3, padding=1, bias=True, ibp_init = True), cmk(4), |
| | wb(16), cmk(4), dec(4), |
| | wb(32), cmk(4), dec(4), |
| | wb(32), dl(S.Until(1, 0, S.Lin(0.5, 0, 50, 3))), |
| | wb(32), cmk(4), dec(4), |
| | wb(64), cmk(4), dec(2), |
| | wb(64), dl(S.Until(24, S.Lin(0, 0.1, 20, 4), S.Lin(0.1, 0, 50))), |
| | wb(64), |
| | n.FFNN([1000, c], bias=True, last_lin=True, ibp_init = True, **kargs)) |
| |
|
| |
|
| |
|
| | def ResNet34(c, **kargs): |
| | return n.Seq(n.ResNet([3,4,6,3], bias = True, ibp_init = True), n.FFNN([512, 512, c], bias=True, last_lin=True, last_zono = True, ibp_init = True, **kargs)) |
| |
|
| |
|
| | def DenseNet100(c, **kwargs): |
| | return n.DenseNet(growthRate=12, depth=100, reduction=0.5, |
| | bottleneck=True, num_classes = c) |
| |
|