【问题标题】:AttributeError: module 'keras.backend' has no attribute 'set_image_dim_ordering'AttributeError:模块“keras.backend”没有属性“set_image_dim_ordering”
【发布时间】:2020-01-22 12:42:27
【问题描述】:
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.backend 使用set_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

【问题讨论】:

  • 你能发布你的进口声明吗?
  • 好的,我已经编辑过了
  • 如果我的 csv 数据集是从 MTCD 输出的,csv 数据是 MTCD 矩阵,而不是像素,会有什么问题吗?
  • 检查下面的答案,它现在似乎是一个错误,但你可能能够绕过它。

标签: python keras conv-neural-network max-pooling


【解决方案1】:

有几件事要看。这是一个known issue 并针对版本 2.2.5 报告,但应该适用于 2.2.4 及之前的版本。

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

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

它应该可以继续工作,但至少现在有一个错误。

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

有人报告说您可能可以使用K.common 访问该方法,但我尚未测试:

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].
  • 您仍然应该使用set 方法。错误是set 还是我上面粘贴的错误?
  • 使用 set 方法就像你之前做的那样,只是添加了common,看看你是否得到错误。虽然理论上你也不应该得到那个错误。
  • 看来那可能行不通。我的其余答案表明这是一个已知错误,并且该方法是遗留的,因此您应该阅读image_data_format 以及如何使用它。
  • 也可能是您的代码有问题导致该问题,但这不是您最初的问题的一部分,即如何使用该方法。
【解决方案2】:

尝试将K.set_image_dim_ordering('th') 替换为K.image_dim_ordering='th'。它对我有用。

我不确定,但主要是问题与您使用的 keras 版本有关。

【讨论】:

  • 截至 2022 年,这对我有用
猜你喜欢
  • 2020-07-02
  • 2021-01-14
  • 2020-03-08
  • 2020-01-07
  • 1970-01-01
  • 2021-01-14
  • 2018-04-14
  • 2019-02-18
  • 1970-01-01
相关资源
最近更新 更多