我尝试使用FER 2013数据集将convert CNN Keras model用于情感识别到PyTorch模型,但出现以下错误:
Traceback (most recent call last):
File "VGG.py", line 112, in <module>
transfer.keras_to_pytorch(keras_network, pytorch_network)
File "/home/eorg/NeuralNetworks/user/Project/model/nntransfer.py", line 121, in keras_to_pytorch
pytorch_model.load_state_dict(state_dict)
File "/home/eorg/.local/lib/python2.7/site-packages/torch/nn/modules/module.py", line 334, in load_state_dict
own_state[name].copy_(param)
RuntimeError: inconsistent tensor size at /b/wheel/pytorch-src/torch/lib/TH/generic/THTensorCopy.c:51
我明白这个错误与图像的形状有关,在Keras中输入大小被定义为48乘48。
**我的问题是如何在PyTorch模型中定义我的图片是48 x48的形状?**我在文档和示例中找不到这样的函数。
任何帮助都会有用!
3条答案
按热度按时间ycl3bljg1#
为了自动调整输入图像的大小,您需要定义一个所有图像都要经过的预处理管道。这可以通过
torchvision.transforms.Compose()
(合成文档)来完成。要调整图像的大小,您可以使用torchvision软件包中的torchvision.transforms.Scale()
(缩放文档)。请参阅文档:* 请注意,在文档中,
.Scale()
已被弃用,应改用.Resize()
。* 调整文档大小这是一个最简单的工作示例:
hjzp0vay2#
如果你尝试过的代码也是并排给出的,这会有帮助。@blckbird给出的答案似乎是正确的(即,在某个时候你需要转换数据)。
现在需要使用“调整大小”而不是“缩放”。
因此,假设数据的批处理大小为64,有3个通道,大小为128 x128,您需要将其转换为64 x3 x48 x48,则以下代码应该可以完成此操作
如果通道和批处理需要被打乱,也可以使用置换。例如,要将通道移到最后,请执行以下操作:
23c0lvtd3#
1)
如果你使用transform,你可以简单地使用resize。例如,这段代码将把MNIST数据加载转换成一个32*32的形状(在resize行中)
2)
如果你只想要一个函数,你可以使用
torchvision.transforms.functional.resize(image, size, ...)
。其他的答案似乎不赞成。在Resize Docs中写入
将输入图像的大小调整为给定大小。
参数:
*img(PIL图像或Tensor)-要调整大小的图像。
*size所需的输出大小。如果size是类似(h,w)的序列,则输出大小将与此匹配。如果size是int,则图像的较小边缘将与此数字匹配,并保持纵横比
返回类型: