模块“keras.engine.base_layer”没有属性“BaseRandomLayer”

问题描述 投票:0回答:2

每当我运行代码时,代码都会返回错误,我正在运行 conda 环境,并且我尝试多次安装tensorflow、keras和layer,但它们都没有改变任何内容,我尝试通过pip和conda多次安装它,并且我不断收到此错误:

  from keras import __version__
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\__init__.py", line 25, in <module>
  from keras import models
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\models.py", line 20, in <module>
  from keras import metrics as metrics_module
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\metrics.py", line 26, in <module>
  from keras import activations
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\activations.py", line 20, in <module>
  from keras.layers import advanced_activations
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\layers\__init__.py", line 31, in <module>
  from keras.layers.preprocessing.image_preprocessing import CenterCrop
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\layers\preprocessing\image_preprocessing.py", line 24, in <module>
  from keras.preprocessing import image as image_preprocessing
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\preprocessing\__init__.py", line 26, in <module>
  from keras.utils import all_utils as utils
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\utils\all_utils.py", line 34, in <module>
  from keras.utils.multi_gpu_utils import multi_gpu_model
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\utils\multi_gpu_utils.py", line 20, in <module>
  from keras.layers.core import Lambda
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\layers\core\__init__.py", line 20, in <module>
  from keras.layers.core.dropout import Dropout
File "D:\Miniconda\envs\py39tensor\lib\site-packages\keras\layers\core\dropout.py", line 26, in <module>
  class Dropout(base_layer.BaseRandomLayer):
AttributeError: module 'keras.engine.base_layer' has no attribute 'BaseRandomLayer'

代码:

import os

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist

(x_train, y_train), (x, test, y_test) = mnist.load_data()
print(x_train.shape)
print(y_train.shape)
python tensorflow keras
2个回答
0
投票

我假设您使用的是 python 3.7。一种可能的解决方案是使用 python=3.8 conda 环境。

另外,你上面的代码有一个错误:

(x_train, y_train), (x, test, y_test) = mnist.load_data()

更改为

(x_train, y_train), (x_test, y_test) = mnist.load_data()

然后,一切都会正常。


0
投票

BaseRandomLayer 类在 TensorFlow 2.8 及更高版本中不再可用。它在 TensorFlow 2.7.0 中被删除。如果您尝试导入它,您将收到 AttributeError。

要解决此问题,您可以将 TensorFlow 版本降级到 2.7 或更低版本。或者,您可以使用 keras 库,其中包含 BaseRandomLayer 类。

这是如何从 keras 导入 BaseRandomLayer 的示例:

from keras.engine import base_layer    
layer = base_random_layer.BaseRandomLayer()
© www.soinside.com 2019 - 2024. All rights reserved.