Ejemplo n.º 1
0
    def __init__(self, dataset, encoder, decoder, volsampler, colorcal, dt, stepjitter=0.01, estimatebg=False):
        super(Autoencoder, self).__init__()

        self.estimatebg = estimatebg
        self.allcameras = dataset.get_allcameras()

        self.encoder = encoder
        self.decoder = decoder
        self.volsampler = volsampler
        self.bg = nn.ParameterDict({
            k: nn.Parameter(torch.ones(3, v["size"][1], v["size"][0]), requires_grad=estimatebg)
            for k, v in dataset.get_krt().items()})
        self.colorcal = colorcal
        self.dt = dt
        self.stepjitter = stepjitter

        self.imagemean = dataset.imagemean
        self.imagestd = dataset.imagestd

        if dataset.known_background():
            dataset.get_background(self.bg)
Ejemplo n.º 2
0
    def __init__(self, operation: MixedOperation, memo: dict[str, Any],
                 mutate_kwargs: dict[str, Any]) -> None:
        # Sampling arguments. This should have the same keys with `operation.mutable_arguments`
        operation._arch_alpha = nn.ParameterDict()
        for name, spec in operation.search_space_spec().items():
            if name in memo:
                alpha = memo[name]
                if len(alpha) != spec.size:
                    raise ValueError(
                        f'Architecture parameter size of same label {name} conflict: {len(alpha)} vs. {spec.size}'
                    )
            else:
                alpha = nn.Parameter(torch.randn(spec.size) * 1E-3)
            operation._arch_alpha[name] = alpha

        operation.parameters = functools.partial(self.parameters,
                                                 module=operation)  # bind self
        operation.named_parameters = functools.partial(self.named_parameters,
                                                       module=operation)

        operation._softmax = mutate_kwargs.get('softmax', nn.Softmax(-1))
    def __init__(self, input_dim, hidden_dim):
        # initialize all pytorch class
        super(NADE, self).__init__()
        # store the dimension input and output
        self.D = input_dim
        self.H = hidden_dim
        # store the parameters of the network
        self.params = nn.ParameterDict({
            "V":
            nn.Parameter(torch.randn(self.D, self.H)),
            "b":
            nn.Parameter(torch.zeros(self.D)),
            "W":
            nn.Parameter(torch.randn(self.H, self.D)),
            "c":
            nn.Parameter(torch.zeros(1, self.H)),
        })

        # initialize the parameters
        nn.init.xavier_normal_(self.params["V"])
        nn.init.xavier_normal_(self.params["W"])
Ejemplo n.º 4
0
 def __init__(self,
              input_size=64,
              num_blocks=3,
              growth_rate=14,
              num_fin_growth=1,
              feature_mode=None,
              drop_rate=0.2,
              bare=False):
     super(ConvModule, self).__init__()
     self.num_blocks = num_blocks
     self.drop_rate = drop_rate
     if not bare:
         self.num_blocks = num_blocks
         self.params = nn.ParameterDict()
         num_channels = [
             max(1, nci * growth_rate) for nci in range(num_blocks)
         ]
         #num_channels.insert(0, num_init_growth*growth_rate)
         num_channels.append(num_fin_growth * growth_rate)
         feature_size = input_size
         for nci in range(num_blocks):
             prefix = 'l' + str(nci)
             conv_size = 3
             #if feature_size>5: feature_size /= 2
             #else: feature_size -= conv_size - 1
             feature_size /= 2
             if nci == num_blocks - 1:
                 if feature_mode == 'final_fuse':
                     conv_size = int(input_size / 2**nci)
                     feature_size = 1
                 elif feature_mode == 'avg_pool':
                     feature_size = 1
             stdv = 1. / math.sqrt(num_channels[nci] * conv_size**3)
             self.params[prefix + '_conv_w'] = nn.Parameter(
                 torch.Tensor(num_channels[nci + 1], num_channels[nci],
                              conv_size, conv_size,
                              conv_size).uniform_(-stdv, stdv))
             self.params[prefix + '_conv_b'] = nn.Parameter(
                 torch.Tensor(num_channels[nci + 1]).uniform_(-stdv, stdv))
         self.end_feature_size = feature_size
Ejemplo n.º 5
0
    def __init__(self, num_obj=1, with_rotvec=False):
        super(StatePredictorParams, self).__init__()
        maxT = 100
        ### initialize parameters for hand
        # 0:3   hand end-effector position is at x,y,z
        # 3     hand azimuth
        # 4     hand elevation
        init_params = 0.1 * torch.randn(1, maxT, 5)  # BS x T x n_param
        # hand azimuth angle initial values can center at pi/2 for easier transition to 0 or pi
        # angle around 0 used for push L --> R / pull R --> L
        # angle around pi used for push R --> L / pull L --> R
        init_params[0, :, 3] += np.pi / 2
        hand = nn.Parameter(init_params)

        ### initialize parameters for objects (always on table)
        # 0:3   object0 size in x,y,z dimensions
        # 3:6   object0 position is at x,y,z (z is on the table for obj0)
        # 6:9   object0 rotation vector
        init_params = 0.1 * torch.randn(1, maxT, 6)  # BS x T x n_param
        if with_rotvec:
            init_params = torch.cat(
                (init_params, 0.01 * torch.randn(1, maxT, 3)), dim=2)
        obj0 = nn.Parameter(init_params)

        param_dict = {'hand': hand, 'obj0': obj0}

        ### initialize parameters for obj1
        if num_obj == 2:
            # 0:3   object1 size in x,y,z dimensions
            # 3:6   object1 position is at x,y,z (z is on the table for obj0)
            # 6:9   object1 rotation vector
            init_params = 0.1 * torch.randn(1, maxT, 9)  # BS x T x n_param
            if with_rotvec:
                init_params = torch.cat(
                    (init_params, 0.01 * torch.randn(1, maxT, 3)), dim=2)
            obj1 = nn.Parameter(init_params)
            param_dict['obj1'] = obj1

        # make states into parameter dictionary
        self.states = nn.ParameterDict(param_dict)
Ejemplo n.º 6
0
    def __init__(self, useCuda=True, num_groups=3, num_classes=None):
        super(WideResNet_50_2, self).__init__()
        self.num_groups = num_groups
        self.num_classes = num_classes

        params = model_zoo.load_url(
            'https://s3.amazonaws.com/modelzoo-networks/wide-resnet-50-2-export-5ae25d50.pth'
        )

        # convert numpy arrays to torch Variables
        print('loaded weigths shape...')
        for k, v in sorted(params.items()):
            print(k, tuple(v.shape))
            if useCuda:
                params[k] = Variable(v.cuda(), requires_grad=True)
            else:
                params[k] = Variable(v, requires_grad=True)

        # Change the last fully connected layer
        if num_classes is not None:
            tmp = nn.Linear([256, 512, 1024, 2048][num_groups], num_classes)
            if useCuda:
                tmp = tmp.cuda()
            params['fc_weight'] = tmp.weight
            params['fc_bias'] = tmp.bias

        print('\nTotal parameters:', sum(v.numel() for v in params.values()))

        # replace all '.' in the dictionary by '_'
        params_tmp = {}
        for key in params.keys():
            params_tmp[key.replace('.', '_')] = params[key]
        params = params_tmp
        del params_tmp

        #create nn.Parameters to return them with parameters() function.
        self.params = nn.ParameterDict({})
        for key in params.keys():
            self.params.update(
                {key: nn.Parameter(params[key], requires_grad=True)})
    def __init__(self, categories):
        super().__init__()
        logging.info(f'creating model with categories: {categories}')

        # todo(will.brennan) - find a nicer way of saving the categories in the state dict...
        self._categories = nn.ParameterDict({i: nn.Parameter(torch.Tensor(0)) for i in categories})
        num_categories = len(self._categories)

        self.semantic = SemanticBranch()
        self.detail = DetailBranch()
        self.bga = BilateralGuidedAggregationLayer(128)

        seg_head_names = ['out', 'aux_c2', 'aux_c3', 'aux_c4', 'aux_c5']
        self.seg_heads = nn.ModuleDict(
            {
                'out': SegmentationHead(128, num_categories, scale_factor=8),
                'aux_c2': SegmentationHead(16, num_categories, scale_factor=4),
                'aux_c3': SegmentationHead(32, num_categories, scale_factor=8),
                'aux_c4': SegmentationHead(64, num_categories, scale_factor=16),
                'aux_c5': SegmentationHead(128, num_categories, scale_factor=32),
            }
        )
Ejemplo n.º 8
0
    def __init__(self, seq_length, input_dim, hidden_dim, num_classes,
                 batch_size, device):

        super(peepLSTM, self).__init__()

        ########################
        # PUT YOUR CODE HERE  #
        #######################
        self.seq_length = seq_length
        self.input_dim = input_dim
        self.hidden_dim = hidden_dim
        self.num_classes = num_classes
        self.batch_size = batch_size
        self.device = device

        self.params = nn.ParameterDict()

        for gate in ['i', 'f', 'o']:
            self.params['W_' + gate + 'h'] = nn.Parameter(
                torch.empty(hidden_dim, hidden_dim))
            self.params['W_' + gate + 'x'] = nn.Parameter(
                torch.empty(input_dim, hidden_dim))
            nn.init.kaiming_normal_(self.params['W_' + gate + 'x'],
                                    nonlinearity='linear')
            nn.init.kaiming_normal_(self.params['W_' + gate + 'h'],
                                    nonlinearity='linear')
            self.params['b_' + gate] = nn.Parameter(torch.zeros(1, hidden_dim))

        self.params['W_cx'] = nn.Parameter(torch.empty(input_dim, hidden_dim))
        self.params['b_c'] = nn.Parameter(torch.zeros(1, hidden_dim))
        nn.init.kaiming_normal_(self.params['W_cx'], nonlinearity='linear')
        self.params['W_ph'] = nn.Parameter(torch.empty(hidden_dim,
                                                       num_classes))
        nn.init.kaiming_normal_(self.params['W_ph'], nonlinearity='linear')
        self.params['b_p'] = nn.Parameter(torch.zeros(1, num_classes))
        self.tanh = nn.Tanh()
        self.sigmoid = nn.Sigmoid()
        self.softmax = nn.LogSoftmax(dim=-1)
        self.embedding = nn.Embedding(3, input_dim)
Ejemplo n.º 9
0
Archivo: mutator.py Proyecto: zyzzu/nni
    def __init__(self, model, lstm_size=64, lstm_num_layers=1, tanh_constant=1.5, cell_exit_extra_step=False,
                 skip_target=0.4, temperature=None, branch_bias=0.25, entropy_reduction="sum"):
        super().__init__(model)
        self.lstm_size = lstm_size
        self.lstm_num_layers = lstm_num_layers
        self.tanh_constant = tanh_constant
        self.temperature = temperature
        self.cell_exit_extra_step = cell_exit_extra_step
        self.skip_target = skip_target
        self.branch_bias = branch_bias

        self.lstm = StackedLSTMCell(self.lstm_num_layers, self.lstm_size, False)
        self.attn_anchor = nn.Linear(self.lstm_size, self.lstm_size, bias=False)
        self.attn_query = nn.Linear(self.lstm_size, self.lstm_size, bias=False)
        self.v_attn = nn.Linear(self.lstm_size, 1, bias=False)
        self.g_emb = nn.Parameter(torch.randn(1, self.lstm_size) * 0.1)
        self.skip_targets = nn.Parameter(torch.tensor([1.0 - self.skip_target, self.skip_target]), requires_grad=False)  # pylint: disable=not-callable
        assert entropy_reduction in ["sum", "mean"], "Entropy reduction must be one of sum and mean."
        self.entropy_reduction = torch.sum if entropy_reduction == "sum" else torch.mean
        self.cross_entropy_loss = nn.CrossEntropyLoss(reduction="none")
        self.bias_dict = nn.ParameterDict()

        self.max_layer_choice = 0
        for mutable in self.mutables:
            if isinstance(mutable, LayerChoice):
                if self.max_layer_choice == 0:
                    self.max_layer_choice = len(mutable)
                assert self.max_layer_choice == len(mutable), \
                    "ENAS mutator requires all layer choice have the same number of candidates."
                # We are judging by keys and module types to add biases to layer choices. Needs refactor.
                if "reduce" in mutable.key:
                    def is_conv(choice):
                        return "conv" in str(type(choice)).lower()
                    bias = torch.tensor([self.branch_bias if is_conv(choice) else -self.branch_bias  # pylint: disable=not-callable
                                         for choice in mutable])
                    self.bias_dict[mutable.key] = nn.Parameter(bias, requires_grad=False)

        self.embedding = nn.Embedding(self.max_layer_choice + 1, self.lstm_size)
        self.soft = nn.Linear(self.lstm_size, self.max_layer_choice, bias=False)
Ejemplo n.º 10
0
    def __init__(self, emb_dim, domain_dims):
        super(APE, self).__init__()
        self.save_path = None
        self.num_domains = len(domain_dims)
        self.emb_dim = emb_dim

        self.num_entities = sum(domain_dims.values())

        self.emb_layer = nn.Embedding(num_embeddings=self.num_entities,
                                      embedding_dim=emb_dim)

        self.c = nn.Parameter(torch.from_numpy(np.random.random(1)))
        self.mode = 'train'
        k = 0

        self.pair_W = nn.ParameterDict({})
        for i in range(self.num_domains):
            for j in range(i + 1, self.num_domains):
                w_k = nn.Parameter(data=FT(np.random.random(1)))
                self.pair_W[str(k)] = w_k
                k += 1
        return
Ejemplo n.º 11
0
    def __init__(self, n, loss_fn, lr=1e-3, **modelParams):
        super(MetaSGD, self).__init__()

        self.DataParallel = modelParams[
            'data_parallel'] if 'data_parallel' in modelParams else False

        #######################################################
        # For CNN only
        modelParams['dims'] = [modelParams['embed_size'], 64, 128, 256, 256]
        modelParams['kernel_sizes'] = [3, 3, 3, 3]
        modelParams['paddings'] = [1, 1, 1, 1]
        modelParams['relus'] = [True, True, True, True]
        modelParams['pools'] = ['max', 'max', 'max', 'ada']
        #######################################################

        self.Learner = BaseLearner(n, **modelParams)  # 基学习器内部含有beta
        self.Alpha = nn.ParameterDict({
            rename(name):
            nn.Parameter(lr * t.ones_like(val, requires_grad=True))
            for name, val in self.Learner.named_parameters()
        })  # 初始化alpha
        self.LossFn = loss_fn
Ejemplo n.º 12
0
    def __init__(self, ntype_dict, etypes, in_size, hidden_size, out_size,
                 n_layers, embedding_size):
        super(HeteroRGCN, self).__init__()
        # Use trainable node embeddings as featureless inputs.
        embed_dict = {
            ntype: nn.Parameter(torch.Tensor(num_nodes, in_size))
            for ntype, num_nodes in ntype_dict.items() if ntype != 'target'
        }
        for key, embed in embed_dict.items():
            nn.init.xavier_uniform_(embed)
        self.embed = nn.ParameterDict(embed_dict)
        # create layers
        self.layers = nn.ModuleList()
        self.layers.append(HeteroRGCNLayer(embedding_size, hidden_size,
                                           etypes))
        # hidden layers
        for i in range(n_layers - 1):
            self.layers.append(
                HeteroRGCNLayer(hidden_size, hidden_size, etypes))

        # output layer
        self.layers.append(nn.Linear(hidden_size, out_size))
Ejemplo n.º 13
0
Archivo: model.py Proyecto: hacors/Drug
 def __init__(self,
              rating_vals,
              user_in_units,
              movie_in_units,
              msg_units,
              out_units,
              dropout_rate=0.0,
              agg='stack',  # or 'sum'
              agg_act=None,
              out_act=None,
              share_user_item_param=False):
     super(GCMCLayer, self).__init__()
     self.rating_vals = rating_vals
     self.agg = agg
     self.share_user_item_param = share_user_item_param
     self.ufc = nn.Linear(msg_units, out_units)
     if share_user_item_param:
         self.ifc = self.ufc
     else:
         self.ifc = nn.Linear(msg_units, out_units)
     if agg == 'stack':
         # divide the original msg unit size by number of ratings to keep
         # the dimensionality
         assert msg_units % len(rating_vals) == 0
         msg_units = msg_units // len(rating_vals)
     self.dropout = nn.Dropout(dropout_rate)
     self.W_r = nn.ParameterDict()
     for rating in rating_vals:
         # PyTorch parameter name can't contain "."
         rating = str(rating).replace('.', '_')
         if share_user_item_param and user_in_units == movie_in_units:
             self.W_r[rating] = nn.Parameter(th.randn(user_in_units, msg_units))
             self.W_r['rev-%s' % rating] = self.W_r[rating]
         else:
             self.W_r[rating] = nn.Parameter(th.randn(user_in_units, msg_units))
             self.W_r['rev-%s' % rating] = nn.Parameter(th.randn(movie_in_units, msg_units))
     self.agg_act = get_activation(agg_act)
     self.out_act = get_activation(out_act)
     self.reset_parameters()
Ejemplo n.º 14
0
 def __init__(self,
              num_input_features,
              growth_rate,
              drop_rate,
              final=False,
              inidev=0.01,
              use_gpu=True):
     super(doubconv_pool_pwise, self).__init__()
     if use_gpu:
         device = torch.device('cuda')
     else:
         device = torch.device('cpu')
     self.params = nn.ParameterDict()
     self.params['convw1'] = nn.Parameter(
         V(torch.randn(
             (growth_rate, num_input_features, 3, 3, 3), device=device) *
           inidev,
           requires_grad=True))
     self.params['convw2'] = nn.Parameter(
         V(torch.randn(
             (growth_rate, growth_rate, 3, 3, 3), device=device) * inidev,
           requires_grad=True))
     if final:
         self.params['convb2'] = nn.Parameter(
             V(torch.randn((growth_rate), device=device) * inidev,
               requires_grad=True))
     self.params['bnw1'] = nn.Parameter(
         V(torch.randn(num_input_features, device=device) * inidev,
           requires_grad=True))
     self.params['bnb1'] = nn.Parameter(
         V(torch.randn(num_input_features, device=device) * inidev,
           requires_grad=True))
     self.params['bnw2'] = nn.Parameter(
         V(torch.randn(growth_rate, device=device) * inidev,
           requires_grad=True))
     self.params['bnb1'] = nn.Parameter(
         V(torch.randn(growth_rate, device=device) * inidev,
           requires_grad=True))
     self.drop_rate = drop_rate
Ejemplo n.º 15
0
    def __init__(self, dim_z, Nsliders):
        super(walk_embed, self).__init__()
        self.dim_z = dim_z
        self.Nsliders = Nsliders

        self.w_embed = nn.ParameterDict({
            'zoom':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [15, 1, self.dim_z, Nsliders])).cuda()),
            'shiftx':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [15, 1, self.dim_z, Nsliders])).cuda()),
            'rotate2d':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [15, 1, self.dim_z, Nsliders])).cuda())
        })
Ejemplo n.º 16
0
    def __init__(self, dim_z, Nsliders):
        super(walk_embed, self).__init__()
        self.dim_z = dim_z
        self.Nsliders = Nsliders

        self.w_embed = nn.ParameterDict({
            'blondhair':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [6, 1, self.dim_z, Nsliders])).cuda()),
            'paleskin':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [6, 1, self.dim_z, Nsliders])).cuda()),
            'male':
            nn.Parameter(
                torch.Tensor(
                    np.random.normal(0.0, 0.02,
                                     [6, 1, self.dim_z, Nsliders])).cuda())
        })
    def __init__(self,
                 embed_size,
                 g,
                 bias=True,
                 activation=None,
                 self_loop=False,
                 dropout=0.0):
        super(RelGraphConvHeteroEmbed, self).__init__()
        self.embed_size = embed_size
        self.g = g
        self.bias = bias
        self.activation = activation
        self.self_loop = self_loop

        # create weight embeddings for each node for each relation
        self.embeds = nn.ParameterDict()
        for srctype, etype, dsttype in g.canonical_etypes:
            print("{} {} {}".format(srctype, etype, dsttype))
            embed = nn.Parameter(
                th.Tensor(g.number_of_nodes(srctype), self.embed_size))
            nn.init.xavier_uniform_(embed, gain=nn.init.calculate_gain('relu'))
            self.embeds["{}-{}-{}".format(srctype, etype, dsttype)] = embed

        # bias
        if self.bias:
            self.h_bias = nn.Parameter(th.Tensor(embed_size))
            nn.init.zeros_(self.h_bias)

        # weight for self loop
        if self.self_loop:
            self.self_embeds = nn.ParameterList()
            for ntype in g.ntypes:
                embed = nn.Parameter(
                    th.Tensor(g.number_of_nodes(ntype), embed_size))
                nn.init.xavier_uniform_(embed,
                                        gain=nn.init.calculate_gain('relu'))
                self.self_embeds.append(embed)

        self.dropout = nn.Dropout(dropout)
Ejemplo n.º 18
0
 def test_flatten_module(self):
     a = nn.Module()
     b = nn.Module()
     c = nn.Module()
     d = nn.Module()
     pa = nn.Parameter()
     pb = nn.Parameter()
     pc = nn.Parameter()
     pd = nn.Parameter()
     nest = nn.ModuleDict({
         'a': a,
         'b': b,
         'list': nn.ModuleList([c, d]),
         'plist': nn.ParameterList([pa, pb]),
         'pdict': nn.ParameterDict({
             'pc': pc,
             'pd': pd
         })
     })
     flattend = alf.algorithms.algorithm._flatten_module(nest)
     self.assertEqual(set(map(id, flattend)),
                      set(map(id, [a, b, c, d, pa, pb, pc, pd])))
Ejemplo n.º 19
0
 def __init__(self,
              G,
              in_size,
              hidden_size,
              out_size,
              use_dr_pre,
              pre_v_dict,
              if_non_active=False):
     super(HeteroGCNNet, self).__init__()
     # Use trainable node embeddings as featureless inputs.
     if use_dr_pre:
         embed_dict = {}
         for ntype in G.ntypes:
             if ntype == 'description' or ntype == 'review':
                 pre_vec = torch.tensor(pre_v_dict[ntype],
                                        dtype=torch.float)
                 assert pre_vec.shape[0] == G.number_of_nodes(
                     ntype), 'The shape of pre_vec is wrong!'
                 embed = nn.Parameter(pre_vec)
                 embed_dict[ntype] = embed
             else:
                 embed = nn.Parameter(
                     torch.zeros(G.number_of_nodes(ntype), in_size))
                 nn.init.xavier_uniform_(embed)
                 embed_dict[ntype] = embed
     else:
         embed_dict = {}
         for ntype in G.ntypes:
             embed = nn.Parameter(
                 torch.zeros(G.number_of_nodes(ntype), in_size))
             nn.init.xavier_uniform_(embed)
             embed_dict[ntype] = embed
     self.embed = nn.ParameterDict(embed_dict)
     # create layers
     self.layer1 = HeteroGCNLayer(in_size, hidden_size, G.etypes)
     self.layer2 = HeteroGCNLayer(hidden_size, out_size, G.etypes)
     self.if_non_active = if_non_active
     self.h_dict = None
Ejemplo n.º 20
0
    def __init__(self):
        super(Test_entNet_Model, self).__init__()
        self.device = "cuda"

        # embedding parameters
        self.H = nn.init.normal_(torch.empty(H_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)
        self.W = nn.init.normal_(torch.empty(W_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)

        self.params = nn.ParameterDict({
            'F': nn.Parameter(nn.init.normal_(torch.empty(input_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)),

            # shared parameters
            'X': nn.Parameter(nn.init.normal_(torch.empty(X_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)),
            'Y': nn.Parameter(nn.init.normal_(torch.empty(Y_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)),
            'Z': nn.Parameter(nn.init.normal_(torch.empty(Z_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)),

            # answer parameters
            'R': nn.Parameter(nn.init.normal_(torch.empty(R_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1)),
            'K': nn.Parameter(nn.init.normal_(torch.empty(K_size, requires_grad=True, dtype=torch.float, device=self.device), mean=0.0, std=0.1))
        })

        # dropout
        self.dropout = nn.Dropout(p=0.3)
Ejemplo n.º 21
0
    def __init__(self, input_dim, hidden_dim):
        """Initializes a new NADE instance.

    Args:
      input_dim: The dimension of the input.
      hidden_dim: The dimmension of the hidden layer. NADE only supports one
        hidden layer.
    """
        super().__init__()
        self._input_dim = input_dim
        self._hidden_dim = hidden_dim
        self.params = nn.ParameterDict({
            'in_W':
            nn.Parameter(torch.zeros(self._hidden_dim, self._input_dim)),
            'in_b':
            nn.Parameter(torch.zeros(self._hidden_dim, )),
            'h_W':
            nn.Parameter(torch.zeros(self._input_dim, self._hidden_dim)),
            'h_b':
            nn.Parameter(torch.zeros(self._input_dim, )),
        })
        nn.init.kaiming_normal_(self.params['in_W'])
        nn.init.kaiming_normal_(self.params['h_W'])
    def __init__(self, state_dim, action_dim):
        super(CriticNet, self).__init__()
        self.state_dim = state_dim
        self.action_dim = action_dim

        num_hiddens = 300

        self.params = nn.ParameterDict({
            'w1_s':
            nn.Parameter(torch.randn(self.state_dim, num_hiddens) * 0.001),
            'w1_a':
            nn.Parameter(torch.randn(action_dim, num_hiddens) * 0.001),
            'b1':
            nn.Parameter(torch.zeros(1, num_hiddens))
        })

        self.linear = nn.Linear(num_hiddens, 1)

        for name, params in self.linear.named_parameters():
            if 'bias' in name:
                init.constant_(params, val=0.)
            else:
                init.normal_(params, mean=0., std=0.001)
Ejemplo n.º 23
0
    def __init__(self,
                 fiber,
                 nonlin=nn.ReLU(inplace=True),
                 num_layers: int = 0):
        """Initializer.

        Args:
            fiber: Fiber() of feature multiplicities and types
            nonlin: nonlinearity to use everywhere
            num_layers: non-negative number of linear layers in fnc
        """
        super().__init__()
        self.fiber = fiber
        self.nonlin = nonlin
        self.num_layers = num_layers

        # Regularization for computing phase: gradients explode otherwise
        self.eps = 1e-12

        # Norm mappings: 1 per feature type
        self.bias = nn.ParameterDict()
        for m, d in self.fiber.structure:
            self.bias[str(d)] = nn.Parameter(torch.randn(m).view(1, m))
Ejemplo n.º 24
0
    def __init__(self, categories):
        super().__init__()
        logging.info(f'creating model with categories: {categories}')

        # todo(will.brennan) - find a nicer way of saving the categories in the state dict...
        self._categories = nn.ParameterDict(
            {i: nn.Parameter(torch.Tensor(0))
             for i in categories})
        num_categories = len(self._categories)

        self.model = detection.maskrcnn_resnet50_fpn(pretrained=True)

        logging.debug('changing num_categories for bbox predictor')

        in_features = self.model.roi_heads.box_predictor.cls_score.in_features
        self.model.roi_heads.box_predictor = detection.faster_rcnn.FastRCNNPredictor(
            in_features, num_categories)

        logging.debug('changing num_categories for mask predictor')

        in_features_mask = self.model.roi_heads.mask_predictor.conv5_mask.in_channels
        self.model.roi_heads.mask_predictor = detection.mask_rcnn.MaskRCNNPredictor(
            in_features_mask, 256, num_categories)
Ejemplo n.º 25
0
    def __init__(self, g, in_size, hidden_size, out_size, n_layers,
                 embedding_size):
        super(HeteroRGCN, self).__init__()
        # Use trainable node embeddings as featureless inputs.
        embed_dict = {
            ntype: nn.Parameter(torch.Tensor(g.number_of_nodes(ntype),
                                             in_size))
            for ntype in g.ntypes if ntype != 'user'
        }
        for key, embed in embed_dict.items():
            nn.init.xavier_uniform_(embed)
        self.embed = nn.ParameterDict(embed_dict)
        # create layers
        self.layers = nn.Sequential()
        self.layers.add_module(
            HeteroRGCNLayer(embedding_size, hidden_size, g.etypes))
        # hidden layers
        for i in range(n_layers - 1):
            self.layers.add_module = HeteroRGCNLayer(hidden_size, hidden_size,
                                                     g.etypes)

        # output layer
        self.layers.add(nn.Dense(hidden_size, out_size))
Ejemplo n.º 26
0
    def __init__(
        self,
        in_features: IntSpaceType,
        hidden_multiplier: IntSpaceType,
        out_features: IntSpaceType,
        act_layer: Callable[[], nn.Module] = nn.GELU,
        drop: Optional[float] = None,
    ):
        super(SuperMLPv2, self).__init__()
        self._in_features = in_features
        self._hidden_multiplier = hidden_multiplier
        self._out_features = out_features
        self._drop_rate = drop
        self._params = nn.ParameterDict({})

        self._create_linear("fc1", self.in_features,
                            int(self.in_features * self.hidden_multiplier))
        self._create_linear("fc2",
                            int(self.in_features * self.hidden_multiplier),
                            self.out_features)
        self.act = act_layer()
        self.drop = nn.Dropout(drop or 0.0)
        self.reset_parameters()
Ejemplo n.º 27
0
    def __init__(self, graph: dgl.DGLHeteroGraph, input_dim: int, hidden_dim: int, n_heads: int = 4,
                 dropout: float = 0.2, residual: bool = True):
        """
        :param graph: a heterogeneous graph
        :param input_dim: int, input dimension
        :param hidden_dim: int, hidden dimension
        :param n_heads: int, number of attention heads
        :param dropout: float, dropout rate
        :param residual: boolean, residual connections or not
        """
        super(HGConvLayer, self).__init__()
        self.input_dim = input_dim
        self.hidden_dim = hidden_dim
        self.n_heads = n_heads
        self.dropout = dropout
        self.residual = residual

        # hetero conv modules
        self.micro_conv = dglnn.HeteroGraphConv({
            etype: LSTMConv(dim=input_dim)
            for srctype, etype, dsttype in graph.canonical_etypes
        })

        # different types aggregation module
        self.macro_conv = MacroConv(in_feats=hidden_dim * n_heads, out_feats=hidden_dim,
                                                             num_heads=n_heads,
                                                             dropout=dropout, negative_slope=0.2)

        if self.residual:
            # residual connection
            self.res_fc = nn.ModuleDict()
            self.residual_weight = nn.ParameterDict()
            for ntype in graph.ntypes:
                self.res_fc[ntype] = nn.Linear(input_dim, n_heads * hidden_dim, bias=True)
                self.residual_weight[ntype] = nn.Parameter(torch.randn(1))

        self.reset_parameters()
Ejemplo n.º 28
0
    def __init__(self, env_func, env_kwargs, state_encoder,
                 state_dim, action_dim, hidden_dims, activation,
                 initial_alpha, n_samplers, buffer_capacity,
                 devices, random_seed=0):
        self.devices = itertools.cycle(devices)
        self.model_device = next(self.devices)

        self.state_dim = state_dim
        self.action_dim = action_dim

        self.training = True

        self.state_encoder = self.STATE_ENCODER_WRAPPER(state_encoder)

        self.critic = Critic(state_dim, action_dim, hidden_dims, activation=activation)
        self.actor = Actor(state_dim, action_dim, hidden_dims, activation=activation)

        self.log_alpha = nn.Parameter(torch.tensor(np.log(initial_alpha), dtype=torch.float32),
                                      requires_grad=True)

        self.modules = Container()
        self.modules.state_encoder = self.state_encoder
        self.modules.critic = self.critic
        self.modules.actor = self.actor
        self.modules.params = nn.ParameterDict({'log_alpha': self.log_alpha})
        self.modules.to(self.model_device)

        self.state_encoder.share_memory()
        self.actor.share_memory()
        self.collector = self.COLLECTOR(env_func=env_func,
                                        env_kwargs=env_kwargs,
                                        state_encoder=self.state_encoder,
                                        actor=self.actor,
                                        n_samplers=n_samplers,
                                        buffer_capacity=buffer_capacity,
                                        devices=self.devices,
                                        random_seed=random_seed)
Ejemplo n.º 29
0
    def __init__(self, f_in, f_out, self_interaction: bool=False, edge_dim: int=0, flavor='skip'):
        """SE(3)-equivariant Graph Conv Layer

        Args:
            f_in: list of tuples [(multiplicities, type),...]
            f_out: list of tuples [(multiplicities, type),...]
            self_interaction: include self-interaction in convolution
            edge_dim: number of dimensions for edge embedding
            flavor: allows ['TFN', 'skip'], where 'skip' adds a skip connection
        """
        super().__init__()
        self.f_in = f_in
        self.f_out = f_out
        self.edge_dim = edge_dim
        self.self_interaction = self_interaction
        self.flavor = flavor

        # Neighbor -> center weights
        self.kernel_unary = nn.ModuleDict()
        for (mi, di) in self.f_in.structure:
            for (mo, do) in self.f_out.structure:
                self.kernel_unary[f'({di},{do})'] = PairwiseConv(di, mi, do, mo, edge_dim=edge_dim)

        # Center -> center weights
        self.kernel_self = nn.ParameterDict()
        if self_interaction:
            assert self.flavor in ['TFN', 'skip']
            if self.flavor == 'TFN':
                for m_out, d_out in self.f_out.structure:
                    W = nn.Parameter(torch.randn(1, m_out, m_out) / np.sqrt(m_out))
                    self.kernel_self[f'{d_out}'] = W
            elif self.flavor == 'skip':
                for m_in, d_in in self.f_in.structure:
                    if d_in in self.f_out.degrees:
                        m_out = self.f_out.structure_dict[d_in]
                        W = nn.Parameter(torch.randn(1, m_out, m_in) / np.sqrt(m_in))
                        self.kernel_self[f'{d_in}'] = W
Ejemplo n.º 30
0
    def __init__(self,
                 G,
                 in_size,
                 hidden_size,
                 out_size,
                 bias=True,
                 self_loop=True,
                 dropout=0.0):

        super(HeteroRGCN, self).__init__()
        # Use trainable node embeddings as featureless inputs.
        embed_dict = {
            ntype: nn.Parameter(torch.Tensor(G.number_of_nodes(ntype),
                                             in_size))
            for ntype in G.ntypes
        }
        for key, embed in embed_dict.items():
            nn.init.xavier_uniform_(embed)
        self.embed = nn.ParameterDict(embed_dict)
        # create layers
        self.layer1 = HeteroRGCNLayer(in_size, hidden_size, G.etypes, bias,
                                      self_loop, dropout)
        self.layer2 = HeteroRGCNLayer(hidden_size, out_size, G.etypes, bias,
                                      self_loop, dropout)