Keras AttributeError:“列表"对象没有属性"ndim" [英] Keras AttributeError: 'list' object has no attribute 'ndim'

查看:316
本文介绍了Keras AttributeError:“列表"对象没有属性"ndim"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm running a Keras neural network model in Jupyter Notebook (Python 3.6)

我收到以下错误

AttributeError:列表"对象没有属性"ndim"

AttributeError: 'list' object has no attribute 'ndim'

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

after calling the .fit() method from Keras.model

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和六个模块版本都是最新的.

I checked the requirements.txt file for Keras (in Anaconda3) and the numpy, scipy, and six module versions are all up to date.

什么可以解释此AttributeError?

What can explain this AttributeError?

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

The full error message is the following (seems to be somewhat related to 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)

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in () 3 model.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 in fit(self,x,y, batch_size,纪元,冗长,回调,validation_split, validate_data,随机播放,class_weight,sample_weight,initial_epoch, steps_per_epoch,validation_steps,** kwargs) 第963章 964 steps_per_epoch = steps_per_epoch, -> 965个validation_steps = validation_steps) 966 967 def评估(self,x = None,y = None,

~\Anaconda3\lib\site-packages\keras\models.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs) 963 initial_epoch=initial_epoch, 964 steps_per_epoch=steps_per_epoch, --> 965 validation_steps=validation_steps) 966 967 def evaluate(self, x=None, y=None,

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py in fit(self,x, y,batch_size,epoch,冗长,回调,validation_split, validate_data,随机播放,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 fit(self, x, y, batch_size, epochs, verbose, callbacks, 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 # Prepare validation data. 1595 do_validation = False

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py在 _standardize_user_data(自身,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,

~\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,

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py在 _standardize_input_data(数据,名称,形状,check_batch_axis,exception_prefix) 68 Elif isinstance(数据,列表): 69 data = [x.values if x. class . name =='DataFrame'else x for data in x] ---> 70数据= [np.expand_dims(x,1),如果x不为None且x.ndim == 1否则x表示数据中的x] 其他71条: 72数据=数据.如果是数据..名称 =='DataFrame'否则为数据

~\Anaconda3\lib\site-packages\keras\engine\training.py in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix) 68 elif isinstance(data, list): 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 else: 72 data = data.values if data.class.name == 'DataFrame' else data

〜\ Anaconda3 \ lib \ site-packages \ keras \ engine \ training.py在 (.0) 68 Elif isinstance(数据,列表): 69 data = [x.values if x. class . name =='DataFrame'else x for data in x] ---> 70数据= [np.expand_dims(x,1),如果x不为None并且x.ndim == 1否则x表示数据中的x] 其他71条: 72数据=数据.如果是数据..名称 =='DataFrame'否则为数据

~\Anaconda3\lib\site-packages\keras\engine\training.py in (.0) 68 elif isinstance(data, list): 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 else: 72 data = data.values if data.class.name == 'DataFrame' else data

AttributeError:列表"对象没有属性"ndim"

AttributeError: 'list' object has no attribute 'ndim'

推荐答案

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

model.fit expects x and y to be numpy array. Seems like you pass a list, it tried to get shape of input by reading ndim attribute of numpy array and failed.

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

You can simply transform it using np.array:

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

这篇关于Keras AttributeError:“列表"对象没有属性"ndim"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆