基于 TensorFlow 的模型的某些输出向量返回为零的问题

Issue where some of the output vectors of TensorFlow-based models are returned to zero

提问人:Yeonsun Ahn 提问时间:10/23/2023 最后编辑:talonmiesYeonsun Ahn 更新时间:10/23/2023 访问量:37

问:

我每 5 秒从视频中提取一帧,并将每一帧输入到 inception-v3 模型中以从 中提取嵌入。之后,使用 对所有选定的帧嵌入进行平均。pca_final_featurenp.mean

以下是用于从模型中提取特征的代码:

https://github.com/google/youtube-8m/blob/e6f6bf682d20bb21904ea9c081c15e070809d914/feature_extractor/feature_extractor.py#L102

np.mean 代码为:

emb = np.mean(a_batch_rgb, axis=0).tolist()

问题在于,嵌入的最后 1024 个维度从中间到结尾都用零填充。零开始的点每次都不同。 例如:

[-0.26928872615098953,0.12116124055215291,...,-0.03135611915162632,0.0,0.0,...,0.0]

比较上述嵌入的非零值与正常提取的嵌入值的相似度,测得大于99%。 这意味着视频帧和嵌入通常被提取并平均化。

我的环境:

  • TensorFlow2.4.0
  • CUDA 版本12.0~12.2
  • 作为BentoML1.0.22
  • numpy的1.19.4

如果您需要任何其他信息,请告诉我。

在服务于当前 bentoml 之前,它是在 cuda 11 版本节点上作为批处理执行的,并且从未发生过此问题。 在服务于当前 bentoml 之前,它是在 cuda 11 版本节点上作为批处理执行的,并且从未发生过此问题。 因此,np.mean 函数是否生成零,或者 cuda 版本和 tensorflow 版本是否冲突是值得怀疑的。 此外,在本地运行和测试Bentoml时,由于没有问题,因此很难重现。问题只发生在生产中。 如果您能告诉我出现此问题的原因,我将不胜感激。

TensorFlow 视频嵌入

评论

0赞 Dr. Snoopy 10/23/2023
不要描述代码,在问题中包含可重现的示例。
0赞 Yeonsun Ahn 10/23/2023
@Dr.史努比 我无法向你展示整个代码,所以我附上了一个链接,引用了从模型中提取特征的代码。这几乎是一样的。
1赞 Dr. Snoopy 10/23/2023
这不是可重现的代码,无论如何这可能根本不是问题,神经网络由于 ReLU 而产生零,所以没有问题。
0赞 Yeonsun Ahn 10/23/2023
@Dr.史努比 如上所述,在 cuda 11 版本的节点上执行时,嵌入是正常创建的,没有零。在具有相同输入的 cuda 12 版本节点中充当 bentoml 时会出现问题。此外,正如您在随附的示例嵌入中看到的那样,存在负值。问题在于,从特定索引到末尾列出并返回零。

答: 暂无答案