def fc_layers(self): # def FC_layer(layer_name, x, out_nodes): images = FC_layer('fc6', self.convs_output, 4096, regularizer=self.regularizer, dropout=True) images = batch_norm(images) images = FC_layer('fc7', images, 4096, regularizer=self.regularizer, dropout=True) images = batch_norm(images) self.feature = images images = FC_layer('fc8', images, self.classesnumber, regularizer=self.regularizer) self.fcs_output = images
def fc_layers(self): # def FC_layer(layer_name, x, out_nodes): images = FC_layer('fc6', self.convs_output, 4096, regularizer=self.regularizer, dropout=True) images = batch_norm(images) images = FC_layer('fc7', images, 4096, regularizer=self.regularizer, dropout=True) images = batch_norm(images) images = FC_layer('fc8', images, 256, regularizer=self.regularizer, dropout=False) images = batch_norm(images) images = FC_layer('fc9', images, self.classesnumber, regularizer=self.regularizer) self.fcs_output = images self.fcs_output_sigmod = tf.nn.sigmoid(self.fcs_output)
def inference(input_tensor, regularizer=None): # do_conv(name, input_tensor, out_channel, ksize, stride=[1, 1, 1, 1], is_pretrain=True, dropout=False, regularizer=None): layers = list(Config.CONV_LAYERS_CONFIG.keys()) layers.sort() for key in layers: print key layer_config = Config.CONV_LAYERS_CONFIG[key] input_tensor = do_conv(key, input_tensor, layer_config['deep'], [layer_config['size'], layer_config['size']], dropout=layer_config['dropout']) if layer_config['pooling']['exists']: pooling = pool(layer_config['pooling']['name'], input_tensor) input_tensor = pooling print input_tensor # FC_layer(layer_name, x, out_nodes, regularizer=None): for key in Config.FC_LAYERS_CONFIG: layer_config = Config.FC_LAYERS_CONFIG[key] input_tensor = FC_layer(key, input_tensor, layer_config['size'], regularizer) if layer_config['batch_norm']: input_tensor = batch_norm(input_tensor) return input_tensor
def convlayers(self): self.parameters = [] # zero-mean input # with tf.name_scope('preprocess') as scope: # mean = tf.constant([123.68, 116.779, 103.939], dtype=tf.float32, shape=[1, 1, 1, 3], name='img_mean') # images = self.imgs-mean images = batch_norm(self.imgs) # images = self.imgs # conv1_1 # do_conv(name, input_tensor, out_channel, ksize, stride=[1, 1, 1, 1], is_pretrain=True): self.conv1_1 = do_conv('conv1_1', images, 64, [3, 3], is_pretrain=self.trainable['conv1_1'], batch_normalization=True) self.conv1_2 = do_conv('conv1_2', self.conv1_1, 64, [3, 3], is_pretrain=self.trainable['conv1_2'], batch_normalization=False) self.pooling1 = pool('pooling1', self.conv1_2, is_max_pool=True) self.conv2_1 = do_conv('conv2_1', self.pooling1, 128, [3, 3], is_pretrain=self.trainable['conv2_1'], batch_normalization=True) self.conv2_2 = do_conv('conv2_2', self.conv2_1, 128, [3, 3], is_pretrain=self.trainable['conv2_2'], batch_normalization=False) self.pooling2 = pool('pooling2', self.conv2_2, is_max_pool=True) self.conv3_1 = do_conv('conv3_1', self.pooling2, 256, [3, 3], is_pretrain=self.trainable['conv3_1'], batch_normalization=True) self.conv3_2 = do_conv('conv3_2', self.conv3_1, 256, [3, 3], is_pretrain=self.trainable['conv3_2'], batch_normalization=False) self.conv3_3 = do_conv('conv3_3', self.conv3_2, 256, [3, 3], is_pretrain=self.trainable['conv3_3'], batch_normalization=False) self.pooling3 = pool('pooing3', self.conv3_3, is_max_pool=True) self.conv4_1 = do_conv('conv4_1', self.pooling3, 512, [3, 3], is_pretrain=self.trainable['conv4_1'], batch_normalization=True) self.conv4_2 = do_conv('conv4_2', self.conv4_1, 512, [3, 3], is_pretrain=self.trainable['conv4_2'], batch_normalization=False) self.conv4_3 = do_conv('conv4_3', self.conv4_2, 512, [3, 3], is_pretrain=self.trainable['conv4_3'], batch_normalization=False) self.pooling4 = pool('pooling4', self.conv4_3, is_max_pool=True) self.conv5_1 = do_conv('conv5_1', self.pooling4, 512, [3, 3], is_pretrain=self.trainable['conv5_1'], batch_normalization=True) self.conv5_2 = do_conv('conv5_2', self.conv5_1, 512, [3, 3], is_pretrain=self.trainable['conv5_2'], batch_normalization=False) self.conv5_3 = do_conv('conv5_3', self.conv5_2, 512, [3, 3], is_pretrain=self.trainable['conv5_3'], batch_normalization=False) self.pooling5 = pool('pooling5', self.conv5_3, is_max_pool=True) self.convs_output = self.pooling5