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

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

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

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

1回答

3178閲覧

ValueError: not enough values to unpack (expected 2, got 1)

SSDD

総合スコア11

Keras

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2021/12/21 15:56

前提・実現したいこと

ディープラーニングで音声分類
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/ツールのバージョンなど)

必要な情報はその都度追記します。

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

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

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

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

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

jbpb0

2021/12/21 23:51

> ---> 32 _, class_num = self.y_train.shape > ValueError: not enough values to unpack (expected 2, got 1) 使ってるデータの「y_train」や「y_test」のshapeは、ネットワークの定義と合ってますでしょうか? 「training_generator =…」のすぐ上に下記を追加して実行して、それぞれ正しいか確認してみてください print(x_train.shape) print(y_train.shape) print(x_test.shape) print(y_test.shape)
SSDD

2021/12/22 00:00

(7500, 128, 1723, 1) (7500,) (500, 128, 1723, 1) (500, 50) print(.shape)の結果です。
jbpb0

2021/12/22 00:10

「y_train.shape」と「y_test.shape」が違う時点で間違ってますよね どちらが正しいのか(あるいはどちらも間違ってるのか)知りませんが (7500と500はサンプル数なので違っていい)
coffeebar

2021/12/22 00:12

y_train.shapeを(7500, 50)にする必要があるように見えますね。 つまりtrainのクラス情報(正解ラベル)が全部抜けちゃってる状態になっていると思えます。
SSDD

2021/12/22 01:18

y_train.shapeが(7500, 50) になってなかったのは、 参考サイトの返信部分に classes = 50 y_test = keras.utils.to_categorical(y_test, classes) x_test = x_test.reshape(test_num, freq, time, 1) の3行を消すと書いてあったのですが、 classes = 50 y_train = keras.utils.to_categorical(y_train, classes) y_test = keras.utils.to_categorical(y_test, classes) の3行を消していました。 直した結果、 x train:(7500, 128, 1723, 1) y train:(7500, 50) x test:(500, 128, 1723, 1) y test:(500, 50) となり、おそらく正常に動いています。 ありがとうございました!
guest

回答1

0

---> 32 _, class_num = self.y_train.shape

ValueError: not enough values to unpack (expected 2, got 1)

使ってるデータの「y_train」か「y_test」のshapeが、ネットワークの定義と合ってないようです

「training_generator =…」のすぐ上に下記を追加して実行して、それぞれ正しいか確認してみて、間違ってるデータを作成してるコードを見直してください

python

1print(y_train.shape) 2print(y_test.shape)

投稿2022/01/06 02:09

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問