暗号通貨RNNのsentdexチュートリアルスクリプトを実行している間、ここにリンクしてください
モデルをトレーニングしようとしたときにエラーが発生しました。私のtensorflowバージョンは2.0.0で、python 3.6を実行しています。モデルをトレーニングしようとすると、次のエラーが表示されます。
File "C:\python36-64\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 734, in fit
use_multiprocessing=use_multiprocessing)
File "C:\python36-64\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 224, in fit
distribution_strategy=strategy)
File "C:\python36-64\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 497, in _process_training_inputs
adapter_cls = data_adapter.select_data_adapter(x, y)
File "C:\python36-64\lib\site-packages\tensorflow_core\python\keras\engine\data_adapter.py", line 628, in select_data_adapter
_type_name(x), _type_name(y)))
ValueError: Failed to find data adapter that can handle input: <class 'numpy.ndarray'>, (<class 'list'> containing values of types {"<class 'numpy.float64'>"})
何かアドバイスをいただければ幸いです!
トレーニング/テストデータとトレーニング/テストラベルがすべてnumpy配列であるかどうかを確認しましたか? numpy配列とリストを混在させている可能性があります。
model.fit()
を呼び出す前にラベルを配列に変換することで、このエラーを回避できます。
train_y = np.asarray(train_y)
validation_y = np.asarray(validation_y)
同様の問題がありました。私の場合、tf.keras.Sequential
モデルではなくkeras
ジェネレータを使用していたことが問題でした。
間違った:
from keras.preprocessing.sequence import TimeseriesGenerator
gen = TimeseriesGenerator(...)
正しい:
gen = tf.keras.preprocessing.sequence.TimeseriesGenerator(...)