Exemple #1
0
 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
Exemple #3
0
 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
Exemple #4
0
 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)
Exemple #6
0
 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),
     )
Exemple #7
0
 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)
Exemple #8
0
    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)
Exemple #9
0
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()