Tol*_*sch 1 deep-learning keras tensorflow keras-2
A 为我自己的测试数据重新训练了 inception_v3 模型。(背景故事:在我尝试解决我的 130 级“问题”之前,我只是想了解整个过程是如何工作的)
现在我得到了.h5。我尝试导入它并预测一些图像。但我只收到以下错误消息。
ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D array of shape (samples, 1000)). Found array with shape: (1, 5)
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?
我的想法:我读了一些我需要 1000 个概率向量(对于 1000 个类)的东西,但我没有。我如何创建这样的向量并将所有 1000-my_num_of_classes(在我的情况下为 5)设置为 0?我想我必须预成形一个大小为 1000 的二维数组。但它不明白“样本”或在我的情况下“1”代表什么。或者我是否必须为我的 [1.0592173e-07 8.3998479e-09 9.9305904e-01 4.8276172e-05 6.8924953e-03] 数组写一些匹配(在我的情况下)。我在哪里解释 3 (id 2) 类(受过训练)的概率最高?所以也许就像一个文件,我有所有受过训练的课程,就像受过训练的一样?将最高的与对应的行(标签)相匹配?
会很棒:)
那将是我的预测代码
# Testing Inceptionv3
#from keras.applications.imagenet_utils import decode_predictions
import numpy as np
from keras.applications.inception_v3 import decode_predictions
import matplotlib.pyplot as plt
import os
from keras.models import load_model
from PIL import Image
my_model = load_model('my_model.h5')
#images = transform_img_fn([os.path.join('data','rose.jpg')])
img = Image.open('./data/rose.jpg')
img = img.resize((150,150))
img = np.array(img)
img = img / 255.0
img = img.reshape(1,150,150,3)
#base_model = inc_net.InceptionV3(weights='imagenet', include_top=False)
preds = my_model.predict(img)
for x in decode_predictions(preds)[0]:
print(x)
Run Code Online (Sandbox Code Playgroud)
小智 7
该decode_predictions实用程序将预训练的 ImageNet 模型的类预测转换为相应的人类可读的 ImageNet 类。
仅当您的模型输出 ImageNet 类(1000 维)时,使用“decode_predictions”才有意义。您的模型 ( my_model) 似乎返回了超过 5 个类别的预测。它不是 ImageNet 模型。
| 归档时间: |
|
| 查看次数: |
3775 次 |
| 最近记录: |