【Keras】超個人的な遭遇したエラーと解決法メモ

結論

どこで何を出力し、どんな役割を担っているのか一つずつ理解しながら進める。

TnsorBoardにグラフが描画されない

バッチサイズは適当か確認する。
バッチサイズが64なのに、テスト段階なので、validationのデータ数を10にしていて検証されない→グラフが表示されない、ということがあった。

その際は、generator_valid.__len__()などで長さの確認もしてみる。

また、過去に以下のようなミスをしていたことがあった。

return int(np. floor((len(self.data_keys)) / self.batch_size)) # 間違い

return int(np.ceil((len(self.data_keys)) / self.batch_size)) # こう書くべき

データ数が10の場合、「1」を返すべきだが、「0」を返してしまっていた。 これも検証されずにグラフが表示されない原因の一つだった。

以下は、trainやvalid用の2つのグラフを描画させるときに参考にしたサイト

StopIteration: list index out of range

これは、バッチサイズが64でtrainデータが400で、バッチのindex作成時に、7*64=448個のインデックスを作成してしまっており発生したエラー。 minを利用して解決。

indexes = range(index*self.batch_size, min(len(self.data_keys), (index+1)*self.batch_size))