def __init__(self, n_out): super(GoogLeNet, self).__init__( conv1=L.Convolution2D(None, 64, 7, stride=1, pad=3), conv2_reduce=L.Convolution2D(None, 64, 1), conv2=L.Convolution2D(None, 192, 3, stride=1, pad=1), inc3a=L.Inception(None, 64, 96, 128, 16, 32, 32), inc3b=L.Inception(None, 128, 128, 192, 32, 96, 64), inc4a=L.Inception(None, 192, 96, 208, 16, 48, 64), inc4b=L.Inception(None, 160, 112, 224, 24, 64, 64), inc4c=L.Inception(None, 128, 128, 256, 24, 64, 64), inc4d=L.Inception(None, 112, 144, 288, 32, 64, 64), inc4e=L.Inception(None, 256, 160, 320, 32, 128, 128), inc5a=L.Inception(None, 256, 160, 320, 32, 128, 128), inc5b=L.Inception(None, 384, 192, 384, 48, 128, 128), loss3_fc=L.Linear(None, n_out), loss1_conv=L.Convolution2D(None, 128, 1), loss1_fc1=L.Linear(None, 1024), loss1_fc2=L.Linear(None, n_out), loss2_conv=L.Convolution2D(None, 128, 1), loss2_fc1=L.Linear(None, 1024), loss2_fc2=L.Linear(None, n_out) ) self.train = True
def __init__(self, num_class=1000, texture=False, cbp=False, normalize=True, mil=False): super(GoogLeNet, self).__init__() with self.init_scope(): self.conv1 = L.Convolution2D(None, 64, 7, stride=2, pad=3) self.conv2_reduce = L.Convolution2D(None, 64, 1) self.conv2 = L.Convolution2D(None, 192, 3, stride=1, pad=1) self.inc3a = L.Inception(None, 64, 96, 128, 16, 32, 32) self.inc3b = L.Inception(None, 128, 128, 192, 32, 96, 64) self.inc4a = L.Inception(None, 192, 96, 208, 16, 48, 64) self.inc4b = L.Inception(None, 160, 112, 224, 24, 64, 64) self.inc4c = L.Inception(None, 128, 128, 256, 24, 64, 64) self.inc4d = L.Inception(None, 112, 144, 288, 32, 64, 64) if not texture: self.inc4e = L.Inception(None, 256, 160, 320, 32, 128, 128) self.inc5a = L.Inception(None, 256, 160, 320, 32, 128, 128) self.inc5b = L.Inception(None, 384, 192, 384, 48, 128, 128) self.loss1_conv = L.Convolution2D(None, 128, 1) self.loss1_fc1 = L.Linear(None, 1024) self.loss1_fc2 = L.Linear(None, num_class) self.loss2_conv = L.Convolution2D(None, 128, 1) self.loss2_fc1 = L.Linear(None, 1024) self.loss2_fc2 = L.Linear(None, num_class) self.loss3_fc = L.Linear(None, num_class) self.texture = texture self.cbp = cbp self.normalize = normalize self.mil = mil
def __init__(self): super(Network, self).__init__(conv1=L.Convolution2D(3, 64, 7, stride=2, pad=3), conv2_reduce=L.Convolution2D(64, 64, 1), conv2=L.Convolution2D(64, 192, 3, stride=1, pad=1), inc3a=L.Inception(192, 64, 96, 128, 16, 32, 32), inc3b=L.Inception(256, 128, 128, 192, 32, 96, 64), inc4a=L.Inception(480, 192, 96, 208, 16, 48, 64), inc4b=L.Inception(512, 160, 112, 224, 24, 64, 64), inc4c=L.Inception(512, 128, 128, 256, 24, 64, 64), inc4d=L.Inception(512, 112, 144, 288, 32, 64, 64), inc4e=L.Inception(528, 256, 160, 320, 32, 128, 128), inc5a=L.Inception(832, 256, 160, 320, 32, 128, 128), inc5b=L.Inception(832, 384, 192, 384, 48, 128, 128), loss3_fc=L.Linear(1024, 1000), loss1_conv=L.Convolution2D(512, 128, 1), loss1_fc1=L.Linear(4 * 4 * 128, 1024), loss1_fc2=L.Linear(1024, 1000), loss2_conv=L.Convolution2D(528, 128, 1), loss2_fc1=L.Linear(4 * 4 * 128, 1024), loss2_fc2=L.Linear(1024, 1000)) self.train = True
def __init__(self): super(GoogLeNet, self).__init__( conv1=L.Convolution2D(3, 64, 7, stride=2, pad=3), conv2_reduce=L.Convolution2D(64, 64, 1), conv2=L.Convolution2D(64, 192, 3, stride=1, pad=1), #inception consists of 1*1,3*3,5*5convolution and maxpooling(convolution) #http://docs.chainer.org/en/stable/_modules/chainer/links/connection/inception.html?highlight=Inception #inchannel, out1,proj3,out3,proj5,out5,proj_pool,conv_init=none, biase_init=none inc3a=L.Inception(192, 64, 96, 128, 16, 32, 32), inc3b=L.Inception(256, 128, 128, 192, 32, 96, 64), inc4a=L.Inception(480, 192, 96, 208, 16, 48, 64), inc4b=L.Inception(512, 160, 112, 224, 24, 64, 64), inc4c=L.Inception(512, 128, 128, 256, 24, 64, 64), inc4d=L.Inception(512, 112, 144, 288, 32, 64, 64), inc4e=L.Inception(528, 256, 160, 320, 32, 128, 128), inc5a=L.Inception(832, 256, 160, 320, 32, 128, 128), inc5b=L.Inception(832, 384, 192, 384, 48, 128, 128), loss3_fc=L.Linear(1024, 1000), loss1_conv=L.Convolution2D(512, 128, 1), loss1_fc1=L.Linear(4 * 4 * 128, 1024), loss1_fc2=L.Linear(1024, 1000), loss2_conv=L.Convolution2D(528, 128, 1), loss2_fc1=L.Linear(4 * 4 * 128, 1024), loss2_fc2=L.Linear(1024, 1000)) self.train = True
def __init__(self, output_size=1000): super(GoogLeNet, self).__init__() with self.init_scope(): self.conv1 = L.Convolution2D(3, 64, 7, stride=2, pad=3) self.conv2_reduce = L.Convolution2D(64, 64, 1) self.conv2 = L.Convolution2D(64, 192, 3, stride=1, pad=1) self.inc3a = L.Inception(192, 64, 96, 128, 16, 32, 32) self.inc3b = L.Inception(256, 128, 128, 192, 32, 96, 64) self.inc4a = L.Inception(480, 192, 96, 208, 16, 48, 64) self.inc4b = L.Inception(512, 160, 112, 224, 24, 64, 64) self.inc4c = L.Inception(512, 128, 128, 256, 24, 64, 64) self.inc4d = L.Inception(512, 112, 144, 288, 32, 64, 64) self.inc4e = L.Inception(528, 256, 160, 320, 32, 128, 128) self.inc5a = L.Inception(832, 256, 160, 320, 32, 128, 128) self.inc5b = L.Inception(832, 384, 192, 384, 48, 128, 128) self.loss3_fc = L.Linear(1024, 256) self.append_loss3_fc = L.Linear(256, output_size) self.loss1_conv = L.Convolution2D(512, 128, 1) self.loss1_fc1 = L.Linear(2048, 1024) self.loss1_fc2 = L.Linear(1024, output_size) self.loss2_conv = L.Convolution2D(528, 128, 1) self.loss2_fc1 = L.Linear(2048, 1024) self.loss2_fc2 = L.Linear(1024, output_size)
def __init__(self, n_outputs): super(GoogLeNet, self).__init__( conv1=L.Convolution2D(3, 64, 7, stride=2, pad=3), conv2_reduce=L.Convolution2D(64, 64, 1), conv2=L.Convolution2D(64, 192, 3, stride=1, pad=1), inc3a=L.Inception(192, 64, 96, 128, 16, 32, 32), inc3b=L.Inception(256, 128, 128, 192, 32, 96, 64), inc4a=L.Inception(480, 192, 96, 208, 16, 48, 64), inc4b=L.Inception(512, 160, 112, 224, 24, 64, 64), inc4c=L.Inception(512, 128, 128, 256, 24, 64, 64), inc4d=L.Inception(512, 112, 144, 288, 32, 64, 64), inc4e=L.Inception(528, 256, 160, 320, 32, 128, 128), inc5a=L.Inception(832, 256, 160, 320, 32, 128, 128), inc5b=L.Inception(832, 384, 192, 384, 48, 128, 128), loss3_fc1=L.Linear(4096, 300), loss3_fc2=L.Linear(300, n_outputs), doc_fc1=L.Linear(1000, 600), doc_fc2=L.Linear(600, 300), bi1=L.Bilinear(300, 300, 300), loss1_conv=L.Convolution2D(512, 128, 1), loss1_fc1=L.Linear(4 * 4 * 128, 1024), loss1_fc2=L.Linear(1024, n_outputs), loss2_conv=L.Convolution2D(528, 128, 1), loss2_fc1=L.Linear(4 * 4 * 128, 1024), loss2_fc2=L.Linear(1024, n_outputs), )
def setUp(self): self.x = numpy.random.uniform( -1, 1, (10, self.in_channels, 5, 5)).astype(numpy.float32) out = self.out1 + self.out3 + self.out5 + self.proj_pool self.gy = numpy.random.uniform(-1, 1, (10, out, 5, 5)).astype(numpy.float32) self.l = links.Inception(self.in_channels, self.out1, self.proj3, self.out3, self.proj5, self.out5, self.proj_pool)
def __init__(self): super(GoogLeNet, self).__init__() with self.init_scope(): self.conv1 = L.Convolution2D(None, 64, 7, stride=2, pad=3) self.conv2_reduce = L.Convolution2D(None, 64, 1) self.conv2 = L.Convolution2D(None, 192, 3, stride=1, pad=1) self.inc3a = L.Inception(None, 64, 96, 128, 16, 32, 32) self.inc3b = L.Inception(None, 128, 128, 192, 32, 96, 64) self.inc4a = L.Inception(None, 192, 96, 208, 16, 48, 64) self.inc4b = L.Inception(None, 160, 112, 224, 24, 64, 64) self.inc4c = L.Inception(None, 128, 128, 256, 24, 64, 64) self.inc4d = L.Inception(None, 112, 144, 288, 32, 64, 64) self.inc4e = L.Inception(None, 256, 160, 320, 32, 128, 128) self.inc5a = L.Inception(None, 256, 160, 320, 32, 128, 128) self.inc5b = L.Inception(None, 384, 192, 384, 48, 128, 128) self.loss3_fc = L.Linear(None, 1000) self.loss1_conv = L.Convolution2D(None, 128, 1) self.loss1_fc1 = L.Linear(None, 1024) self.loss1_fc2 = L.Linear(None, 1000) self.loss2_conv = L.Convolution2D(None, 128, 1) self.loss2_fc1 = L.Linear(None, 1024) self.loss2_fc2 = L.Linear(None, 1000)
batch = 1 total_backward = 0 total_forward = 0 count = 0 niter = 5 n_dry = 3 # data = np.ndarray((batch, 3, 224, 224), dtype=np.float32) # data.fill(333.33) data = np.random.rand(batch, 8, 3, 3).astype(np.float32) y_grad = np.ones((batch, 32, 3, 3), dtype=np.float32) # incept = L.Inception(3, 64, 96, 128, 16, 32, 32) incept = L.Inception(8, 8, 96, 8, 16, 8, 8) x = Variable(data) for i in range(niter): print("iter:", i) start = time.time() y = incept(x) end = time.time() if i > n_dry - 1: count += 1 total_forward += (end - start) * 1000 y.grad = y_grad start = time.time() y.backward() end = time.time()