def forward(self, inputs): """ Forward process Parameters ---------- inputs: Input tensor Returns ------- outputs: Predictions of network, shape is (batch, num_classes). The outputs are called logits for classification net because the softmax activations are not applied in this forward process """ use_bn = self.config.get('use_bn') block_filters = self.config.get('block_filters') block_conv_nums = self.config.get('block_conv_nums') outputs = inputs for i, filters in enumerate(block_filters): outputs = self.build_blocks(outputs, filters, block_conv_nums[i]) if i != len(block_filters) - 1: outputs = maxpool(outputs, pool_size=2) else: outputs = global_average_pool(outputs) if use_bn: outputs = batch_normalization(outputs, training=self.training) outputs = dense(outputs, self.config.get('num_classes')) return outputs
def forward(self, inputs): """ Forward process Parameters ---------- inputs: Input tensor Returns ------- outputs: Predictions of network, shape is (batch, num_classes). The outputs are called logits for classification net because the softmax activations are not applied in this forward process """ block_filters = self.config.get('block_filters') block_dense_nums = self.config.get('block_dense_nums') outputs = inputs for i, filters in enumerate(block_filters): first_blocks = i == 0 growth_rate = self.config.get('growth_rates')[i] outputs = self.build_dense_blocks(outputs, filters, block_dense_nums[i], growth_rate, first_blocks) if i != len(block_filters) - 1: outputs = maxpool(outputs, pool_size=2) else: outputs = global_average_pool(outputs) outputs = dense(outputs, self.config.get('num_classes')) return outputs
def forward(self, inputs): """ Forward process Parameters ---------- inputs: Input tensor """ # encoder process outputs = inputs encoders = [] for i, filters in enumerate(self.block_filters): first_blocks = i == 0 outputs = self.build_res_blocks(outputs, filters, self.block_res_nums[i], first_blocks) if i != len(self.block_filters) - 1: encoders.append(outputs) outputs = maxpool(outputs, pool_size=2) # decoder process encoder_num = len(encoders) for k, encoder in enumerate(encoders[::-1]): i = encoder_num - k - 1 first_blocks = i == 0 filters = int(encoder.get_shape()[-1]) outputs = conv_bn_relu(outputs, filters, 3, 1, 1, use_bn=self.use_bn, training=self.training) outputs = upsample(outputs, 2, self.interpolation_type) outputs = concat([encoder, outputs]) outputs = self.build_res_blocks(outputs, filters, self.block_res_nums[i], first_blocks) outputs = conv(outputs, self.config.get('output_channel')) outputs = softmax(outputs) return outputs