Как манипулировать только весами нейронной сети, когда смещения не повреждены с помощью Pytorch? - PullRequest
1 голос
/ 12 января 2020

В следующих for l oop я получаю name и parameter моей нейронной сети. В зависимости от флага смещения я буду выполнять некоторые операции на weight и bias, используя block после 'if' и 'elif'. Однако, когда bias равно False, я просто выполняю операции над weight, но если bias flag равен True, я сделаю это и для weight, и для bias.

for name, param in model.named_parameters():
    if bias = Fasle and 'weight' in name:
        weight_np = param.data.cpu().numpy()
        alive = weight_np[np.nonzero(weight_np)] # extract nonzero values
        percentile_value = np.percentile(abs(alive), percent)

        # Convert Tensors to numpy and calculate
        weight_dev = param.device
        new_mask = np.where(abs(weight_np) < percentile_value, 0, mask[step])
    elif bias = True and 'weight' or 'bias' in name:
        weight_np = param.data.cpu().numpy()
        alive = weight_np[np.nonzero(weight_np)] # extract nonzero values
        percentile_value = np.percentile(abs(alive), percent)

        # Convert Tensors to numpy and calculate
        weight_dev = param.device
        new_mask = np.where(abs(weight_np) < percentile_value, 0, mask[step])

Вопрос : поскольку block одинаково для if и elif, я хочу не писать его и иметь его один раз. Можете ли вы помочь мне понять это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...