在跑可变形卷积时,在tensorflow2.4出现许多错误,记录一下。
1.错误
AttributeError: ‘module’ object has no attribute ‘ceil’
解决方法:
参考链接
tensorflow2.3+keras2.4.3
2.错误
NotImplementedError: Cannot convert a symbolic Tensor (conv12_offset/meshgrid/Size:0) to a numpy array. This error may indicate that you’re trying to pass a Tensor to a NumPy call, which is not supported
解决方法:
参考链接
更换numpy版本为:numpy1.19.2
3.错误
仍然报错:
解决方法:
tensorflow1.15+keras2.3.1+numpy1.16.0
注意:安装完以后,检测tensorflow为2.0版本,所以重新卸载安装!!!
通过如下方式安装(但是下载速度很慢)
conda install tensorflow-gpu==1.15
仍然报错:
解决方法:
tensorflow1.15+keras2.3.1+numpy1.16.0
4.错误
显存不足,添加如下(参考链接:tensorflow.python.framework.errors_impl.InternalError: Blas GEMM launch failed问题解决思路之一)
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
然后重启,但还是没用!!!!
还是一样的错误,在添加另外一种(参考链接:ubuntu18 下 tensoflow-gpu 2.0 卷积报错:Failed to get convolution algorithm.),如下
physical_devices = tf.config.experimental.list_physical_devices('GPU')
assert len(physical_devices) > 0, "Not enough GPU hardware devices available"
tf.config.experimental.set_memory_growth(physical_devices[0], True)
注意:不要认为到这里就结束了,这是一个漫长的等待过程,需要等10分钟左右!!!
等待之后,继续运行…
又是等待的过程,大致15分钟左右!!!
还是报错
然后我把原先的bach-size=2
改称bach-size=1
(参考链接:data数据集上模型刚启动就报错【Successfully opened dynamic library lib cublas.so.11 Killed】),再次实验,可以往下运行
接着,又有错误
AttributeError: 'bytes' object has no attribute 'encode'
解决方法:
将
original_keras_version = f.attrs['keras_version'].encode('utf-8').decode('utf-8')
改为
original_keras_version = f.attrs['keras_version'].decode('utf-8')
再重新运行…
又报错,再修改
再重新运行…没有报错
5.错误
将bach-size=1
再改为bach-size=2
,则出现报错,
解决方法:
参考链接: TensorFlow:Blas GEMM启动失败
安装完python2.7的虚拟环境后,tensorflow-gpu==1.15.0安装失败;
所以,又换种方法,
第一种,将saving.py
文件中报错的地方的decode('utf8')
前加encode('utf8')
,
... ...
original_keras_version = f.attrs['keras_version'].decode('utf8')
... ...
original_backend = f.attrs['backend'].decode('utf8')
... ...
改成
... ...
original_keras_version = f.attrs['keras_version'].encode('utf8').decode('utf8')
... ...
original_backend = f.attrs['backend'].encode('utf8').decode('utf8')
... ...
但是实验失败,
第二种,将saving.py
文件中报错的地方的decode('utf8')
删除,
... ...
original_keras_version = f.attrs['keras_version'].decode('utf8')
... ...
original_backend = f.attrs['backend'].decode('utf8')
... ...
改成
... ...
original_keras_version = f.attrs['keras_version']
... ...
original_backend = f.attrs['backend']
... ...
实验成功,没有报错。
但是如果还是把batch-size=1
换成batch-size=2
,还是报错,所以暂时先用batch-size=1