2016-04-21 393 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