nicht zu setzen scheint. Ich habe die Klasse BernoulliRBM von scikit-learn geändert, um Gruppen von sichtbaren Softmax-Einheiten zu verwenden. In dem Verfahren fügte ich ein zusätzliches Array Numpy visible_config
als Klassenattribut, das in dem Konstruktor initialisiert wird wie folgt verwendet:Python scikit-learn: Objekt kann nicht geklont werden, da der Konstruktor den Parameter
self.visible_config = np.cumsum(np.concatenate((np.asarray([0]),
visible_config), axis=0))
wo visible_config
ist ein Numpy Array als Eingabe an den Konstruktor übergeben. Der Code läuft ohne Fehler, wenn ich die Funktion fit()
direkt zum Trainieren des Modells verwende. Allerdings, wenn ich die GridSearchCV
Struktur verwenden, erhalte ich die folgenden Fehler
Cannot clone object SoftmaxRBM(batch_size=100, learning_rate=0.01, n_components=100, n_iter=100,
random_state=0, verbose=True, visible_config=[ 0 21 42 63]), as the constructor does not seem to set parameter visible_config
Dies scheint ein Problem in der Gleichheitsprüfung zwischen der Instanz der Klasse und seiner Kopie von sklearn.base.clone erstellt werden, weil visible_config
nicht richtig kopiert werden . Ich bin mir nicht sicher, wie ich das beheben soll. Es heißt in der Dokumentation, dass sklearn.base.clone
eine deepcopy()
verwendet, sollte also nicht visible_config
auch kopiert werden? Kann mir bitte jemand erklären, was ich hier versuchen kann? Vielen Dank!
Sie haben Recht. Vielen Dank! Durch das Entfernen des Berechnungsschritts und das Übergeben der vorberechneten 'visible config' in den Konstruktor wurde das Problem behoben. – user1953384
Jeder, der dies versucht, stellt sicher, dass Sie Ihr Modell nicht in den __init__ klonen. Zum Beispiel 'Klasse NewAlgo (Basestimator, Otherestimator): def __init __ (sefl, Modell): self.model = Klon (Modell)' tu das nicht <- –