В следующих 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
, я хочу не писать его и иметь его один раз. Можете ли вы помочь мне понять это?