J'ai créé un initialiseur personnalisé avec Keras. Une partie du code est:Erreur lors de la création de l'initialiseur personnalisé en utilisant get_variable avec Keras
def my_init(shape):
P = tf.get_variable("P", shape=shape, initializer = tf.contrib.layers.xavier_initializer())
return P
model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5),strides=(1, 1), padding='same', input_shape = input_shape, kernel_initializer = my_init))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, kernel_size=(1, 1) , strides=(1, 1) , padding='same' , kernel_initializer = my_init))
Quand « my_init » initialiseur est appelé pour la deuxième fois dans la couche de convolution il jette cette erreur:
Variable P already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:
Il ne permet pas de réutiliser la variable P. Est-il possible de créer une nouvelle variable dans chaque appel?
Vous pouvez essayer 'K.variable (....)'. Il ne nécessite pas de nom. --- 'importe keras.backend comme K'. –
J'ai besoin d'utiliser l'initialiseur "xavier" disponible dans tensorflow (tf.contrib.layers.xavier_initializer()) mais k.variable ne permet pas d'appeler l'initialiseur xavier. – Darshi