Keras AttributeError: ‘list’ 对象没有 ‘ndim’ 属性

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

我遇到了以下错误

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)

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

如何解释这个 AttributeError?

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

————————————————————————— 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, 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, 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 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 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 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: ‘list’ 对象没有 ‘ndim’ 属性


回答:

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

你可以简单地使用 np.array 进行转换:

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注