属性错误:模块'keras.backend'没有属性'set_image_dim_ordering'。

3
model = Sequential()
K.set_image_dim_ordering('th')
model.add(Convolution2D(30, 5, 5, border_mode= 'valid' , input_shape=(1, 10, 10),activation= 'relu' ))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(15, 3, 3, activation= 'relu' ))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation= 'relu' ))
model.add(Dense(50, activation= 'relu' ))
model.add(Dense(10, activation= 'softmax' ))
# Compile model
model.compile(loss= 'categorical_crossentropy' , optimizer= 'adam' , metrics=[ 'accuracy' ])

当我使用keras.backendset_image_dim_ordering()时,我遇到了错误。

这是错误报告:AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'

我的导入语句:

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers.convolutional import Convolution2D
from keras.layers.convolutional import MaxPooling2D
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
from keras import backend as K
from subprocess import check_output

你能发一下你的导入语句吗? - MyNameIsCaleb
好的,我已经编辑过了。 - Moch. Chamdani M
如果我的CSV数据集是从MTCD输出的,而且CSV数据是MTCD矩阵而不是像素,这会有任何问题吗? - Moch. Chamdani M
请检查下面的答案,目前似乎存在一个错误,但您可能可以绕过它。 - MyNameIsCaleb
2个回答

5

需要关注的几个问题。 这是一个已知问题,并且针对版本2.2.5进行了报告,但应该适用于2.2.4及更早版本。

无论如何,您应该停止使用此方法,因为它现在已经过时,并已被image_data_format取代:[代码]

keras.backend.image_data_format()
keras.backend.set_image_data_format(data_format)

它应该会继续工作,但现在至少存在一个错误。

编辑:下面的发帖者报告说他们的代码不起作用或返回错误,尽管该方法似乎确实存在。

Some have reported that you may be able to access the method using K.common but I haven't tested:

K.common.image_dim_ordering()
K.common.set_image_dim_ordering(dim_ordering)

但是,在我的代码中应用了K.common.image_dim_ordering()之后,另一个错误出现了:ValueError: Negative dimension size caused by subtracting 3 from 1 for 'conv2d_5/convolution' (op: 'Conv2D') with input shapes: [?,1,16,32], [3,3,32,15]。 - Moch. Chamdani M
你仍应该使用 set 方法。错误是与 set 一起出现的还是与我上面粘贴的内容有关? - MyNameIsCaleb
看起来那样可能行不通。我的其余回答仍然有效,这是一个已知的错误,该方法已经过时,因此您应该阅读有关“image_data_format”的信息以及如何使用它。 - MyNameIsCaleb
但是,当我尝试拟合模型时,出现了另一个错误,model.fit(xTrain, yTrain, epochs=20, batch_size=160) score = model.evaluate(xTest, yTest, batch_size=128)我得到的错误是 ValueError: 请提供单个数组或数组列表作为模型输入 - Moch. Chamdani M
这超出了你最初问题的范围。如果你想针对那个错误发布新问题,可以发一个新问题。如果我的回答解决了你所发布的问题,请投票并接受它。@DaniCham - MyNameIsCaleb
显示剩余2条评论

1
尝试将K.set_image_dim_ordering('th')替换为K.image_dim_ordering='th'。这对我有用。
我不确定,但问题大多与您使用的keras版本有关。

截至2022年,这对我有效。 - Ayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接