2

尝试预测单个图像时,我收到警告“已将不超过一个样本的批次提供给 F.batch_normalization。F.batch_normalization 将始终为此类批次输出零张量”。

我正在使用带有 Chainer 的 Resnet50 模型(二进制分类输出),在训练时,训练集和测试集的准确率均 > 98%。但是当我试图预测单个图像时,准确率只有 50% 左右。

我想我必须批量预测图像(因为批量标准化)以避免警告并获得高精度,对吧?是否可以预测单个图像?

P/s:我在预测脚本中尝试了 chainer.using_config('train', False) 但它没有帮助。

4

2 回答 2

1

你设置chainer.config.train = False正确吗?请注意,这chainer.using_config是一个上下文管理器。

with chainer.using_config('train', False):
    do_something()

(几乎)相当于:

chainer.config.train = False
try:
    do_something()
finally:
    chainer.config.train = True

另请参阅:https ://docs.chainer.org/en/stable/reference/configuration.html#changeing-configuration

于 2018-07-11T04:18:21.670 回答
0

你能上传完整的堆栈跟踪吗?我对从哪里提出错误非常感兴趣。

如果它来自“chainer/links/normalization/batch_normalization.py”,第 271~273 行,则错误可归因于chainer.config.train == True.

在其他情况下,发生了一些错误。

或者,您可以在调用L.BatchNormalization.

于 2018-07-12T02:14:55.357 回答