|
在跑可变形卷积时,在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 
|