Diesmal habe ich es mit dem Auto Encoder versucht. Um den Auto-Encoder kurz zu erklären, handelt es sich um einen Mechanismus, der der Anzahl der Dimensionen der Eingangsschicht und der Ausgangsschicht entspricht und die Zwischenschicht in einer kleineren Anzahl von Dimensionen trainiert. Es scheint, dass es zur Erkennung von Anomalien und zur Merkmalsextraktion verwendet wird, beispielsweise zur Rauschunterdrückung bei der tatsächlichen Verwendung.
nn.py
model = Sequential()
model.add(Dense(50, activation='relu', input_dim=len(x_train[0])))
model.add(Dense(len(x_train[0]), activation='sigmoid'))
model.compile(optimizer='adadelta',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=100,
epochs=10,
verbose=1,
validation_data=(x_test, y_test))
Erstellen und lernen Sie das Auto-Encoder-Modell oben Ich habe die mittlere Ebene auf 50 gesetzt, aber es ist nicht bekannt, wie gut sie ist
Plötzlich fragte ich mich, wie ich die mittlere Schicht entfernen sollte. Als ich nachgeschlagen habe, ist nichts passiert. Sie müssen lediglich die Ausgabeebene ändern.
Übrigens, wenn Sie normal ausgeben möchten, tun Sie dies.
model.predict(data)
Sie müssen das Modell bearbeiten, um daraus eine Zwischenebenenausgabe zu machen. Schauen wir uns zunächst den Umriss des erstellten Modells an.
model.summary()
'''
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 50) 424500
_________________________________________________________________
dense_2 (Dense) (None, 848) 424848
=================================================================
Total params: 849,348
Trainable params: 849,348
Non-trainable params: 0
_________________________________________________________________
'''
Bestätigen Sie, dass der Name der mittleren Ebene dicht_1 ist Dann ändern Sie das Modell
middle_model = Model(inputs=model.input,
outputs=model.get_layer(layer_name).output)
middle_output = middle_model.predict(data)
middle_model ist eine Ebene mit nur Eingabe- und Ausgabeebene Dadurch erhält middle_output den Wert für die mittlere Ebene
Das Ende
Recommended Posts