环境版本:
Ubuntu 18.04.2 LTS
Nvidia GeForce RTX2080super CUDA Version 10.0
tensorflow-gpu 1.13.1
keras 2.2.4-tf
project https://github.com/decouples/Unet unet.py脚本文件
报错信息:
诸如此类:
merge6 = merge([drop4,up6], mode = 'concat'...)
TypeError: 'module' object is not callable
本人是在运行
Unet
时出现的此问题:
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
Traceback (most recent call last):
File "unet.py", line 186, in <module>
myunet.train()
File "unet.py", line 165, in train
model = self.get_unet()
File "unet.py", line 129, in get_unet
merge6 = merge([drop4,up6], mode = 'concat', concat_axis = 3)
TypeError: 'module' object is not callable
原因分析:
tensorflow里keras版本不同造成的,调用方法改变了,需要修改下代码即可。
解决方案:
1.脚本前keras.layers中由插入merge改为concatenate;
2.脚本中merge函数替换为concatenate函数,具体如下。
#修改之前
from keras.layers import merge
merge6 = merge([drop4,up6], mode = 'concat', concat_axis = 3)
merge7 = merge([conv3,up7], mode = 'concat', concat_axis = 3)
merge8 = merge([conv2,up8], mode = 'concat', concat_axis = 3)
merge9 = merge([conv1,up9], mode = 'concat', concat_axis = 3)
#修改之后
from tensorflow.python.keras.layers import concatenate
merge6 = concatenate([drop4,up6],axis=3)
merge7 = concatenate([conv3,up7],axis=3)
merge8 = concatenate([conv2,up8],axis=3)
merge9 = concatenate([conv1,up9],axis=3)