tensorflow配置Mask-RCNN报错:tf.reduce_mean got an unexpected keyword argument 'keep_dims'

我的配置环境是:

  • Tensorflow-gpu1.4.0
  • GTX1080ti
  • CUDA8.0&Cudnn6.0
  • keras2.1
  • python3.5

    在这样的环境中配置好了之后进行训练,在执行下面模块的时候出现报错

model.train(dataset_train, dataset_val, 
            learning_rate=config.LEARNING_RATE, 
            epochs=1, 
            layers='heads')

# Fine tune all layers
model.train(dataset_train, dataset_val, 
            learning_rate=config.LEARNING_RATE / 10,
            epochs=2, 
            layers="all")

报错信息

~/anaconda2/envs/tf/lib/python3.5/site-packages/mask_rcnn-2.1-py3.5.egg/mrcnn/model.py in compile(self, learning_rate, momentum)
   2141                 continue
   2142             loss = (
-> 2143                 tf.reduce_mean(layer.output, keepdims=True)
   2144                 #tf.reduce_mean(layer.output)
   2145                 * self.config.LOSS_WEIGHTS.get(name, 1.))

TypeError: reduce_mean() got an unexpected keyword argument 'keepdims'

这中问题可以归结为:
*** got an unexpected keyword argument ***
就是关键字命名与tensorflow自带的不匹配,进行修改匹配即可。
在这里这个问题的解决办法是:根据错误提示,找到maskRCNN文件夹里面的model.py文件,打开定位到keepdims处, 发现这里有一个tf.reduce_mean函数,查看这个函数的定义:
tensorflow配置Mask-RCNN报错:tf.reduce_mean got an unexpected keyword argument 'keep_dims'_第1张图片
发现这里的keepdims应该是keep_dims,少了一个下划线。添加后解决问题。

  • 注意这里修改完model.py文件后保存,然后执行
python setup.py install 

进行MaskRCNN的安装,使刚刚的修改生效。然后重新运行训练文件即可正常训练。

  • 删除keepdims是解决不了问题的,因为这里的keep_dims默认值是False,而我们用到的是True。如果直接删掉keep_dims就会变成默认的False,同样不能正常训练。

出现这样的问题,是tensorflow版本的问题,tf1.4版本面是keep_dims,好像tf1.8版本keepdims

你可能感兴趣的:(tensorflow)