前提・実現したいこと
KerasでRNNを用いたautoencoderを構築し、学習させようとしました。入力の次元を学習モデルとそろえたのですが、うまくいきませんでした。
X_trainは(156,5)で次元変更後は(156,5,1)です。
間違いを探してみましたが、見つかりませんでした。このことに関して助言を頂けると幸いです。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-66-66ad4bfc0422> in <module> 4 epochs=EPOCHS, 5 batch_size=BATCH_SIZE, ----> 6 shuffle=True) ~\Anaconda3\lib\site-packages\tensorflow_core\python\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, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs) 726 max_queue_size=max_queue_size, 727 workers=workers, --> 728 use_multiprocessing=use_multiprocessing) 729 730 def evaluate(self, ~\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py in fit(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, **kwargs) 222 validation_data=validation_data, 223 validation_steps=validation_steps, --> 224 distribution_strategy=strategy) 225 226 total_samples = _get_total_number_of_samples(training_data_adapter) ~\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py in _process_training_inputs(model, x, y, batch_size, epochs, sample_weights, class_weights, steps_per_epoch, validation_split, validation_data, validation_steps, shuffle, distribution_strategy, max_queue_size, workers, use_multiprocessing) 545 max_queue_size=max_queue_size, 546 workers=workers, --> 547 use_multiprocessing=use_multiprocessing) 548 val_adapter = None 549 if validation_data: ~\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py in _process_inputs(model, x, y, batch_size, epochs, sample_weights, class_weights, shuffle, steps, distribution_strategy, max_queue_size, workers, use_multiprocessing) 592 batch_size=batch_size, 593 check_steps=False, --> 594 steps=steps) 595 adapter = adapter_cls( 596 x, ~\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py in _standardize_user_data(self, x, y, sample_weight, class_weight, batch_size, check_steps, steps_name, steps, validation_split, shuffle, extract_tensors_from_dataset) 2470 feed_input_shapes, 2471 check_batch_axis=False, # Don't enforce the batch size. -> 2472 exception_prefix='input') 2473 2474 # Get typespecs for the input data and sanitize it if necessary. ~\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_utils.py in standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix) 572 ': expected ' + names[i] + ' to have shape ' + 573 str(shape) + ' but got array with shape ' + --> 574 str(data_shape)) 575 return data 576 ValueError: Error when checking input: expected simple_rnn_15_input to have shape (156, 5) but got array with shape (5, 1)
該当のソースコード
python
1L = 5 2LEARNING_RATE = 1e-4 3BATCH_SIZE = 16 4EPOCHS = 120 5 6#モデル構築 7optimizer = tf.keras.optimizers.Adam(lr=LEARNING_RATE) 8loss = tf.keras.losses.MeanSquaredError() 9model = Sequential() 10model.add(SimpleRNN(2, batch_input_shape=(None,X_train.shape[0],X_train.shape[1]), activation = 'relu')) 11model.add(Dense(L, activation='relu')) 12model.compile(optimaizar=optimizer,loss=loss) 13 14#次元変更 15a, b = X_train.shape 16X_train = X_train.reshape(a, b , 1) 17 18#学習 19model.fit(X_train, X_train, 20 epochs=EPOCHS, 21 batch_size=BATCH_SIZE, 22 shuffle=True)
試したこと
エラー文に合わせて(1,156,5)に変更してみましたが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。