Keras AttributeError:“list”对象没有属性“ndim”

问题描述 投票:0回答:4

我正在 Jupyter Notebook (Python 3.6) 中运行 Keras 神经网络模型

我收到以下错误

AttributeError:“list”对象没有属性“ndim”

从 Keras.model 调用 .fit() 方法后

model  = Sequential()
model.add(Dense(5, input_dim=len(X_data[0]), activation='sigmoid' ))
model.add(Dense(1, activation = 'sigmoid'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['acc'])
model.fit(X_data, y_data, epochs=20, batch_size=10)

我检查了 Keras 的requirements.txt 文件(在 Anaconda3 中),numpy、scipy 和六个模块版本都是最新的。

如何解释这个 AttributeError?

完整的错误消息如下(似乎与Numpy有些相关):

------------------------------------------------- -------------------------- AttributeError Traceback(最近调用 最后)在() 3 model.add(密集(1,激活='sigmoid')) 4 model.compile(loss='mean_squared_error', 优化器='adam', 指标=['acc']) ----> 5 model.fit(X_data, y_data, epochs=20, batch_size=10)

~\Anaconda3\lib\site-packages\keras\models.py 中的 fit(self, x, y, 批量大小、纪元、详细、回调、validation_split、 验证数据、洗牌、类权重、样本权重、初始纪元、 steps_per_epoch、validation_steps、**kwargs) 第963章 第964章 --> 第965章 验证步骤=验证步骤) 966 第967章

~\Anaconda3\lib\site-packages\keras ngine raining.py in fit(self, x, y、batch_size、纪元、详细、回调、validation_split、 验证数据、洗牌、类权重、样本权重、初始纪元、 每纪元的步骤、验证步骤、**kwargs)1591

第1592章 1592 -> 1593 batch_size=batch_size) 1594 # 准备验证数据。第1595章
~\Anaconda3\lib\site-packages\keras ngine raining.py 中 _standardize_user_data(自我,x,y,样本权重,类权重,check_batch_axis,batch_size)1424

self._feed_input_shapes,1425

check_batch_axis=False, 第1426章 1427、第1427章 第1428章
~\Anaconda3\lib\site-packages\keras ngine raining.py 中 _standardize_input_data(数据、名称、形状、check_batch_axis、exception_prefix) 68 elif isinstance(数据,列表): 69 data = [x.values if x.
class
.

name

== 'DataFrame' else x for x in data] ---> 70 data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data] 71 其他: 72 data = data.values if data.class.name == 'DataFrame' else data ~\Anaconda3\lib\site-packages\keras ngine raining.py 中 (.0) 68 elif isinstance(数据,列表): 69 data = [x.values if x.class.

name

== 'DataFrame' else x for x in data] ---> 70 data = [np.expand_dims(x, 1) if x is not None and x.ndim == 1 else x for x in data] 71 其他: 72 data = data.values if data.class.name == 'DataFrame' else data AttributeError:“list”对象没有属性“ndim”

model.fit
python tensorflow machine-learning keras jupyter-notebook
4个回答
45
投票
x

y
是 numpy 数组。好像你传递了一个列表,它试图通过读取 numpy 数组的 ndim 属性来获取输入的形状,但失败了。 您可以简单地使用
np.array
:

对其进行转换

import numpy as np ... model.fit(np.array(train_X),np.array(train_Y), epochs=20, batch_size=10)

    

导入时应该使用 
tensorflow.keras

6
投票
keras


from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Input, Conv2D, MaxPool2D, Dense

因为存在与

keras
 模块相关的错误。

参考:

这里

我不知道你的训练数据的形状,但我怀疑你的

input_dim

1
投票
input_dim=len(X_data)

,如下所示:


model = Sequential() model.add(Dense(5, input_dim=len(X_data), activation='sigmoid' )) model.add(Dense(1, activation = 'sigmoid')) model.compile(loss='mean_squared_error', optimizer='adam', metrics=['acc']) model.fit(X_data, y_data, epochs=20, batch_size=10)
    

这是我使用的基本布局。希望有帮助。

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.