

同様の質問が多々あることは認識しておりますが、動いていたはずのコードが  
動作しなくなりましたので、原因がわからずに投稿させていただいております。

SSDの学習プログラムの中で、 以下のエラーが出ており

[code]

     File "train.py", line 201, in generate
        img, y = self.horizontal_flip(img, y)
      File "train.py", line 117, in horizontal_flip
        y[:, [0, 2]] = 1 - y[:, [2, 0]]
    IndexError: too many indices for array
    
[/code]

プログラム記述としては以下になっています。

[code]

    200                     if self.hflip_prob > 0:
    201                         img, y = self.horizontal_flip(img, y)    
    
[/code]

* * *
[code]

    114     def horizontal_flip(self, img, y):
    115         if np.random.random() < self.hflip_prob:
    116             img = img[:, ::-1]
    117             y[:, [0, 2]] = 1 - y[:, [2, 0]]                                                                       
    118         return img, y
    
[/code]

本プログラム少し前まで一度は動作していたのですが、  
・学習用データを更新した  
・何らかのミスタッチでtrain.pyを書き換えた  
・Pythonのバージョン（変更した認識はありませんが）  
などなど、原因特定できず困っております。  
情報足りないかもしれませんが、よろしくお願いいたします。


CC BY-SA 4.0
2018-08-23T02:44:44.460
47745
2022-03-08T14:43:27.647
2018-08-23T04:28:11.250
3054
29824
question
python numpy
IndexError: too many indices for arrayについて


`y[:, [0, 2]] = 1 - y[:, [2, 0]]`においてエラーが発生していますが、エラーコード`IndexError: too many
indices for
array`は、スライスのインデックスの次元が配列の次元よりも大きいということで、要するに変数`y`は2次元以上の`ndarray`である必要があるのですが、実際には1次元以下であるということです。

問題は、質問に提示されるコードより前に発生していると思われ、「情報足りないかもしれません」と書いてあるとおりです。


CC BY-SA 4.0
2018-08-23T04:30:34.160
47750
2018-08-23T04:35:48.403
2018-08-23T04:35:48.403
15171
15171
47745
answer