YutaroOgawa / pytorch_advanced

書籍「つくりながら学ぶ! PyTorchによる発展ディープラーニング」の実装コードを配置したリポジトリです
MIT License
837 stars 336 forks source link

【質問】第2章 2-7 学習と研修の実施について、IndexError: too many indices for arrayが出ます #177

Closed hiroto-oohashi closed 3 years ago

hiroto-oohashi commented 3 years ago

お世話になっております。 AWSを学習を行っていたところ、 表題のIndexError: too many indices for arrayが起きてしまいます。

デバッグを確認する限りでは ssd_model.pyの259行目あたり

3. 前処理を実施

    img, boxes, labels = self.transform(img, self.phase, anno_list[:, :4], anno_list[:, 4])

この部分でエラーとなっています。

too many indices for arrayということは、配列に対しindicesが多すぎる...ということのように思うのですが、 1つも学習が進まないのならともかく、イテレーションがいくつか進むのが疑問です。

イテレーションの進め方としては、train.txtにある項目を、何分割かにして、そのうちの1つを学習しているのでしょうか。 拙い質問で申し訳ございません。 恐縮ではございますが、ご回答を検討いただけますと幸いです

YutaroOgawa commented 3 years ago

@hiroto-oohashi さま

ご質問いただき、誠にありがとうございます。

SSDモデルで自作のデータセットで訓練中と理解しました。

イテレーションの単位がデータセットまるまる全部で1回なのか、 ミニバッチごとに1回なのか、

2-7_SSD_training.ipynbの通りですと、データセットをまるまる1回で1 epoch、ミニバッチ1回で1 iterationとしています。 同じであると仮定します。

すると、40イテレーション目あたりで読み込んでいるデータのアノテーションかデータに不備、誤りがあるの可能性が考えられます。

まずは、イテレーションごとに読み込んでいるデータをチェックしてみて、エラーが毎回同じデータで発生しているのか、 もしくは、どのデータで発生しているのかを確かめるのが良いのではと思いました。

参考になれば、幸いです。どうぞよろしくお願いいたします。

hiroto-oohashi commented 3 years ago

@YutaroOgawa さま ご返答いただきありがとうございます。 言葉不足の部分を補っていただきありがとうございます。 おかげ様で、アノテーションファイルの不備を発見いたしました。 現状問題は解決いたしました。

YutaroOgawa commented 3 years ago

@hiroto-oohashi さま

解決の報告をありがとうございます。 一歩前に進めたようで、嬉しい限りです!

また、お困りの際は気軽にご質問くださいませ。 いろいろ知見が溜まり、本書の幅広い読者の方に有用になると思っています。

今後ともどうぞよろしくお願いいたします。

hiroto-oohashi commented 3 years ago

@YutaroOgawa さま お世話になっております。

他エラーが出ており、再度質問させていただきたいと思います。 現在学習を、AWSとローカルPC上の2つで動かしているのですが、 ローカルPCでは問題なく20エポックほどまで学習できているのですが、 AWSでは

FileNotFoundError: [Errno 2] No such file or directory: './data/ano/Annotations/7422.xml'

と表示され、毎回同じエラーが出てしまいます。

言葉足らずで大変恐縮ではございますが、何卒ご指摘等頂けますと幸いです

hiroto-oohashi commented 3 years ago

@YutaroOgawa さま お騒がせしました。こちら自己解決しました。 utilsフォルダの中にある、ssd_model.pyのルートパスを書き換えていなかったことが原因のようでした。 大変失礼しました。

YutaroOgawa commented 3 years ago

@hiroto-oohashi さま

はい、承知しました。自己解決されたとのことで、とても良いことだと思います! 気になさらさず、引き続き、気軽にご質問くださいませ。

今後ともどうぞよろしくお願いします。