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)
Keras(Anaconda3)のrequirements.txtファイルをチェックしました。numpy、scipy、6つのモジュールバージョンはすべて最新です。
このAttributeErrorは何を説明できますか?
完全なエラーメッセージは次のとおりです(Numpyに多少関連しているようです):
-------------------------------------------------- ----------------------)3のAttributeErrorトレースバック(最後の最後の呼び出し)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、 **クワーグス)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、〜\ 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.- -(クラス .-名前 == 'DataFrame' else data for x for data] ---> 70 data = [np.expand_dims(x、1)if x not None and x.ndim == 1 else x for data 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。 名前 == 'DataFrame' else x for data] ---> 70 data = [np.expand_dims(x、1)if xがNoneおよびx.ndim == 1 else xでない場合for data in 71] 71 else:72 data = data.values if data .class ..name == 'DataFrame' else data
AttributeError: 'list'オブジェクトには属性 'ndim'がありません
model.fit
は、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)
インポートするときは、次のようにkeras
だけでなくtensorflow.keras
を使用する必要があります。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Input, Conv2D, MaxPool2D, Dense
keras
モジュールに関連するバグがあるためです。
参照: ここ 。
トレーニングデータの形状はわかりませんが、input_dim
にエラーがあると思われます。次のように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)