首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于样本均值和方差( OpenCV Pix2Pix)的"training=True“DNN推理

基于样本均值和方差( OpenCV Pix2Pix)的"training=True“DNN推理
EN

Stack Overflow用户
提问于 2022-04-01 21:55:54
回答 1查看 243关注 0票数 0

按照本教程,我使用训练了一个Pix2Pix网络。Pix2Pix使用实例规范化,因此在进行推理时,我们需要实例归一化层(批处理规格为1)来计算样本均值和方差。在Tensorflow中,我将前向调用为pred = model(x,training=True)。模型是Pix2Pix的生成器部分,它是一个具有实例规范化的UNet。

代码语言:javascript
复制
model = tf.keras.models.load_model("pix2pix")
pred = model(img, training=True)

https://www.tensorflow.org/tutorials/generative/pix2pix

我们在C++中使用该模型,使用OpenCV神经网络进行推理,但是我们看到,OpenCV DNN的“前向”调用与Training=False一样,即它使用模型中的训练均值和方差,而不是获得样本的均值和方差。另外,利用OpenVINO对模型进行了优化,得到了中间表示。

代码语言:javascript
复制
print('OpenCV DNN Inference...')
print('OCV Version is',cv2.__version__)
# Load model
net = cv2.dnn.readNet("model.bin", "model.xml")
# Format input
blob = cv2.dnn.blobFromImages(img)
net.setInput(blob)

pred = net.forward()

是否有一种方法可以让OpenCV DNN转发调用像使用Training=True那样进行推理?

EN

回答 1

Stack Overflow用户

发布于 2022-04-04 03:46:28

这个问题实际上是专注于OpenCV而不是OpenVINO。为了进行更深入的解释,最好将其重定向到他们的论坛/平台,因为他们是合适的专家。

通常,training参数会通知神经网络层它应该选择哪条路径,因为该层的行为在训练和推理过程中有所不同。

参考您共享的链接,已经解释了training=True是在培训阶段的算法中有意使用的,因为您希望获得批处理统计信息,同时在测试数据集中运行模型。如果使用training=False,则可以从培训数据集(您不想要的)中获得累积的统计信息。

简而言之,您需要知道您的层在培训和推理过程中需要执行什么(取决于您的软件设计)。然后,根据训练/推理阶段将条件分配给training参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71713114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档