2016-05-26 2 views
2

J'essaie de convertir un modèle formé (code donné ci-dessous) à une fonction theano. Mais j'obtiens l'erreur suivante: AttributeError: 'Dense' object has no attribute 'output'.Keras modèle à la fonction Theano

Le code pour mon modèle:

model = Sequential() 

model.add(Convolution2D(32, 3, 3, border_mode='same', 
         input_shape=(img_channels, img_rows, img_cols))) 
model.add(Activation('relu')) 
model.add(Convolution2D(32, 3, 3)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Convolution2D(64, 3, 3, border_mode='same')) 
model.add(Activation('relu')) 
model.add(Convolution2D(64, 3, 3)) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Flatten()) 
model.add(Dense(512)) 
model.add(Activation('relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(nb_classes)) 
model.add(Activation('softmax')) 

# let's train the model using SGD + momentum (how original). 
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) 
model.compile(loss='categorical_crossentropy', 
       optimizer=sgd, 
       metrics=['accuracy']) 

Le code que je utilise pour convertir le modèle Keras à une fonction de Théano en suivant this tutorial:

from keras import backend as K 
    get_last_layer_output = K.function([model.layers[0].input], 
             [model.layers[-1].output]) 
    y=f(patches) 

Quelqu'un peut-il s'il vous plaît me dire ce qu'il faut faire ?

+0

Hey - veuillez spécifier la version de Keras que vous utilisez. Depuis la version 1.0, il y a eu beaucoup de changements dans la mise en œuvre. –

+0

J'utilise la dernière version de keras et Theano –

Répondre

1

Essayez model.layers[-1].get_output(train=False). Le original Keras tutorial peut être obsolète.

+0

Maintenant obtenir une autre erreur. Dans la deuxième ligne, i, e, y = f (patches). L'erreur indique AssertionError: assert type (entrées) dans {list, tuple}. –

+0

@AvijitDasgupta Qu'en est-il de 'y = f ([patches])'? –

+0

Oui oui! Je l'ai déjà changé en y = f ([patches]). Laissez-moi essayer et je vous le ferai savoir :) –