代码:img = Image.open("test.png").convert('L') img2 = img.resize((28, 28), Image.ANTIALIAS) img_array = np.array(img2),在软件pytorch报错Expected type 'Union[ndarray, Iterable, int, float]', got 'Image' instead,请给出替换代码
时间: 2023-06-04 11:07:05 浏览: 225
可以使用以下代码替换:
```
from PIL import Image
import numpy as np
img = Image.open("test.png").convert('L')
img2 = img.resize((28, 28), Image.ANTIALIAS)
img_array = np.array(img2).astype('float32') / 255.0
img_tensor = torch.from_numpy(img_array).view(1, 1, 28, 28)
```
这个代码片段使用了PIL库中的Image类来打开和处理图像,并使用numpy将图像转换为ndarray数组。为了在PyTorch中使用这个数组,我们将其转换为一个float32类型的张量,并改变其大小。最后,我们使用view函数将其转换为一个四维的张量,并用它来执行后面的操作。
相关问题
代码:img = Image.open("test.png").convert('L') img2 = img.resize((28, 28), Image.ANTIALIAS) img_array = np.array(img2),报错Expected type 'Union[ndarray, Iterable, int, float]', got 'Image' instead,如何解决?
您可以尝试将Image类型的图像转换为NumPy数组类型,可以使用np.asarray()函数进行转换,代码如下:
img = Image.open("test.png").convert('L')
img2 = img.resize((28, 28), Image.ANTIALIAS)
img_array = np.asarray(img2)
这样就可以将Image类型的图像转换为NumPy数组类型,避免了报错。
我想用保存在params.pkl里的模型参数预测一个像素为28*28的img格式图片是什么字母,你能给我段代码吗?
可以使用以下代码对像素为 28x28 的 img 格式图片进行预测:
```
import pickle
import numpy as np
from PIL import Image
from two_layer_network import TwoLayerNet
# 读取模型参数
with open("params.pkl", "rb") as f:
params = pickle.load(f)
# 加载图片并转换成 784 维向量
img = Image.open("test.png").convert('L')
img = np.array(img.resize((28, 28)))
x = img.reshape(1, -1).astype(np.float32) / 255.0
# 使用训练好的模型参数进行预测
network = TwoLayerNet(input_size=784, hidden_size=70, output_size=26, params=params)
y = network.predict(x)
# 输出预测结果
print(chr(ord('a') + np.argmax(y)))
```
其中,test.png 是待预测的图片,需要放在当前目录下。这段代码会输出该图片预测出来的字母。注意,预测结果是一个概率向量,需要使用 np.argmax 函数找到概率最高的那个字母。
阅读全文