使用FVD时遇到的问题记录:使用tensorflow时batch_size不变的情况下使用数据量更大的dataset发生了显存溢出(OOM)问题 的解决

情况:计算 FVD 时,使用 dataset-1 时运行成功,使用数据量(data size)更大的 dataset-2 时运行失败。报错OOM:显存溢出。

查找问题:比较两次计算时的 input video 的 data shape,发现成功的那个是:[2, 64, 224, 224, 3],失败的那个是:[2, 180, 224, 224, 3]。

注:shape各dim的含义是:[batch_size, num_frames, height, weight, depth]

发现不对劲:input 的 num_frame 的大小应该相同,都是 16。此处的 64 和 180 是 input vid 在 resize 前的 weight 大小。

找到原因:resize 时的 vid shape 没有调整好。要求 热size 的 input shape 是 [bs, t, h, w, c],而我的是 [bs, c, t, h, w]。例如,错误输入:[2, 3, 16, 144, 180] 的 resize 结果为 [2, 180, 224, 224, 3],而不是期待的 [2, 16, 224, 224, 3]。

解决方案:将 resize 前的 vid shape 用 tensor.permuter() 调好后,问题解决。

小结:所以,bs大小可能会造成显存溢出(OOM),而使用的数据量(data size)大小不会。起码此处不会。

你可能感兴趣的:(tensorflow,batch,人工智能,计算机视觉)