2017-10-05 3 views
1

J'utilise KERAS (2.0.8) sur python3.5 sur Windows 64bit PC. J'essaie d'utiliser vgg16 avec mes propres couches de connexion complètes. Mais, mon model.fit_generator lancers francs avec TypeError mot-clé étrangeÉtrange mot-clé 'metirics' dans le message TypeError - Keras

TypeError: run() got an unexpected keyword argument 'metirics' 

Bien sûr, je l'utilise jamais 'metirics' dans mon code ...

Voici mon code.

def go_vgg(): 

    train_datagen = ImageDataGenerator(rescale=1.0 /255) 
    validation_datagen=ImageDataGenerator() 

    train_generator = train_datagen.flow_from_directory(train_data_dir, 
    target_size=(image_size,image_size), 
    batch_size=batch_size, 
    save_to_dir=check_dir, 
    save_format='png', 
    shuffle = False, 
    class_mode = 'binary') 


    validation_generator = validation_datagen.flow_from_directory(validation_data_dir, 
    target_size=(image_size,image_size), 
    batch_size=batch_size, 
    save_to_dir=check_dir, 
    save_format='png', 
    shuffle=False, 
    class_mode = 'binary') 


    bmodel = VGG16(include_top=False, weights='imagenet', input_tensor=None, input_shape=(image_size,image_size,3)) 
    bmodel.summary() 

    smodel = Sequential() 
    smodel.add(Flatten(input_shape=(7,7,512))) 
    smodel.summary() 
    smodel.add(Dense(256, activation='relu')) 
    smodel.add(Dropout(0.5)) 
    smodel.add(Dense(1, activation = 'sigmoid')) 
    model = Model(input=bmodel.input, outputs = smodel(bmodel.output)) 
    for layer in model.layers[:15]: 
     layer.trainable = False 

    model.compile(loss='binary_crossentropy', 
       optimizer=optimizers.SGD(lr=1e-4, momentum=0.9), 
       metirics = ['accuracy']) 

    history =model.fit_generator(train_generator, steps_per_epoch=2000, 
        epochs = np_epoch) 

Le résultat sommaire est la suivante (I mostely omis bmodel.summary())

____________________________________________________________ 
Layer (type)     Output Shape    Param # 
================================================================= 
input_1 (InputLayer)   (None, 224, 224, 3)  0 

    . 
        . 
        . 

Epoch 1/2 
Traceback (most recent call last): 
    File "test4.py", line 94, in <module> 
    main() 
    File "test4.py", line 86, in main 
    go_vgg() 
    File "test4.py", line 80, in go_vgg 
    epochs = np_epoch) 
    File "D:\python\lib\site-packages\keras\legacy\interfaces.py", line 87, in wra 
pper 
    return func(*args, **kwargs) 
    File "D:\python\lib\site-packages\keras\engine\training.py", line 2042, in fit 
_generator 
    class_weight=class_weight) 
    File "D:\python\lib\site-packages\keras\engine\training.py", line 1762, in tra 
in_on_batch 
    outputs = self.train_function(ins) 
    File "D:\python\lib\site-packages\keras\backend\tensorflow_backend.py", line 2 
273, in __call__ 
    **self.session_kwargs) 
TypeError: run() got an unexpected keyword argument 'metirics' 

Je ne sais pas où cette 'metirics' vient.
Toute aide pour résoudre cette erreur serait grandement appréciée!

Répondre

0

Bien sûr, vous utilisez un mot-clé, ici:

model.compile(loss='binary_crossentropy', 
      optimizer=optimizers.SGD(lr=1e-4, momentum=0.9), 
      metirics = ['accuracy']) 

Le problème est que vous les paramètres mal orthographiés comme metirics. Corrigez-le simplement aux mesures:

model.compile(loss='binary_crossentropy', 
      optimizer=optimizers.SGD(lr=1e-4, momentum=0.9), 
      metrics = ['accuracy'])