質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

397閲覧

機械学習で入力の次元をそろえたが学習ができないことに関して

s1n0

総合スコア4

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/12/29 18:30

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

モデルを組み直し、入力の配列を変更したところ実行できました。

python

1def get_model(): 2 encoder_input = keras.Input(shape=(1, L), name='input') 3 x = SimpleRNN(2, return_sequences = True, activation='tanh')(encoder_input) 4 decoder_output = Dense(L, activation='tanh')(x) 5 auto_encoder = keras.Model(encoder_input, decoder_output, name="auto_encoder") 6 return auto_encoder 7 8model = get_model() 9 10a, b = X_train.shape 11X = X_train.reshape(a, 1, b)

投稿2019/12/30 02:31

s1n0

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

X_train.shape
により、X_trainの形状を確かめてみてください。

本当に(1, 156, 5)になっていますか?

投稿2019/12/30 00:40

surphy

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問