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 (Anaconda3 内) の requirements.txt ファイルを確認したところ、numpy、scipy、および 6 つのモジュール バージョンはすべて最新でした。
この 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 で 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 assess(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 # 検証データを準備します。 1595 do_validation = False~\Anaconda3\lib\site-packages\keras\engine\training.py の _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(data, names, shapes, check_batch_axis, exception_prefix) 68 elif isinstance(data, list): 69 data = [x.values if x.クラス。名前== '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.クラス。名前== 'DataFrame' それ以外の場合はデータ
~\Anaconda3\lib\site-packages\keras\engine\training.py in (.0) 68 elif isinstance(data, list): 69 data = [x.values if x.クラス。名前== '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.クラス。名前== 'DataFrame' それ以外の場合はデータ
AttributeError: 'list' オブジェクトに属性 'ndim' がありません
ベストアンサー1
model.fit
期待するバツそしてええnumpy 配列になります。リストを渡したようですが、ndim
numpy 配列の属性を読み取って入力の形状を取得しようとしましたが失敗しました。
次のように簡単に変換できますnp.array
:
import numpy as np
...
model.fit(np.array(train_X),np.array(train_Y), epochs=20, batch_size=10)