結論
どこで何を出力し、どんな役割を担っているのか一つずつ理解しながら進める。
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つのグラフを描画させるときに参考にしたサイト
- keras tensorboard: plot train and validation scalars in a same figure
- How do display different runs in TensorBoard? - StackOverflow
- TensorBoardでTrainとTest, Validationを分けて学習状況を把握する - Qiita
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))