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)
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())