4 Pluspunkte 0 Minuspunkte
Kann ich mit Tensorflow in Python steuern welche Neuronen mit welchen verknüpft werden? Normalerweise werden ja alle miteinander verknüpft soweit ich das verstanden habe. Wenn ich 2 Layer erstellen möchte und nur bestimmte neuronen davon verbinden will. Geht das?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst sogenannte "Sparse Connections" implementieren. Sparse Connections bedeuten, dass nicht alle Neuronen in einer Schicht mit allen Neuronen in der nächsten Schicht verbunden sind. Dazu musst du benutzerdefinierte Schichten erstellen und die Verbindungen zwischen Neuronen manuell festlegen. Hier ist ein Beispiel.

import tensorflow as tf
from tensorflow.keras.layers import Layer

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

    def build(self, input_shape):
        self.weights = self.add_weight("weights", shape=(input_shape[1], self.units),
                                       initializer="random_normal", trainable=True)

    def call(self, inputs):
        connected_weights = tf.gather(self.weights, self.connections, axis=0)
        output = tf.matmul(inputs, connected_weights)
        if self.activation is not None:
            output = self.activation(output)
        return output

# Define the specific connections you want
connections = [[0, 2], [1, 3]]

# Create the model
model = tf.keras.Sequential([
    SparseConnectionLayer(units=4, connections=connections, activation=tf.nn.relu),
    tf.keras.layers.Dense(units=2, activation=tf.nn.softmax)
])

# Compile and train the model

In diesem Beispiel wird die Klasse SparseConnectionLayer definiert, die eine benutzerdefinierte Schicht darstellt. Die Verbindungen zwischen den Neuronen werden durch die connections-Liste festgelegt, die angibt, welche Eingangsneuronen mit welchen Ausgangsneuronen verbunden sind.

von  
Sparse Layer mit PyTorch