当尝试预测单个图像时,我收到警告:“给F.batch_normalization的批次不超过一个样本。F.batch_normalization始终为此类批次输出零张量。”
我在Chainer上使用Resnet50模型(二进制分类输出),训练时,训练和测试集的准确性均> 98%。但是当我尝试预测单个图像时,准确率只有大约50%。
我想我必须批量预测图像(因为“批量归一化”)以避免警告并获得高精度,对吗?可以预测单个图像吗?
P / s:我在预测脚本中尝试了chainer.using_config('train',False),但没有帮助。
答案 0 :(得分: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#changing-configuration
答案 1 :(得分:0)
您能否上传完整的堆栈跟踪信息? 我对引发错误的位置非常感兴趣。
如果来自“ chainer / links / normalization / batch_normalization.py”行271〜273,则错误可归因于chainer.config.train == True
。
在其他情况下,发生了一些问题。
或者,您可以尝试
打印(“ chainer.config.train”)
在您致电L.BatchNormalization
之前。