Beispiel #1
0
 def add_client(self, c: Client):
     if c.id not in self.clients.keys():
         if not self.is_full():
             self.clients[c.id] = c
             self.client_ids.append(c.id)
             c.set_group(self)
         else:
             print("Warning: Group {:2d} is full.".format(self.id))
     else:
         print("Warning: Client {} alreay in {:2d} group.".format(c.id, self.id))
Beispiel #2
0
    def setup_clients(self, dataset, data_partition_seed, dataset_adv, model=None):
        '''instantiates clients based on given train and test data directories

        Return:
            list of Clients
        '''
        users, groups, train_data, test_data = dataset
        # AM: 
        users_adv, groups_adv, train_data_adv, test_data_adv = dataset_adv
        if len(groups) == 0:
            groups = [None for _ in users]
        if len(groups_adv) == 0:
            groups_adv = [None for _ in users_adv]
        all_clients = [Client(u, g, train_data[u], test_data[u],  data_partition_seed, model) for u, g in zip(users, groups)]
        # AM: 
        all_clients_adv = [Client(u, g, train_data_adv[u], test_data_adv[u],  data_partition_seed, model, is_adversary=True) for u, g in zip(users_adv, groups_adv)]
        return (all_clients + all_clients_adv)
Beispiel #3
0
    def setup_clients(self, dataset, model=None, model1=None):
        '''instantiates clients based on given train and test data directories

        Return:
            list of Clients
        '''
        users, groups, train_data, test_data = dataset
        if len(groups) == 0:
            groups = [None for _ in users]
        client_low = []
        client_high = []
        # print(len(users))
        i = 0
        for u, g in zip(users, groups):
            if i < self.original_params['drop_percent'] * len(users):
                k = 0
                if "synthetic" in self.original_params['dataset']:
                    self.original_params['num_features'] = 60
                    k = random.randint(
                        k, self.original_params['num_features'] / 2 - 1)
                    for j in range(0, len(train_data[u]['x'])):
                        train_data[u]['x'][j] = train_data[u]['x'][
                            j][k:k +
                               int(self.original_params['num_features'] / 2)]
                    for j in range(0, len(test_data[u]['x'])):
                        test_data[u]['x'][j] = test_data[u]['x'][
                            j][k:k +
                               int(self.original_params['num_features'] / 2)]
                    startarray = [
                        k, k + 1, k + 2, k + 3, k + 4, k + 5, k + 6, k + 7,
                        k + 8, k + 9, k + 10, k + 11, k + 12, k + 13, k + 14,
                        k + 15, k + 16, k + 17, k + 18, k + 19, k + 20, k + 21,
                        k + 22, k + 23, k + 24, k + 25, k + 26, k + 27, k + 28,
                        k + 29
                    ]

                client_low.append(
                    Client(u, g, train_data[u], test_data[u], model,
                           startarray))
            else:
                client_high.append(
                    Client(u, g, train_data[u], test_data[u], model1))
            i = i + 1

        return client_low, client_high
Beispiel #4
0
    def setup_clients(self, dataset, model=None):
        '''instantiates clients based on given train and test data directories

        Return:
            list of Clients
        '''
        users, groups, train_data, test_data = dataset
        if len(groups) == 0:
            groups = [None for _ in users]
        all_clients = [Client(u, g, train_data[u], test_data[u], model) for u, g in zip(users, groups)]
        return all_clients
Beispiel #5
0
    def setup_clients(self, dataset, dataset_name, model_name, model=None):
        '''instantiates clients based on given train and test data directories

        Return:
            list of Clients
        '''

        users, groups, train_data, test_data = dataset
        if len(groups) == 0:
            groups = [None for _ in users]
        all_clients = [Client(id=u, group=g, dataset_name=dataset_name, model_name=model_name,  # noqa: E501
                              train_data=train_data[u], eval_data=test_data[u], model=model) for u, g in zip(users, groups)]  # noqa: E501
        return all_clients
Beispiel #6
0
    def setup_clients(self, dataset, model=None):
        '''instantiates clients based on given train and test data directories

        Return:
            list of Clients
        '''
        users, groups, train_data, test_data = dataset
        # If groups is empty, then it does something with nulling for every underscore in users
        if len(groups) == 0:
            groups = [None for _ in users]
        # The data in users and groups is being indexed together with zip()
        all_clients = [
            Client(u, g, train_data[u], test_data[u], model)
            for u, g in zip(users, groups)
        ]
        return all_clients
Beispiel #7
0
 def setup_clients(self, dataset, model=None):
     """
     设置客户端
     :param dataset: 数据集元素
     :param model: 模型
     :return:
     """
     users, groups, train_data, test_data = dataset
     assert 'x' in train_data[users[-1]], '只能支持处理后的数据'
     if len(groups) == 0:
         groups = [None for _ in users]
     all_clients = [
         Client(u, g, train_data[u], test_data[u], model)
         for u, g in zip(users, groups)
     ]
     return all_clients