AttributeError: 模块 'keras.src.backend' 没有属性 'Variable' 和 Dropout 层
我正在尝试重新使用一个神经网络来进行声音分类,但Keras给我报了一个错:
AttributeError: module 'keras.src.backend' has no attribute 'Variable'。
这可能是兼容性的问题吗?
我使用的是Keras版本3.0.5。
这是我的代码:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.optimizers import Adam
# from keras.utils import np_utils
from sklearn import metrics
from tensorflow.keras import layers
import keras
from keras import backend
num_labels = yy.shape[1]
filter_size = 2
# Construct model
model = Sequential()
model.add(Dense(256, input_shape=(40,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_labels))
model.add(Activation('softmax'))
model.summary()
根据Keras的文档,如果我使用一个dropout层:
layers.Dropout(0.5, noise_shape=None, seed=None),
它也会报同样的错。
有人能帮我吗?谢谢。
1 个回答
0
在你导入keras之前,必须先配置好后端。如果不这样做,Variable类就不会被导入,这可能和你的错误有关。请确保在导入任何keras模块之前,先设置好后端类型。
关于如何配置后端的信息,可以在这个页面找到: https://keras.io/getting_started/
以下是从那个页面复制的内容:
你可以设置环境变量 KERAS_BACKEND,或者编辑你本地的配置文件 ~/.keras/keras.json 来配置你的后端。可用的后端选项有:“jax”、“tensorflow”、“torch”。示例:
export KERAS_BACKEND="jax"
在Colab中,你可以这样做:
import os
os.environ["KERAS_BACKEND"] = "jax"
import keras
注意:后端必须在导入Keras之前配置好,并且在导入包之后不能更改后端。