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()