Работа этих библиотек заключается в том, что соединения / веса для слоя представляются в виде «тензора» (т.е. многомерного массива или матрицы). Это заставляет приложение слоя вести себя как операция линейной алгебры (умножение матрицы). PyTorch / Tensorflow не представляет отдельные нейронные связи в виде отдельных объектов в коде таким образом, что имеет смысл думать о них как о чем-то, над чем можно поработать или удалить по отдельности.
1) Как удалить определенные c нейронные соединения между слоями в NN, используя любую из этих структур?
Вы можете установить один из весов на ноль, т. Е. layer.weights[x, y]=0
, хотя это на самом деле не «удаляет» его и не предотвращает его последующее изменение на ненулевое значение.
Возможно, вы могли бы использовать разреженный тензор вместо плотного, который является форматом координат, содержащим список всех ненулевых индексов и значений. Разреженность будет более эффективной, если у вас низкий процент ненулевых значений.
2) Как установить конкретное c правило обучения для некоторых нейронов в слое?
Под правилом обучения вы подразумеваете оптимизаторы? Вы можете найти другие сообщения о нескольких оптимизаторах, которые, вероятно, сработают, чтобы быть похожим на (3) ниже. Например,
https://discuss.pytorch.org/t/two-optimizers-for-one-model/11085
3) Как установить функцию активации c для некоторых нейронов в слое?
Операторы и функции активации обычно реализуются для эффективной работы на полном тензоре. Вы можете разбить слой на два отдельных меньших слоя и запустить их рядом друг с другом (на одном уровне в сети).
Например, если у вас было
layer1=torch.nn.Linear(10, 10)
, но вместо просто torch.relu(layer1(input))
вы хотите применить relu
к некоторым выходам и, скажем, sigmoid
к другим, вы можете просто:
layer1a = torch.nn.Linear(10, 5)
layer2b = torch.nn.Linear(10, 5)
, а затем
torch.cat( (torch.relu(layer1a(x)), torch.sigmoid(layer1b(x)) ), 0)
Точно так же, как вы может разбить любой тензор на части, применить различные функции к различным диапазонам / значениям и сшить результаты обратно вместе с torch.cat
.