AttributeError: 模块 'keras.src.backend' 没有属性 'Variable' 和 Dropout 层

2 投票
1 回答
720 浏览
提问于 2025-04-14 15:31

我正在尝试重新使用一个神经网络来进行声音分类,但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之前配置好,并且在导入包之后不能更改后端。

撰写回答