Ich selbst hatte einen peinlichen Fehler und hoffe, dass er jemandem hilft.
TypeError: 'function' object is not subscriptable
Dieser Fehler wird als Problem mit dem Funktionsteil angesehen.
Um dieses Problem zu beheben, schauen wir uns noch einmal an, was wir im Hyperas-Modul hinzugefügt haben.
from tensorflow.keras import layers
from tensorflow.keras import Input
from hyperas.distributions import choice
from hyperas.distributions import uniform
Before
def create_model(X_train, y_train, X_test, y_test):
input_tensor = Input(shape=(X_train.shape[1],))
x = layers.Dense({{choice[128, 256, 512]}}, activation="relu", kernel_regularizer = regularizers.l2({{choice[0.01, 0.001, 0.0001]}}))(input_tensor)
x = layers.Dropout({{uniform(0, 1)}})(x)
:
Weißt du was daran falsch ist?
Als nächstes werde ich After mit dem geänderten Code anzeigen.
After
def create_model(X_train, y_train, X_test, y_test):
input_tensor = Input(shape=(X_train.shape[1],))
x = layers.Dense({{choice([128, 256, 512])}}, activation="relu", kernel_regularizer = regularizers.l2({{choice([0.01, 0.001, 0.0001])}}))(input_tensor)
x = layers.Dropout({{uniform(0, 1)}})(x)
:
Beachten Sie, wie Sie mit der Auswahl von {{}} umgehen.
{{choice[128, 256, 512]}}
{{choice([128, 256, 512])}}
Wenn Sie der Auswahl nicht wie folgt hinzufügen (), wird der obige Fehler angezeigt.
Dieser Fehler
TypeError Traceback (most recent call last)
<ipython-input-55-c060629fd2f2> in <module>
7 max_evals=5,
8 trials=trials,
----> 9 notebook_name="sample_notebook"
10 )
11
Auf diese Weise wird der Fehler in [optim.minimize ()] in der Hauptfunktion angezeigt, sodass es schwierig ist, das Problem zu identifizieren.
Es ist ein Fehler, der durch einen sehr einfachen Fehler verursacht wurde, aber ich konnte nicht herausfinden, was falsch war, indem ich den Fehlercode las.
Wenn Sie einen ähnlichen Fehler wie meinen erhalten, sollten Sie zunächst überprüfen, ob die Funktion korrekt geschrieben ist.
【GitHub】TypeError: 'function' object is not subscriptable
Der folgende Quellcode entspricht dem Quellcode für After.
(Da das in das Modell zu konvertierende Teil nicht angezeigt wird, kann nicht gesagt werden, dass es genau dasselbe ist. Bitte beachten Sie jedoch, dass die Konfiguration des Modells dieselbe ist.)
from tensorflow.keras import models
from tensorflow.keras import layers
from tensorflow.keras import regularizers
def create_model(X_train, y_train, X_test, y_test):
model = Sequential()
model.add(layers.Dense({{choice([128, 256, 512])}}, activation="relu", kernel_regularizer = regularizers.l2({{choice([0.01, 0.001, 0.0001])}}), input_shape=(X_train.shape[1],))
model.add(layers.Dropout({{uniform(0, 1)}})
:
Recommended Posts