tensorflow.python.framework.errors_impl.AbortedError: Operation received an exception:Status: 3, message: could not create a dilated convolution forward descriptor, in file tensorflow/core/kernels/mkl_conv_ops.cc:1111
[[{{node conv1/convolution}}]]
在对MobileNet进行fine-tuning的时候出现了上述的错误,更加诡异的是fine-tuning之后的模型在使用model.fit方法时没有错误,然而在使用model.evaluate时会出现这一错误,从逻辑上讲,代码是没有问题的(如果有问题,在进行训练的时候就会出错,而不是等到对模型进行评估时才出问题)。但是从错误提示信息上来看,是卷积层出现了问题,于是乎一开始尝试着对fine-tuning时的卷积层全部去掉,发现还是没用,于是又经过各种折腾,比如修改卷积层的参数之类的(因为错误信息提示的是没办法进行扩张卷积运算,我以为是卷积的步长或者是卷积核设置的有问题),各种改完之后还是没用。在Google上搜索也只有寥寥几条的结果,最后在github的讨论区找到了答案,链接在此,于是立马用anaconda新建Python3.6(注意:Python3.7的环境安装不上keras的2.1.5版本)的环境,创建完之后用Anaconda Prompt的命令行安装keras 2.1.5版本(conda install keras==2.1.5),注意,用Anaconda安装时会自动附带安装TensorFlow的1.10.0版本,之后无需再安装或者是升级TensorFlow版本。随后再将之前出错的代码(之前我使用的环境是Python3.7 keras2.2.4 TensorFlow1.13.1)迁移到新建的环境下。然后model.fit,model.evaluate,model.predict三种方法均不会报错。
PS:在对MobileNet的fine-tuning的时候出现了各种奇奇怪怪的问题,除了这个之外,另外的问题还有:
keras当中对MobileNet进行fine-tuning出现的错误we expect the tensors to have a static batch size
keras当中对MobileNet进行fine-tuning出现的错误:could not create a dilated convolution forward descriptor
keras当中对MobileNe进行fine-tuning出现的错误:Attempting to use uninitialized value