前提・実現したいこと
ディープラーニングで音声分類
https://qiita.com/cvusk/items/61cdbce80785eaf28349#%E6%84%9F%E6%83%B3
こちらのサイトを参考にしています。
ValueError: Error when checking target: expected activation_19 to have 2 dimensions
https://teratail.com/questions/374942
の続きなのですが、
classes = 50
y_train = keras.utils.to_categorical(y_train, classes)
y_test = keras.utils.to_categorical(y_test, classes)
こちらの3行を消したことでエラーは消えたのですが、それとは別に
ValueErrorが出てしまいました。
エラーは、callbacks=[es_cb, cp_cb])で、
(expected 2, got 1)という表記から、
調べる限りでは、得られた値一つに対して、二つ得られているということからエラーが生じているらしいのです。
基本的には、サイトのとおりに実行しているので、エラーの解消法がわからず、もしかしたら、複数回実行しているからエラーが起こっている可能性もあります。
具体的にどのようにしたらいいかわかる人に教えていただきたいです。
発生している問題・エラーメッセージ
Epoch 1/1000 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /tmp/ipykernel_12643/591284481.py in <module> 10 verbose=1, 11 shuffle=True, ---> 12 callbacks=[es_cb, cp_cb]) ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs) 89 warnings.warn('Update your `' + object_name + '` call to the ' + 90 'Keras 2 API: ' + signature, stacklevel=2) ---> 91 return func(*args, **kwargs) 92 wrapper._original_function = func 93 return wrapper ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/engine/training.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) 1730 use_multiprocessing=use_multiprocessing, 1731 shuffle=shuffle, -> 1732 initial_epoch=initial_epoch) 1733 1734 @interfaces.legacy_generator_methods_support ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/engine/training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch) 183 batch_index = 0 184 while steps_done < steps_per_epoch: --> 185 generator_output = next(output_generator) 186 187 if not hasattr(generator_output, '__len__'): ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/utils/data_utils.py in get(self) 740 "`use_multiprocessing=False, workers > 1`." 741 "For more information see issue #1638.") --> 742 six.reraise(*sys.exc_info()) ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/six.py in reraise(tp, value, tb) 717 if value.__traceback__ is not tb: 718 raise value.with_traceback(tb) --> 719 raise value 720 finally: 721 value = None ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/utils/data_utils.py in get(self) 709 try: 710 future = self.queue.get(block=True) --> 711 inputs = future.get(timeout=30) 712 self.queue.task_done() 713 except mp.TimeoutError: ~/anaconda3/envs/noise_supp/lib/python3.7/multiprocessing/pool.py in get(self, timeout) 655 return self._value 656 else: --> 657 raise self._value 658 659 def _set(self, i, obj): ~/anaconda3/envs/noise_supp/lib/python3.7/multiprocessing/pool.py in worker(inqueue, outqueue, initializer, initargs, maxtasks, wrap_exception) 119 job, i, func, args, kwds = task 120 try: --> 121 result = (True, func(*args, **kwds)) 122 except Exception as e: 123 if wrap_exception and func is not _helper_reraises_exception: ~/anaconda3/envs/noise_supp/lib/python3.7/site-packages/keras/utils/data_utils.py in next_sample(uid) 648 The next value of generator `uid`. 649 """ --> 650 return six.next(_SHARED_SEQUENCES[uid]) 651 652 /tmp/ipykernel_12643/3524841928.py in __call__(self) 16 for i in range(itr_num): 17 batch_ids = indexes[i * self.batch_size * 2:(i + 1) * self.batch_size * 2] ---> 18 x, y = self.__data_generation(batch_ids) 19 20 yield x, y /tmp/ipykernel_12643/3524841928.py in __data_generation(self, batch_ids) 30 def __data_generation(self, batch_ids): 31 _, h, w, c = self.x_train.shape ---> 32 _, class_num = self.y_train.shape 33 x1 = self.x_train[batch_ids[:self.batch_size]] 34 x2 = self.x_train[batch_ids[self.batch_size:]] ValueError: not enough values to unpack (expected 2, got 1)
該当のソースコード
python
1# train model 2batch_size = 16 3epochs = 1000 4 5training_generator = MixupGenerator(x_train, y_train)() 6model.fit_generator(generator=training_generator, 7 steps_per_epoch=x_train.shape[0] // batch_size, 8 validation_data=(x_test, y_test), 9 epochs=epochs, 10 verbose=1, 11 shuffle=True, 12 callbacks=[es_cb, cp_cb])
補足情報(FW/ツールのバージョンなど)
必要な情報はその都度追記します。