Keras AttributeError:“列表”对象没有属性“ ndim”
keras
machine-learning
python
tensorflow
7
0

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

我收到以下错误

AttributeError:“列表”对象没有属性“ 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(在Anaconda3中)的requirements.txt文件,并且numpy,scipy和六个模块版本都是最新的。

什么能解释这个AttributeError?

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

-------------------------------------------------- -------------------------()3模型中的AttributeError追溯(最近一次通话最近).add(Dense(1,activation ='sigmoid' ))4 model.compile(loss ='mean_squared_error',optimizer ='adam',metrics = ['acc'])----> 5 model.fit(X_data,y_data,epochs = 20,batch_size = 10)

〜\ Anaconda3 \ lib \ site-packages \ keras \ models.py适合kwargs)963 initial_epoch = initial_epoch,964 steps_per_epoch = steps_per_epoch,-> 965validation_steps = validation_steps)966967 def评估(self,x = None,y = None,

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py适合(自己,x,y,batch_size,时代,冗长,回调,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps, ** kwargs)1591
class_weight = class_weight,1592 check_batch_axis = False,-> 1593 batch_size = batch_size)1594#准备验证数据。 1595 do_validation = False

〜_Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py in _standardize_user_data(self,x,y,sample_weight,class_weight,check_batch_axis,batch_size)1424
self._feed_input_shapes,1425年
check_batch_axis = False,-> 1426 exception_prefix ='input')1427 y = _standardize_input_data(y,self._feed_output_names,
1428 output_shapes,

_standard_input_data中的〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py(数据,名称,形状,check_batch_axis,exception_prefix)68 elif isinstance(数据,列表):69 data = [x值,如果x。 上课name =='DataFrame'else x for data in x] ---> 70 data = [np.expand_dims(x,1)如果x不为None并且x.ndim == 1 else x for data in x] 71 else :72 data = data.values如果是数据。 上课名称 =='DataFrame'否则数据

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py在(.0)68 elif isinstance(data,list):69 data = [x.values if x。 上课name =='DataFrame'else x for data in x] ---> 70 data = [np.expand_dims(x,1)如果x不为None并且x.ndim == 1 else x for data in x] 71 else :72 data = data.values如果是数据。 上课名称 =='DataFrame'否则数据

AttributeError:“列表”对象没有属性“ ndim”

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

model.fit期望xy为numpy数组。似乎您传递了一个列表,它试图通过读取numpy数组的ndim属性来获得输入形状,但失败了。

您可以简单地使用np.array对其进行np.array

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

导入时,您应该使用tensorflow.keras而不是像这样的keras

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

因为存在与keras模块有关的错误。

参考: 这里

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题