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

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

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

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

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

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

Q&A

解決済

1回答

1117閲覧

SSD_training.ipynbのfit_generatorで発生したIncompatible shapesエラー

st_nnct_424

総合スコア0

Keras

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

強化学習

強化学習とは、ある環境下のエージェントが現状を推測し行動を決定することで報酬を獲得するという見解から、その報酬を最大限に得る方策を学ぶ機械学習のことを指します。問題解決時に得る報酬が選択結果によって変化することで、より良い行動を選択しようと学習する点が特徴です。

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

機械学習

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

0グッド

0クリップ

投稿2021/12/20 08:13

前提・実現したいこと

現在SSD_kerasの機械学習のテストとして、
https://github.com/rykov8/ssd_keras
に同梱されているSSD_training.ipynbをGoogleColabで動作させようとしています。
とりあえずepoch=2で動作すればいいかな、と思ったのですが

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- InvalidArgumentError Traceback (most recent call last) <ipython-input-12-201d308d4729> in <module>() 9 validation_data=gen.generate(False), 10 validation_steps=gen.val_batches, ---> 11 workers=1) 6 frames /usr/local/lib/python3.7/dist-packages/keras/engine/training_v1.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch) 1245 use_multiprocessing=use_multiprocessing, 1246 shuffle=shuffle, -> 1247 initial_epoch=initial_epoch) 1248 1249 def evaluate_generator(self, /usr/local/lib/python3.7/dist-packages/keras/engine/training_v1.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) 794 max_queue_size=max_queue_size, 795 workers=workers, --> 796 use_multiprocessing=use_multiprocessing) 797 798 def evaluate(self, /usr/local/lib/python3.7/dist-packages/keras/engine/training_generator_v1.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, max_queue_size, workers, use_multiprocessing) 584 shuffle=shuffle, 585 initial_epoch=initial_epoch, --> 586 steps_name='steps_per_epoch') 587 588 def evaluate(self, /usr/local/lib/python3.7/dist-packages/keras/engine/training_generator_v1.py in model_iteration(model, data, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch, mode, batch_size, steps_name, **kwargs) 250 251 is_deferred = not model._is_compiled --> 252 batch_outs = batch_function(*batch_data) 253 if not isinstance(batch_outs, list): 254 batch_outs = [batch_outs] /usr/local/lib/python3.7/dist-packages/keras/engine/training_v1.py in train_on_batch(self, x, y, sample_weight, class_weight, reset_metrics) 1074 self._update_sample_weight_modes(sample_weights=sample_weights) 1075 self._make_train_function() -> 1076 outputs = self.train_function(ins) # pylint: disable=not-callable 1077 1078 if reset_metrics: /usr/local/lib/python3.7/dist-packages/keras/backend.py in __call__(self, inputs) 4185 4186 fetched = self._callable_fn(*array_vals, -> 4187 run_metadata=self.run_metadata) 4188 self._call_fetch_callbacks(fetched[-len(self._fetches):]) 4189 output_structure = tf.nest.pack_sequence_as( /usr/local/lib/python3.7/dist-packages/tensorflow/python/client/session.py in __call__(self, *args, **kwargs) 1483 ret = tf_session.TF_SessionRunCallable(self._session._session, 1484 self._handle, args, -> 1485 run_metadata_ptr) 1486 if run_metadata: 1487 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) InvalidArgumentError: Incompatible shapes: [16,7308,4] vs. [16,933,4] [[{{node training/Adam/gradients/gradients/loss/predictions_loss/sub_1_grad/BroadcastGradientArgs}}]]

該当のソースコード

base_lr = 3e-4 optim = keras.optimizers.Adam(lr=base_lr) model.compile(optimizer=optim, loss=MultiboxLoss(NUM_CLASSES, neg_pos_ratio=2.0).compute_loss) epochs = 2 batch_size=8 history = model.fit_generator(gen.generate(True), steps_per_epoch =gen.train_batches//batch_size, epochs=epochs, verbose=1, callbacks=callbacks, validation_data=gen.generate(False), validation_steps=gen.val_batches, workers=1)

model.fit_generatorは下記のqiitaのサイトを参考に変更した点ですが、元のコードも併記しておきます

history = model.fit_generator(gen.generate(True), gen.train_batches, nb_epoch, verbose=1, callbacks=callbacks, validation_data=gen.generate(False), nb_val_samples=gen.val_batches, nb_worker=1)

試したこと

Tensorflowv2.xへの対応は
https://qiita.com/ttskng/items/4f67f4bbda2568229956
を参考に行いました。
また、学習データとしてVOC2007を利用させていただいています。

自分ではかなり調べたと思うのですが、fit_generatorにて同じようなエラーの発生事例も見つけられず...

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

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

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

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

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

guest

回答1

0

自己解決

ごめんなさい、単にConvolution2DをConv2Dにする際に

Convolution2D(512, 3, 3,...)

Conv2D(512, (3, 3),...)

としなければならないのが一部

Conv2D(512, 3, 3,...)

となっていたことが原因でした。

投稿2021/12/22 02:20

st_nnct_424

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問