[PYTHON] [Hyperas] Erreur de type: la résolution de l'objet "fonction" n'est pas en indice

introduction

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.

environnement

Importation de module

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.

Site de référence

【GitHub】TypeError: 'function' object is not subscriptable

Comment écrire en Keras

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

[Hyperas] Erreur de type: la résolution de l'objet "fonction" n'est pas en indice
TypeError: l'objet 'int' n'est pas en indice
[Erreur Django] L'objet 'RenameAttributes' n'est pas itérable
[Python] Erreur de nom: le nom'urlparse 'n'est pas défini
Lorsque l'objet sélectionné dans bpy.context.selected_objects n'est pas renvoyé
mémo python utilisant perl - type de dictionnaire (casse non valide)
Lorsque "ERREUR: HTTP n'est pas pris en charge." S'affiche dans mpsyt