1 Pluspunkt 0 Minuspunkte
Wie kann ich einen Sparse Layer mit PyTorch erstellen bei dem nur ausgewählte Neuronen miteinander verbunden sind?
bezieht sich auf eine Antwort auf: Nur bestimmte Neuronen verbinden mit Tensorflow
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Hier ist ein Beispiel für ein Modell, das aus einem SparseConnectionLayer gefolgt von einer vollständig verbundenen Schicht (nn.Linear) besteht.

import torch
import torch.nn as nn

class SparseConnectionLayer(nn.Module):
    def __init__(self, units, connections, activation=None):
        super(SparseConnectionLayer, self).__init__()
        self.units = units
        self.connections = connections
        self.activation = activation

    def forward(self, inputs):
        connected_weights = inputs[:, self.connections]
        output = torch.matmul(connected_weights, self.weights)
        if self.activation is not None:
            output = self.activation(output)
        return output

# Spezifische Verbindungen festlegen
connections = [[0, 2], [1, 3]]

# Modell erstellen
class BenutzerdefiniertesModell(nn.Module):
    def __init__(self):
        super(BenutzerdefiniertesModell, self).__init__()
        self.sparse_layer = SparseConnectionLayer(units=4, connections=connections, activation=nn.ReLU())
        self.dense_layer = nn.Linear(4, 2)
    
    def forward(self, x):
        x = self.sparse_layer(x)
        x = self.dense_layer(x)
        return x

modell = BenutzerdefiniertesModell()

von