J'ai moi-même eu une erreur embarrassante, alors j'espère que cela aide quelqu'un.
TypeError: 'function' object is not subscriptable
Cette erreur est considérée comme un problème avec la partie fonction.
Pour résoudre ce problème, revenons sur ce que nous avons ajouté dans le module hyperas.
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)
:
Savez-vous ce qui ne va pas avec ça?
Ensuite, j'afficherai After avec le code modifié.
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)
:
Remarquez comment gérer le choix de {{}}.
{{choice[128, 256, 512]}}
{{choice([128, 256, 512])}}
Si vous n'ajoutez pas () à un choix comme celui-ci, vous obtiendrez l'erreur ci-dessus.
Cette erreur
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
De cette façon, l'erreur est signalée dans [optim.minimize ()] dans la fonction principale, il est donc difficile d'identifier où se trouve le problème.
C'est une erreur causée par une erreur très simple, mais je n'ai pas pu comprendre ce qui n'allait pas en lisant le code d'erreur.
Si vous obtenez une erreur similaire à la mienne, c'est une bonne idée de vérifier d'abord si la fonction est correctement écrite.
【GitHub】TypeError: 'function' object is not subscriptable
Le code source ci-dessous est le même que le code source pour After.
(La pièce à convertir en modèle n'étant pas affichée, on ne peut pas dire qu'elle est exactement la même, mais veuillez noter que la configuration du modèle est la même.)
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