每当我运行代码时,代码都会返回错误,我正在运行 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 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()
然后,一切都会正常。
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()