Example #1
0
    def output_controller(self, x):
        # soft decision
        if self.soft_decision:
            return self.sigmoid(x)

        # stochastic hard decision:
        if self.stochastic:
            x = self.sigmoid(x)
            return ops.ST_StochasticIndicator()(x)
        else:
            x = self.sigmoid(x)
            return ops.ST_Indicator()(x)
Example #2
0
    def forward(self, x):
        # convolution
        x = self.conv1(x)

        # spatial averaging and fully connected layer
        if self.ngf == 1:
            x = x.mean(dim=-1).mean(dim=-1).squeeze()
        else:
            x = F.relu(x)
            x = x.mean(dim=-1).mean(dim=-1).squeeze()  # global average pooling
            x = self.linear1(x).squeeze()

        # get probability of "left" or "right"
        output = self.sigmoid(x)

        if self.soft_decision:
            return output

        if self.stochastic:
            return ops.ST_StochasticIndicator()(output)
        else:
            return ops.ST_Indicator()(output)