2016-04-21 142 views
3

誰可以給我一些通知當casue這個錯誤?我使用VGG16-net做臉部識別。AssertionError當我使用深度學習庫Keras

ERROR(theano.gof.opt):優化衰竭:

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

ERROR(theano.gof.opt) :節點:AbstractConv2d {border_mode ='valid', subsample =(1,1),filter_flip = True,imshp =(None,None,None,None), kshp =(512,512,3,3)}( IncSubtensor {Set; ::,::,int64:int64 :, int64:int64:} 0,convolution2d_26_W)ERROR(theano .gof.opt):

TRACEBACK:ERROR(theano.gof.opt):Traceback(最近呼叫的最後一個): 文件「D:\ Anaconda2 \ lib \ site-packages \ theano \ gof \ opt.py 「,第1772行,在 process_node replacements = lopt.transform(node)文件」D:\ Anaconda2 \ lib \ site-packages \ theano \ gof \ opt.py「,第1223行,在 變換 repl = opt。轉換(節點)文件「D:\ Anaconda2 \ lib \ site-packages \ theano \ tensor \ nnet \ opt.py」,第153行, in local_conv2d_cpu subsample = node.op.subsample)文件「D:\ Anaconda2 \ lib \ site-packages \ theano \ tensor \ nnet \ conv.py「,第132行, in conv2d assert image_shape [1] == filter_shape [1] AssertionError

圖像[無,無,無,無]過濾器[512,512,3,3]回溯 (最新最後調用):

文件 「」,第1行,在 RUNFILE('E :/深度學習/ vgg.py」,WDIR = 'E:/深度學習')

文件 「d:\ Anaconda2 \ LIB \站點包\ spyderlib \部件\ externalshell \ sitecustomize.py」, 第699行,運行文件 execfile(文件名,命名空間)

文件 「D:\ Anaconda2 \ LIB \站點包\ spyderlib \部件\ externalshell \ sitecustomize.py 「 線74,在的execfile EXEC(編譯(scripttext,文件名, 'EXEC'),水珠,LOC)

文件」 E:/深度學習/ vgg.py」,線110,在 model.fit(數據,標籤,的batch_size = 100,nb_epoch = 10,隨機播放=真,冗長= 1,show_accuracy =真,validation_split = 0.2)

文件「d:\ Anaconda2 \ lib中\站點包\ keras \ models.py」,線路402,在 配合 sample_weight = sample_weight)

文件「d:\ Anaconda2 \ lib中\站點包\ keras \發動機\ training.py「,行 999,在配合 self._make_test_function()

文件 「d:\ Anaconda2 \ LIB \站點包\ keras \發動機\ training.py」,行 666,在_make_test_function ** self._function_kwargs)

文件 「D:\ Anaconda2 \ lib \ site-packages \ keras \ backend \ theano_backend。PY 「線路503 ,在函數返回 功能(輸入,輸出,更新=更新,** kwargs)

文件 」 d:\ Anaconda2 \ lib中\站點包\ keras \後端\ theano_backend.py 」線 489,在初始化 ** kwargs)

文件 「d:\ Anaconda2 \ lib中\站點包\ theano \編譯\ function.py」, 線320,在功能上 output_keys = output_keys)

文件「D:\ Anaconda2 \ lib \ site-packages \ theano \ comp」 ILE \ pfunc.py」,行 479,在pfunc output_keys = output_keys)

文件 「d:\ Anaconda2 \ LIB \站點包\ theano \編譯\ function_module.py」, 線1776,在orig_function output_keys = output_keys).create(

文件 「d:\ Anaconda2 \ lib中\站點包\ theano \編譯\ function_module.py」, 線1456,在INIT optimizer_profile =優化器(fgraph )

文件 「d:\ Anaconda2 \ LIB \站點包\ theano \ GOF \ opt.py」,線路101, 在通話 回報self.optimize(fgraph)

文件「d:\ Anaconda2 \ LIB \站點包\ theano \ GOF \ opt.py 「線路89,在 優化 RET = self.apply(fgraph,*指定參數時,** kwargs)

文件」 d:\ Anaconda2 \ lib中\站點包\ theano \ GOF \ opt.py 「線路230,在 申請 sub_prof = optimizer.optimize(fgraph)

文件」 d:\ Anaconda2 \ lib中\站點帕茨卡GES \ theano \ GOF \ opt.py 「線路89,在 優化 RET = self.apply(fgraph,*指定參數時,** kwargs)

文件」 d:\ Anaconda2 \ lib中\站點包\ theano \ GOF \ opt.py 「線2196, 在申請 lopt_change = self.process_node(fgraph,節點,LOPT)

文件」 d:\ Anaconda2 \ LIB \站點包\ theano \ GOF \選擇py」爲,線1777, 在process_node LOPT,節點)

文件 「d:\ Anaconda2 \ LIB \站點包\ theano \ GOF \ opt.py」,線1673, 在warn_inplace 返回NavigatorOptimizer.warn(EXC,導航,repl_pairs,local_opt,節點)

文件 「d:\ Anaconda2 \ LIB \站點包\ theano \ GOF \ opt.py」,線1659, 在警告 加薪EXC

Asse田

這是我的代碼

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

有什麼不對勁與您的數據形狀:'在conv2d斷言image_shape [1] == filter_shape [1] Asse田 圖像[無,無,無,無]過濾器[512,512,3,3]' –

+0

我的數據形狀是(3,64,64)你的意思是它不符合我的網? – sky

回答

2

我面臨着同樣的問題與keras/theano。將theano升級到版本0.8.2可以解決錯誤。請檢查您的theano版本> = 0.8.2,並嘗試在相反的情況下將theano升級到版本0.8.2。例如,使用PIP安裝:

pip install theano==0.8.2