flow_from_directoryでフォルダから画像を随時読み込んでいくスタイルは、基本的にはコードも書きやすくて初心者にはわかりやすいのですが、ある程度慣れてくると、質問者さんのように交差検定やアンサンブル学習などもやりたくなってきて、そうすると使い勝手が悪くなってきます。
Kaggleなどでよく用いられる形式ですが、画像は1か所にまとめて、各画像のラベル付けはcsvなどの別ファイルにまとめて管理したほうがいいかと思います。
具体的には、
Training.csv
file ,tag
001.jpg, madoka
002.jpg, mami
003.jpg, homura
...
などとして、画像はimages/などの適当なフォルダにまとめておきます(テストデータに関してはcsv,imageとも分けておいたほうが良いかと思います)。あとはpandasでcsvを読み込み、sklearnのStratifiedKFoldなどでtrain_dfとvalidation_dfにsplitし、クロスバリデーションにかけていきます。
Dataframeをもとに画像を読み込んでいく場合、flow_from_directoryではなくflow_from_dataframeを使用することになります(細かい使用方法は検索すればたくさん出てきます)。
このように運用するメリットは、画像やタグ付けの管理がシンプルになるところにもあります。また、マルチラベルへの対応も容易です。今後もいろいろと手を出していこうと思うのであれば、早めにこの運用に切り替えられたほうがいいかと思います。