Example #1
0
    def _init(self, inputs, num_outputs, options):
        assert type(inputs) is int
        hiddens = options.get("fcnet_hiddens", [256, 256])
        fcnet_activation = options.get("fcnet_activation", "tanh")
        activation = None
        if fcnet_activation == "tanh":
            activation = nn.Tanh
        elif fcnet_activation == "relu":
            activation = nn.ReLU
        print("Constructing fcnet {} {}".format(hiddens, activation))

        layers = []
        last_layer_size = inputs
        for size in hiddens:
            layers.append(
                SlimFC(last_layer_size,
                       size,
                       initializer=normc_initializer(1.0),
                       activation_fn=activation))
            last_layer_size = size

        self.hidden_layers = nn.Sequential(*layers)

        self.logits = SlimFC(last_layer_size,
                             num_outputs,
                             initializer=normc_initializer(0.01),
                             activation_fn=None)
        self.probs = nn.Softmax()
        self.value_branch = SlimFC(last_layer_size,
                                   1,
                                   initializer=normc_initializer(1.0),
                                   activation_fn=None)
Example #2
0
    def _init(self, inputs, num_outputs, options):
        """TF visionnet in PyTorch.

        Params:
            inputs (tuple): (channels, rows/height, cols/width)
            num_outputs (int): logits size
        """
        filters = options.get(
            "conv_filters",
            [[16, [8, 8], 4], [32, [4, 4], 2], [512, [10, 10], 1]])
        layers = []
        in_channels, in_size = inputs[0], inputs[1:]

        for out_channels, kernel, stride in filters[:-1]:
            padding, out_size = valid_padding(in_size, kernel,
                                              [stride, stride])
            layers.append(
                SlimConv2d(in_channels, out_channels, kernel, stride, padding))
            in_channels = out_channels
            in_size = out_size

        out_channels, kernel, stride = filters[-1]
        layers.append(
            SlimConv2d(in_channels, out_channels, kernel, stride, None))
        self._convs = nn.Sequential(*layers)

        self.logits = SlimFC(out_channels,
                             num_outputs,
                             initializer=nn.init.xavier_uniform)
        self.probs = nn.Softmax()
        self.value_branch = SlimFC(out_channels,
                                   1,
                                   initializer=normc_initializer())