2016-04-21 3 views
3

qui peut me donner un avis en cas de cette erreur? J'utilise VGG16-net pour faire face à la recongnition.AssertionError lorsque j'utilise la bibliothèque Keras d'apprentissage en profondeur

ERREUR (theano.gof.opt): échec d'optimisation en raison de:

LocalOptGroup (local_abstractconv_gemm, local_abstractconv_gradinputs_gemm, local_abstractconv_gradweight_gemm, local_conv2d_cpu, local_conv2d_gradinputs_cpu, local_conv2d_gradweight_cpu)

ERREUR (theano.gof.opt) : node: AbstractConv2d {border_mode = 'valide', sous-échantillon = (1, 1), filtre_flip = Vrai, imshp = (Aucun, Aucun, Aucun, Aucun), kshp = (512, 512, 3, 3)} (IncSubtensor {Set; ::, ::, int64: int64 :, int64: int64:}. 0, convolution2d_26_W) ERREUR (theano .gof.opt):

TRACEBACK: ERREUR (theano.gof.opt): Traceback (appel le plus récent en dernier): Fichier « D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py ", ligne 1772, dans process_node remplacements = lopt.transform (noeud) Fichier" D: \ Anaconda2 \ lib \ paquets-de-site \ theano \ gof \ opt.py ", ligne 1223, dans transformer repl = opt. transform (node) Fichier "D: \ Anaconda2 \ lib \ site-packages \ theano \ tensor \ nnet \ opt.py", ligne 153, dans local_conv2d_cpu sous-exemple = noeud.op.subsample) Fichier "D: \ Anaconda2 \ lib \ package-site \ theano \ tensor \ nnet \ conv.py ", ligne 132, dans conv2d assert image_shape [1] == filter_shape [1] AssertionError

image [Aucun, Aucun, Aucun, Aucun] filtres [512, 512, 3, 3] Traceback (le plus récent appel dernier):

fichier "", ligne 1, dans runfile ('E :/apprentissage en profondeur/vgg.py », WDIR = 'E:/apprentissage en profondeur')

fichier "D: \ Anaconda2 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py", ligne 699, dans runfile execfile (nom de fichier, espace de noms)

Fichier "D: \ Anaconda2 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py " ligne 74, dans execfile exec (compilation (scripttext, nom de fichier, 'exec'), glob, loc)

fichier" E:/apprentissage en profondeur/vgg.py », la ligne 110, en model.fit (données, étiquette, batch_size = 100, nb_epoch = 10, = True aléatoire, verbeux = 1, show_accuracy = True, validation_split = 0,2)

fichier "D: \ Anaconda2 \ lib \ site-packages \ keras \ models.py", ligne 402, dans forme sample_weight = sample_weight)

fichier « D: \ Anaconda2 \ lib \ site-packages \ keras \ moteur \ training.py ", ligne 999, en forme self._make_test_function()

Fichier "D: \ Anaconda2 \ lib \ site-packages \ keras \ moteur \ training.py", ligne 666, dans _make_test_function self._function_kwargs **)

Fichier "D: \ Anaconda2 \ lib \ site-packages \ keras \ backend \ theano_backend.PY "ligne 503, en fonction retour Fonction (entrées, sorties, mises à jour = mises à jour, ** kwargs)

fichier " D: \ Anaconda2 \ lib \ site-packages \ keras \ backend \ theano_backend.py », ligne 489, dans kwargs initialisation **)

de fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ compilent \ function.py", ligne 320, en fonction output_keys = output_keys)

Fichier "D: \ Anaconda2 \ lib \ site-packages \ theano \ comp ile \ pfunc.py », ligne 479, dans pfunc output_keys = output_keys)

Fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ compilation \ function_module.py", ligne 1776, en orig_function output_keys = output_keys) .Create (

fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ compilation \ function_module.py", ligne 1456, dans initialisation optimizer_profile = optimiseur (fgraph

Fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py", ligne 101, dans appel self.optimize retour (fgraph)

Fichier « D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py "ligne 89, dans optimize ret = self.apply (fgraph, * args, ** kwargs)

fichier" D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py "ligne 230, en appliquer sub_prof = optimizer.optimize (fgraph)

fichier" D: \ Anaconda2 \ lib \ site Packa gements \ Théano \ GOF \ opt.py "ligne 89, dans optimize ret = self.apply (fgraph, * args, ** kwargs)

Fichier" D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py "la ligne 2196, en appliquer lopt_change = self.process_node (fgraph, noeud, lopt)

fichier" D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt .py », ligne 1777, dans process_node lopt, noeud)

fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py", ligne 1673, dans warn_inplace retour NavigatorOptimizer.warn (exc, navigation, repl_pairs, local_opt, noeud)

Fichier "D: \ Anaconda2 \ lib \ site-packages \ Théano \ GOF \ opt.py", ligne 1659, en garde raise exc

AssertionError

c'est mon code

def VGG_16(weights_path=None): 
    model = Sequential() 
    model.add(ZeroPadding2D((1,1),input_shape=(3,64,64))) 
    model.add(Convolution2D(64, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(64, 3, 3, activation='relu')) 
    model.add(MaxPooling2D((2,2), strides=(2,2))) 

    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(128, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(128, 3, 3, activation='relu')) 
    model.add(MaxPooling2D((2,2), strides=(2,2))) 

    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(256, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(256, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(256, 3, 3, activation='relu')) 
    model.add(MaxPooling2D((2,2), strides=(2,2))) 

    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(MaxPooling2D((2,2), strides=(2,2))) 

    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(ZeroPadding2D((1,1))) 
    model.add(Convolution2D(512, 3, 3, activation='relu')) 
    model.add(MaxPooling2D((2,2), strides=(2,2))) 
    return model 

    if weights_path: 
     import h5py 
     f = h5py.File(weights_path) 
     for k in range(f.attrs['nb_layers']): 
      if k >= len(model.layers): 
       # we don't look at the last (fully-connected) layers in the savefile 
       break 
      g = f['layer_{}'.format(k)] 
      weights = [g['param_{}'.format(p)] for p in range(g.attrs['nb_params'])] 
      model.layers[k].set_weights(weights) 
     f.close() 
     print('Model loaded.') 

if __name__ == "__main__": 

    train_data = np.empty((5800,3,64,64),dtype='float32') 
    train_label = np.empty((5800,),dtype="uint8") 
    data,label = load_data(r'E:\test\face_64_64\target\train.csv',train_data,train_label) 
    # Test pretrained model 
    label = np_utils.to_categorical(label,58) 

    model = VGG_16() 
    model.add(Flatten()) 
    model.add(Dense(4096, activation='relu')) 
    model.add(Dropout(0.5)) 
    model.add(Dense(4096, activation='relu')) 
    model.add(Dropout(0.5)) 
    model.add(Dense(58, activation='softmax')) 
    sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) 
    model.compile(optimizer=sgd, loss='categorical_crossentropy',class_mode="categorical") 
    model.fit(data,label,batch_size=100,nb_epoch=10,shuffle=True,verbose=1,show_accuracy=True,validation_split=0.2) 
+0

Quelque chose semble mal avec la forme de votre données: 'dans conv2d assert image_shape [1] == filter_shape [1] AssertionError image [None, None, None, None ] filtres [512, 512, 3, 3] ' –

+0

ma forme de données est (3,64,64) vous signifie qu'il ne correspond pas à mon réseau? – sky

Répondre

2

J'ai fait face à la même question avec keras/Théano.L'erreur a été résolue par la mise à niveau de theano vers la version 0.8.2. Veuillez vérifier que votre version de theano> = 0.8.2 et essayez de mettre à jour theano vers la version 0.8.2 dans le cas contraire. Par exemple, avec l'aide de l'installation pip:

pip install theano==0.8.2