模块'keras.engine'没有属性'Layer'

xyhw6mcr  于 2022-11-13  发布在  其他
关注(0)|答案(9)|浏览(364)

我尝试运行matterport/MaskRCNN代码,但遇到以下错误

----> 6 from mrcnn.model import MaskRCNN

/usr/local/lib/python3.7/dist-packages/mrcnn/model.py in <module>()
    253 
    254 
--> 255 class ProposalLayer(KE.Layer):
    256     """Receives anchor scores and selects a subset to pass as proposals
    257     to the second stage. Filtering is done based on anchor scores and

AttributeError: module 'keras.engine' has no attribute 'Layer'
c9x0cxw0

c9x0cxw01#

我在github问题讨论中发现了这一点,它对我很有效。
您需要卸载以下组件:

pip uninstall keras -y
pip uninstall keras-nightly -y
pip uninstall keras-Preprocessing -y
pip uninstall keras-vis -y
pip uninstall tensorflow -y
pip uninstall h5py -y

并强制执行这些版本:

pip install tensorflow==1.13.1
pip install keras==2.0.8
pip install h5py==2.10.0
2admgd59

2admgd592#

我在运行项目时遇到了这个问题。https://github.com/matterport/Mask_RCNN
在文件www.example.com中model.py,有一行
import keras.engine as KE
我把它改成了
import keras.engine.topology as KE
问题就消失了。

goucqfw6

goucqfw63#

安装以下版本的tensorflow

pip uninstall tensorflow -y
pip uninstall keras -y
pip install tensorflow==2.4.3
pip install keras==2.4.0

以上操作之后,会出现一些错误,您可以通过以下步骤解决这些错误。
@错误:[模块'tensorflow'没有属性XXXXXXXX]
model.py或您的代码中,使用tf.compat.v1解析某些api,例如tf.compat.v1.Sessionimport tensorflow.compat.v1 as tf
@错误:[值错误:尝试将“shape”转换为Tensor,但失败。错误:不支持None值。]

mrcnn_bbox = KL.Reshape((-1, num_classes, 4), name="mrcnn_bbox")(x)

将此if-else代码块替换为:

if s[1]==None:
    mrcnn_bbox = KL.Reshape((-1, num_classes, 4), name="mrcnn_bbox")(x)
else:
    mrcnn_bbox = KL.Reshape((s[1], num_classes, 4), name="mrcnn_bbox")(x)

@错误:[值错误:不支持None值。]

indices = tf.stack([tf.range(probs.shape[0]), class_ids], axis=1)

替换为

indices = tf.stack([tf.range(tf.shape(probs)[0]), class_ids], axis = 1)

@错误:[属性错误:模块“keras.engine.saving”没有属性"来自hdf5_group_by_name的加载权重“]

from keras import saving

替换为

from tensorflow.python.keras.saving import hdf5_format

saving.load_weights_from_hdf5_group(f, layers)
saving.load_weights_from_hdf5_group_by_name(f, layers)

替换为

hdf5_format.load_weights_from_hdf5_group(f, layers)
hdf5_format.load_weights_from_hdf5_group_by_name(f, layers)

参考编号:

whhtz7ly

whhtz7ly4#

这并不是严格意义上的重复,但这里也有一个类似的问题:AttributeError: module 'keras.engine' has no attribute 'input_layer'
从本质上讲,keras中的许多导入和属性错误都是因为keras会根据您使用的是CPU还是GPU或ASIC来更改其导入。有些引擎类并不是在所有情况下都能导入。
而是使用from keras.layers import Layer并使用该图层类代替引擎中的图层类。

jvidinwx

jvidinwx5#

对于使用ProposalLayer(KE.Layer)等图层的线
不要使用KE.Layer

import keras.layers as KL

并将KE的所有示例替换为KL

fcwjkofz

fcwjkofz6#

您应该写入keras.layers
而不是www.example.com文件中导入部分keras.enginemodel.py

ttp71kqs

ttp71kqs7#

在运行https://github.com/matterport/Mask_RCNN仓库的时候,我也遇到了前面提到的所有问题。几天后,我终于找到了一种运行这个仓库的方法,我想和大家分享一下:
首先,我安装了WSL 2 + Ubuntu 20.04 GUI(https://medium.com/@japheth.yates/the-complete-wsl2-gui-setup-2582828f4577),然后创建了以下环境:

conda create tf1_maskrcnn python=3.6 -y
conda activate tf1_maskrcnn
pip install -r requirements.txt
python setup.py install

需要注意的是,我已经调整了requirements.txt

numpy==1.19.5
scipy==1.5.4
Pillow==8.4.0
cython==0.29.28
matplotlib==3.3.4
scikit-image==0.17.2
tensorflow==1.3.0
keras==2.0.8
opencv-python==4.5.5.64
h5py==2.10.0
imgaug==0.4.0
ipykernel
pycocotools

即使基于TensorFlow 2的https://github.com/akTwelve/Mask_RCNN存储库可用,预训练的权重-自动下载或可从https://github.com/matterport/Mask_RCNN/releases检索-也会导致results不令人满意。但是,如果使用此存储库从头开始训练模型,它肯定比tf 1版本更受欢迎。尽管如此,如果意图是查看该模型在需要适当的预先训练的权重的不同数据集上工作得有多好,则TF 1版本是要与之一起使用的储存库。

  • 个人选项:* 由于大多数涉及深度学习计算机视觉任务的Github存储库都是在Ubuntu上测试的,因此在Windows上实现这些模型通常会导致大量错误,而这些错误可以通过使用虚拟机来避免。使用WSL + Ubuntu 20.04 GUI的主要优势是它比使用虚拟机快得多。尽管在开始时需要投入一些时间,但值得研究一下这个选项。
olmpazwi

olmpazwi8#

于2022年10月23日尝试并测试
后藤matterpot的掩码_RCNN/mrcnn/model.py文件
搜索KE.并替换为KL。
该代码运行良好并且能够下载COCO权重。

ljo96ir5

ljo96ir59#

我挣扎了一点与过时的Keras和Tensorflow版本在这个Mask-RCNN回购。
如果您想使用当前版本,我建议您克隆以下存储库,而不是替换行:https://github.com/akTwelve/Mask_RCNN它已更新为在tensorflow v2+和keras v2+上运行。

相关问题