我希望能够预测来自学习者的单个图像的类别,但我总是得到索引超出界限异常。下面是代码
data = ImageDataLoader.from_folder(path, train="Train", valid ="Valid",
ds_tfms=get_transforms(), size=(256,256), bs=32, num_workers=4)
//Model is a Sequential One
learn = Learner(data, model, loss_func = nn.CrossEntropyLoss(), metrics=accuracy)// The Model
learn.fit_one_cycle(100, lr_max=3e-3)
Img = //PIL Image Path
learn.predict(img)
该模型能够预测ImageDataLoader,但不能预测单个图像。如果有人有任何线索,将不胜感激这是FastAi的链接,但没有解决这个问题https://forums.fast.ai/t/how-to-use-learner-predict-list-index-out-of-range/81998/7
编辑注意:我已经尝试将图像转换为张量流,但给出了另一个错误。错误的照片
我认为问题是data
是4阶张量而Img
是3阶张量。换句话说,它遗漏了#points或批处理维度。在TF中,可以使用tf.expand_dims
来修复,如
img = tf.expand_dims(img, axis=0)
或者在传递给模型
时修复它learn.predict(tf.expand_dims(img, axis=0))
您还可以查看tf.newaxis
(参见这里的第二个代码示例)。