vgg16_batch_normalization.py
Go to the documentation of this file.
1 # Mainly copied from https://github.com/jsk-ros-pkg/jsk_recognition/blob/master/jsk_recognition_utils/python/jsk_recognition_utils/chainermodels/vgg16_batch_normalization.py
2 
3 import chainer
4 import chainer.functions as F
5 import chainer.links as L
6 
7 
8 class VGG16BatchNormalization(chainer.Chain):
9 
10  def __init__(self, n_class=1000):
11  super(self.__class__, self).__init__(
12  conv1_1=L.Convolution2D(3, 64, 3, stride=1, pad=1),
13  bn1_1=L.BatchNormalization(64),
14  conv1_2=L.Convolution2D(64, 64, 3, stride=1, pad=1),
15  bn1_2=L.BatchNormalization(64),
16 
17  conv2_1=L.Convolution2D(64, 128, 3, stride=1, pad=1),
18  bn2_1=L.BatchNormalization(128),
19  conv2_2=L.Convolution2D(128, 128, 3, stride=1, pad=1),
20  bn2_2=L.BatchNormalization(128),
21 
22  conv3_1=L.Convolution2D(128, 256, 3, stride=1, pad=1),
23  bn3_1=L.BatchNormalization(256),
24  conv3_2=L.Convolution2D(256, 256, 3, stride=1, pad=1),
25  bn3_2=L.BatchNormalization(256),
26  conv3_3=L.Convolution2D(256, 256, 3, stride=1, pad=1),
27  bn3_3=L.BatchNormalization(256),
28 
29  conv4_1=L.Convolution2D(256, 512, 3, stride=1, pad=1),
30  bn4_1=L.BatchNormalization(512),
31  conv4_2=L.Convolution2D(512, 512, 3, stride=1, pad=1),
32  bn4_2=L.BatchNormalization(512),
33  conv4_3=L.Convolution2D(512, 512, 3, stride=1, pad=1),
34  bn4_3=L.BatchNormalization(512),
35 
36  conv5_1=L.Convolution2D(512, 512, 3, stride=1, pad=1),
37  bn5_1=L.BatchNormalization(512),
38  conv5_2=L.Convolution2D(512, 512, 3, stride=1, pad=1),
39  bn5_2=L.BatchNormalization(512),
40  conv5_3=L.Convolution2D(512, 512, 3, stride=1, pad=1),
41  bn5_3=L.BatchNormalization(512),
42 
43  fc6=L.Linear(25088, 4096),
44  fc7=L.Linear(4096, 4096),
45  fc8=L.Linear(4096, n_class)
46  )
47 
48  def __call__(self, x, t=None):
49  h = F.relu(self.bn1_1(self.conv1_1(x)))
50  h = F.relu(self.bn1_2(self.conv1_2(h)))
51  h = F.max_pooling_2d(h, 2, stride=2)
52 
53  h = F.relu(self.bn2_1(self.conv2_1(h)))
54  h = F.relu(self.bn2_2(self.conv2_2(h)))
55  h = F.max_pooling_2d(h, 2, stride=2)
56 
57  h = F.relu(self.bn3_1(self.conv3_1(h)))
58  h = F.relu(self.bn3_2(self.conv3_2(h)))
59  h = F.relu(self.bn3_3(self.conv3_3(h)))
60  h = F.max_pooling_2d(h, 2, stride=2)
61 
62  h = F.relu(self.bn4_1(self.conv4_1(h)))
63  h = F.relu(self.bn4_2(self.conv4_2(h)))
64  h = F.relu(self.bn4_3(self.conv4_3(h)))
65  h = F.max_pooling_2d(h, 2, stride=2)
66 
67  h = F.relu(self.bn5_1(self.conv5_1(h)))
68  h = F.relu(self.bn5_2(self.conv5_2(h)))
69  h = F.relu(self.bn5_3(self.conv5_3(h)))
70  h = F.max_pooling_2d(h, 2, stride=2)
71 
72  h = F.dropout(F.relu(self.fc6(h)), ratio=0.5)
73  h = F.dropout(F.relu(self.fc7(h)), ratio=0.5)
74  h = self.fc8(h)
75  fc8 = h
76 
77  self.pred = F.softmax(h)
78 
79  if t is None:
80  assert not chainer.config.train
81  return
82 
83  self.loss = F.softmax_cross_entropy(fc8, t)
84  self.acc = F.accuracy(self.pred, t)
85 
86  chainer.report({'loss': self.loss, 'accuracy': self.acc}, self)
87 
88  return self.loss
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization.acc
acc
Definition: vgg16_batch_normalization.py:84
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization.__init__
def __init__(self, n_class=1000)
Definition: vgg16_batch_normalization.py:10
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization
Definition: vgg16_batch_normalization.py:8
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization.__call__
def __call__(self, x, t=None)
Definition: vgg16_batch_normalization.py:48
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization.pred
pred
Definition: vgg16_batch_normalization.py:77
sound_classification.vgg16.vgg16_batch_normalization.VGG16BatchNormalization.loss
loss
Definition: vgg16_batch_normalization.py:83


sound_classification
Author(s):
autogenerated on Fri May 16 2025 03:12:55